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.