Falsches Ergebnis bei Stringmanipulation (TStringList)
-
Hallo,
sollte als Ergebnis nicht :
ssssss
ssssss
ssssss
ssssssraus kommen ?
es kommt aber folgendes raus:
abcdef
ghijkl
mnopqr
stuvvwWarum ?
TStringList *rest = new TStringList; rest->Add("abcdef"); rest->Add("ghijkl"); rest->Add("mnopqr"); rest->Add("stuvvw"); for (int j=0;j<rest->Count;j++) { for (int i=1;i<rest->Strings[j].Length()+1;i++) { rest->Strings[j][i] = 's'; } } Memo1->Lines->Clear(); Memo1->Lines->AddStrings(rest);
MfG Thomas34
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Thomas34 schrieb:
es kommt aber folgendes raus
Weil die Bedingung der For schleife schon erfüllt ist. 0 < rest->count
Edit:
Zitate bitte auf das Notwendigste beschränken. Danke!
-
Hallo,
nö wieso sollte sie ? Ich glaub du hast dich verlesen ????
MfG Thomas34
-
Hi,
übrigens das hier Funktioniert einwandfrei, muss wohl an der StrinList liegen hat man hier keine Erlaubnis zu schreiben ?
String TEST = "ABCDEF"; for (int i=1;i<TEST.Length()+1;i++) { TEST[i] = 's'; } Label1->Caption = TEST;
MfG Thomas34
-
Naja, ich hab ja nich viel Ahnung, aber das steht so nie und nimmer im Quellcode vom Thomas und so wie ich das sehe gehts da drum auch gar net, sondern, warum man StringsLists nicht als zweidimensionales Array ansprechen kann.<br><br>Sorry, aber dazu hab ich leider auch nix parat!
-
@Thomas34: Kann ich nicht nachvollziehen, bei mir funktioniert das wunderbar...
-
Ja, du musst ggf. den Umweg über einen temporären String gehen.
for (int j = 0; j < rest->Count; j++) { String tmp = rest->Strings[j]; for (int i = 1; i <= tmp.Length(); i++) tmp[i] = 's'; rest->Strings[j] = tmp; }
Die Begründung hatte ich mir mal aufgeschrieben, finde ich aber grad nicht mehr.