Falsches Ergebnis bei Stringmanipulation (TStringList)



  • Hallo,

    sollte als Ergebnis nicht :
    ssssss
    ssssss
    ssssss
    ssssss

    raus kommen ?
    es kommt aber folgendes raus:
    abcdef
    ghijkl
    mnopqr
    stuvvw

    Warum ?

    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. 🙂


Anmelden zum Antworten