SubString will nicht



  • lblFrage->Caption=empfang.SubString(1,empfang.Pos("|")-1);
    
    //GIBT AUS: Wie ist nochmal die Frage?
    
     lblAA->Caption=empfang.SubString(empfang.Pos("|")+1,empfang.Pos("/"));
    
    //GIBT AUS: Kaese/Kuchen-mit+Sahne
    
     lblBB->Caption=empfang.SubString(empfang.Pos("/")+1,empfang.Pos("-"));
    
    //GIBT AUS: Kuchen-mit+Sahne
    
     lblCC->Caption=empfang.SubString(empfang.Pos("-")+1,empfang.Pos("+"));
    
    //GIBT AUS: mit+Sahne
    
     lblDD->Caption=empfang.SubString(empfang.Pos("+")+1,empfang.Length());
    
    //GIBT AUS: Sahne
    

    in empfang steht : Wie ist nochmal die Frage?|Kaese$Kuchen-mit+Sahne

    lblAA sollte "Kaese" sein
    lblBB sollte "Kuchen" sein
    lblCC sollte "mit" sein
    lblDD sollte "Sahne" sein

    Wieso geht das nicht ? Hab auch schon versucht den 2ten Parameter per Int Variable zu übergeben geht aber auch nicht. Wird irgendwie absolut nicht beachtet.



  • Was heißt "geht nicht"? Und welchen Typ hat empfang?



  • empfang ist AnsiString.

    Und was nicht geht siehste doch hab doch dazu geschreiben was ausgegeben wird und was er ausgeben soll.



  • X3r0X schrieb:

    lblAA->Caption=empfang.SubString(empfang.Pos("|")+1,empfang.Pos("/"));
    

    [...]
    in empfang steht : Wie ist nochmal die Frage?|Kaese$Kuchen-mit+Sahne
    [...]

    Warum suchst du nach einem Slash, wenn in dem ganzen String kein Slash vorkommt?



  • Das war der alte Code...da hatte ich das Zeichen mal ersetzt weil ich dachte dran liegts.

    lblFrage->Caption=empfang.SubString(1,empfang.Pos("|")-1);
     lblAA->Caption=empfang.SubString(empfang.Pos("|")+1,empfang.Pos("$"));
     lblBB->Caption=empfang.SubString(empfang.Pos("$")+1,empfang.Pos("-"));
     lblCC->Caption=empfang.SubString(empfang.Pos("-")+1,empfang.Pos("+"));
     lblDD->Caption=empfang.SubString(empfang.Pos("+")+1,empfang.Length());
    


  • X3r0X schrieb:

    Das war der alte Code...da hatte ich das Zeichen mal ersetzt weil ich dachte dran liegts.

    Jetzt machts schon mehr Sinn. Ich würd mal tippen, dass der 2. Parameter nicht die Endposition, sondern die Länge des zu extrahierenden Strings darstellt. D.h. das müsste so aussehen:

    blAA->Caption=empfang.SubString(
       empfang.Pos("|")+1,empfang.Pos("$")-(empfang.Pos("|")+1));
    

    Hab im Moment nicht die Dokumentation vom C++-Builder zur Hand. Kann dir das später definitiv sagen.



  • Wunderbar funktioniert danke 🙂


Anmelden zum Antworten