String auslesen



  • moin.
    ich habe in einem memo feld zwei zahlen stehen die ich durch ein '#' zeichen getrennt habe. nun möchte ich die erste zahl bis zum '#' auslesen.
    scheint aber wohl garnet so einfach zu sein 🙂

    String temp=FormMain->Memo1->Lines->Strings[1];
    	String stringID;
    	int i=1;
    	while (temp[i]!='#')
    	{
    		stringID[i]=temp[i];
    		i++;
    	}
    

    das ist mein code.
    ich lese die zeile aus dem memofeld aus.
    und lese jedes zeichen einzeln bis zum '#' zeichen aus.
    blos ich bekomme immer die meldung:

    Im Projekt ****.exe ist eine Exeption der Klasse ERangeError
    mit der Meldung " aufgetreten.

    irgendwelche ideen?



  • Müsstest du nicht den String nicht nach '#' durchsuchen und dann auf temp[i] alles was vor dem Raute kommt schreiben, also den Substring?

    Anschließend löschst du dann eben den Bereich einschließlich der Raute & führst die ganze Prozedur erneut aus.

    Also wäre mein Gedanke, entschuldige falls ich mich irre.



  • könnte sein das das möglich wäre.
    aber im grunde muss es doch so auch funktionieren oder nicht?



  • Dein String hat ja gar keinen Speicher allokiert. Mach statt:
    stringID[i]=temp[i];

    stringID.push_back(temp[i]);



  • hmm pushback geht aber nur mit einen AnsiString. den benutze ich aber leider nicht 🙂



  • ok thx. habs jetzt mit nem AnsiString realisiert.
    vielen dank mal wieder für die schnelle hilfe 🙂



  • push_back ist eine Methode der C++ Standardklasse string. Also benutze:

    #include <string>
    string stringID;

    Oder stell halt fest, wie Deine String - Klasse Speicher zur Verfügung stellen kann, bzw. mit welchen Methoden Du hinten was anhängen kannst.


Anmelden zum Antworten