Einen String zerlegen?
-
Hallo
Wir haben doch bereits gesagt, das du auf char * verzichten kannst.
Hier mal ein Beispiel für die ersten vier BuchstabenAnsiString aktuellerkey; aktuellerkey = regKey->ReadString("UID"); AnsiString Part = aktuellerkey.SubString(1, 4); // ersten 4 Zeichen kopieren aktuellerkey.Delete(1, 5); // ersten 5 Zeichen (inklusive des Bindestriches) löschenbis bald
akari
-
Danke fuer die schnelle Antwort...
Hab mir des angeschaut und versucht die funktionen einzubinden mit SubStr(), aber dann sagt er dass ansistring nicht in char* int AnsiString gewandelt wird... Ich versteh des net ganz die hilfe im builder dazu ist auch bissi knapp...
Könnte es doch eigentlich so in einen char schreiben?
Hab es so auch aus der faq hier gezogen, doch dann stuerzt mein Programm ab, weisst du warum dass nicht geht?
char einbuchstabe = aktuellerkey[2];
-
Ach genau, wenn er abstuerzt, öffnet er die Seite dstring.h und
makiert diese Zeile:ThrowIfOutOfRange(idx); // Should Range-checking be optional
...
-
s0h0 schrieb:
ansistring nicht in char* (...) Könnte es doch eigentlich so in einen char schreiben?
Wo kommen denn die Chars schon wieder her?
char einbuchstabe = aktuellerkey[2];
Warum das denn? Was soll das werden? Jedenfalls kannst du nicht auf Zeichen 2 Zugreifen, wenn dein String (?) z.B. leer ist.
-
Hallo
char einbuchstabe = aktuellerkey[2];sollte funktionieren, solange in aktuellerkey 3 oder mehr Zeichen stehen.
Las dir vorher mal den Wert anzeigen (Debuggen, siehe FAQ)bis bald
akari
-
2 oder mehr Zeichen.
Bei AnsiString beginnt die Zählung bei 1 und nicht bei 0.
-
PuppetMaster2k schrieb:
Sieh dir in der Hilfe mal die Klasse AnsiString an, besonders die Methoden Pos() und SubString(). Dann kannst du auch auf den Umweg über char-Arrays lassen.

Mehr gibt es dazu nicht zu sagen.
-
Hallo Joe,
Das haben akari und ich ihm auch schon ein paar mal gesagt (im hierher verschobenen Thread).
-
ok. danke...
ich habs ja auch schon durchgelesen aber habs halt (noch) nicht hinbekommen... weil er wie gesagt den datentyp nicht aktzeptiert den ich dazu ubergebe bzw. ich es anscheinend noch nicht ganz verstehe.
vielleicht noch ein tip, wonach ich suchen soll,
wenn ich will, dass der cursor ins 2te edit fenster springt wenn ich die maximal zeichen in edit1 eingegeben hab?
-
überleg doch, welche Events du abfangen musst und was du überprüfen würdest, wenn du selber entscheiden müsstest, ob der cursor weiter springen soll.
ich empfehle dir auch mal da reinzuschauen: http://bcb-tutorial.c-plusplus.net/inhalt.html
-
Habs jetzt so gemacht...

auf jeden fall funzt eschar *bVar = aktuellerkey.c_str(); // string in array umwandeln //int stringlaenge = aktuellerkey.Length(); AnsiString key1 = bVar[0]; AnsiString key2 = bVar[1]; AnsiString key3 = bVar[2]; AnsiString key4 = bVar[3]; AnsiString key5 = bVar[4]; AnsiString key6 = bVar[5]; AnsiString key7 = bVar[6]; AnsiString key8 = bVar[7]; AnsiString key9 = bVar[8]; AnsiString key10 = bVar[9]; AnsiString key11 = bVar[10]; AnsiString key12 = bVar[11]; AnsiString key13 = bVar[12]; AnsiString key14 = bVar[13]; AnsiString key15 = bVar[14]; AnsiString key16 = bVar[15]; AnsiString key17 = bVar[16]; AnsiString key18 = bVar[17]; AnsiString key19 = bVar[18]; AnsiString keyA = key1 + key2 + key3 + key4; AnsiString keyB = key6 + key7 + key8 + key9; AnsiString keyC = key11 + key12 + key13 + key14; AnsiString keyD = key16 + key17 + key18 + key19; Edit1->Text = keyA; Edit2->Text = keyB; Edit3->Text = keyC; Edit4->Text = keyD;
-
Viel umständlicher ging es wohl nicht mehr. Was gefällt dir an akaris Lösung mit SubString nicht.
AnsiString keyA = aktuellerkey.SubString(1,4); AnsiString keyB = aktuellerkey.SubString(6,4); AnsiString keyC = aktuellerkey.SubString(11,4); AnsiString keyD = aktuellerkey.SubString(16,4);Diese Hilfsstrings kann man auch noch weglassen und direkt auf edit->Text schreiben.
-
AHHHH! Jetzt check ich es! und es funktioniert auch genauso!
is ja wirklich viel viel einfacher...man man man, naja uebung macht den meister...
DANKE!!!