problem bei der konvertierung von pascal nach c++



  • folgendes problem hab ich beim umsetzen von code
    in pascal ist folgendes möglich

    procedure test(const data :array of string)
    var
    i : integer;
    begin
    for i:=LOW(data) to HIGH(data) do
    begin
    machwasmit(data[i]);
    end;
    end;

    jetzt das wichtige ...es ist ein aufruf möglich wie
    test(['str1','str2','str3','str4','str5']);

    das gleich brauch ich in cpp
    mit QString von Qt ...aber das ist nur ein Bsp:
    void test(QString data[]){
    for(int i=0;i<sizeof(data);i++){
    machwasmit(data[i]);
    }
    }

    wichtig ist ein aufruf dann in etwa wie
    test(("str1","str2","str3"));

    warum geht das nicht ...den aufruf kann der compiler schonmal leiden ...aber dann versinkt er gnadenlos 😢
    Wer kann mir helfen ...wie geht das

    Wenn ich das array vorher zusammenbaue ...ist das kein thema ...
    ich brauch aber obige form des aufrufs ...oder so ähnlich ...



  • Ich versteh' dich nicht ganz:

    Schreibst du deine machwasmit selbst?
    Soll es möglich sein, beliebig viele strings als Parameter anzugeben?
    Oder willst du einen zusammengestückelten String übergeben?

    Greetz, Swordfish



  • die "machwasmit()" schreib ich selbst ...
    es geht im prinzip darum ein offenes array von strings beim aufruf der funktion
    in den funktionkopf zu schreiben ...also keine variable erst zu erzeugen

    void test(QString arg[]){
       // hier will ich x strings in dem array bearbeiten
    }
    

    und wichtig ist die form des aufrufs ...

    test( ("string 1","string 2"," eventuell auch mehr strings") );
    


  • mit dem aufruf wird das so nichts.
    du könntest aber nen std::vectorstd::string oder ähnliches übergeben.
    vielleicht sind auch noch die funktionen std::generate() oder std::for_each() hilfreich
    mfg.



  • Cpt. Tanga schrieb:

    mit dem aufruf wird das so nichts.
    du könntest aber nen std::vectorstd::string oder ähnliches übergeben.
    vielleicht sind auch noch die funktionen std::generate() oder std::for_each() hilfreich
    mfg.

    kann mir da jemand mit einem mini bsp auf die sprünge helfen?



  • Hallo,

    Der Begriff Konvertierung bezeichnet in der Informatik die Überführung einer Datei von einem Dateiformat in ein anderes.

    Das heißt man konvertiert nicht von Pascal nach C[++]. Man schreibt um oder übersetzt.

    Übersetzen != Konvertieren

    MFG winexec*



  • winexec* schrieb:

    Hallo,

    Der Begriff Konvertierung bezeichnet in der Informatik die Überführung einer Datei von einem Dateiformat in ein anderes.

    Das heißt man konvertiert nicht von Pascal nach C[++]. Man schreibt um oder übersetzt.

    Übersetzen != Konvertieren

    MFG winexec*

    Na Du bist ja toll 😉 danke für die sehr intelligente Antwort auf oben gestellte frage;-)
    In diesem Zusammenhang steht ganz oben in meiner Frage:

    folgendes problem hab ich beim umsetzen von code
    in pascal ist folgendes möglich

    Ein konstruktiver Beitrag wäre mir persönlich lieber gewesen ...oder habe ich hier eine Frage welche "kein" Programmierer sauber beantworten kann? 😉



  • #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    void mach_was(vector<string> str)
    {
        for(unsigned int i = 0; i < str.size(); ++i)
        {
            cout << str.at(i) << endl;
        }
    }
    
    int main(int argc, char **argv)
    {
    
        vector<string> s;
        s.push_back("hello");
        s.push_back("world");
        s.push_back("!");
    
        mach_was(s);
    
        return 0;
    }
    


  • xxxblubxxx schrieb:

    #include <iostream>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    void mach_was(vector<string> str)
    {
        for(unsigned int i = 0; i < str.size(); ++i)
        {
            cout << str.at(i) << endl;
        }
    }
    
    int main(int argc, char **argv)
    {
    
        vector<string> s;
        s.push_back("hello");
        s.push_back("world");
        s.push_back("!");
        
        mach_was(s);
        
        return 0;
    }
    

    vielen dank ...allerdings ist diese lösung nicht die gesuchte. siehe oben 😢

    ich suche einen funktionsaufruf der in etwa so ausschaut

    mach_was(("hello","world","!"))
    


  • Hallo,

    Ich glaube niemand versteht so richtig was du meinst: http://www.lugbz.org/documents/smart-questions_de.html

    Meinst du vielleicht so erwas?

    void mach_was(string a, string b, string c){
        string h[3] = { a,b,c };
        for(unsigned int i = 0; i <  3; ++i){
            cout << h[i] << endl;
        }
    }
    
    int main(int argc, char **argv){
    
        mach_was("hallo","welt","!");
        return 0;
    }
    

    MFG winexec*



  • Ich denke er will wissen wie man eine Funktion erstellt, die eine variable Anzahl an Parametern haben kann.
    So ähnlich wie bei printf. Da können ja auch eine unterschiedliche Anzahl an Parametern angegeben werden.



  • Nachdem er uns immer noch nicht gesagt hat, was er will...

    #include <string>
    #include <vector>
    #include <iostream>
    #include <cstdarg>
    
    using namespace std;
    
    void foo( int parmN, ... );
    
    int main( )
    {
        foo( 1, "one" );
        foo( 3, "one", "two", "three" );
        foo( 5, "one", "two", "three", "four", "five" );
    }
    
    void foo( int parmN, ... )
    {
        va_list ap;
    
        va_start( ap, parmN );
    
        vector< string > array;
    
        for( int i = 0; i < parmN; ++i ) {
    
            array.push_back( va_arg( ap, char* ) );
        }
    
        va_end( ap );
    
        for( int i = 0; i < array.size( ); ++i ) {
    
            cout << array[ i ] << endl;
        }
    
        cout << endl;
    }
    

    Greetz, Swordfish


Anmelden zum Antworten