Teil eines String auslesen und in einer ComboBox anzeigen



  • Hallo,

    wollte folgendes machen, ich habe eine Datei .txt aus der ich immer den ersten Teil (a,b,c,d) vor ein Semikolon auslesen möchte und das für jede Zeile. Diese ausgelesenen Teile möchte ich dann in einer ComboBox->Items speichern.

    Die Datei sieht so aus:

    a;1233;1111;1222
    b;423;3434;5656
    c;123345;2332;988;
    d;2120;0494

    In der ComboBox->Items soll dann in der ersten Zeile das a, in der zweiten Zeile das b, in der dritten Zeile das c,..... stehen.

    TStringList *Daten=new TStringList();
    Daten->LoadFromFile("Daten.txt");

    ....

    ComboBox1->Items=Daten_abcd;
    Form1->ComboBox2->Items=Daten_abcd;
    Form1->ComboBox6->Items=Daten_abcd;

    Bekomme es einfach nicht hin. Hat Jemand eine gute Idee?

    Gruß

    Carsten



  • verwende die Methoden von AnsiString: SubString und Pos, außerdem eine For-Schleife durch die StringList. Mit Pos nach dem Semikolon suchen und mit SubString den entsprechenden Teilstring raussuchen. Falls allerdings immer nur ein Zeichen vor dem ersten Semikolon steht kannst du auch nur SubString verwenden:

    String Datenabc = Daten->Strings[i].SubString(1,1);
    


  • Hier die Lösung:

    //----------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     TStringList *liste=new TStringList();
    
     liste->LoadFromFile("Daten.txt");
     Memo1->Lines=liste;
     int Anzahl=liste->Count; //Zeilen zählen
    
      for (int i = 0; i < Anzahl; i++)
      {
       String Zeile=liste->Strings[i];  //String an bestimmter Zeile i lesen
    
      int Pos1 = Zeile.Pos("");        //Zeilenanfang
      int Pos2 = Zeile.Pos(";");       //Zeilenende beim ;
      String Teil= Zeile.SubString(Pos1,Pos2-1); //Zeilenanfang - Zeilenende
      ComboBox1->Items->Add(Teil);     //zur ComboBox hinzufügen
      }
    
     }
    //----------------------------------------------------------------------------
    

    Danke für den Tip


Log in to reply