Blöcke von Zeichen aus einer Zeile austauschen



  • Hallo,

    bin absoluter newbi und stehe vor einem problem.

    Ich möchte eine txt einlesen, einzelne Zeilen unterscheiden um dann die "Blöcke" auszutauschen/zu verschieben.

    Beispiel:

    Inhalt txt
    (
    4654376 362111 22 323334
    7867877 121497 57 216783
    )
    Die ausgegebene txt soll aber vielleicht so aussehen:

    323334 22 362111 4654376
    216783 57 121497 7867877

    Ich möchte bestimmen ab welchem Zeichen soundsoviele Zeichen wohin getauscht werden sollen.

    Mein code bisher(dank eures Forums):

    TStringList *TempList = new TStringList;
           try{
                TempList->LoadFromFile("C:\\text.txt");
               Edit1->Text = TempList->Strings[0]; //Zeile1 ausgeben (Test) 
               Edit2->Text = TempList->Strings[1]; //Zeile2 ausgeben (Test)
           }
           __finally{
        delete TempList;
    

    Bitte gebt mir nicht den ganzen Code, führt mich nur an die Lösung ran. Ich will lernen...

    Danke,
    Nico



  • Würde dir empfehlen:
    1. die Strings mit StrPos() nach den Leerzeichen zu durchkämmen
    2. mit diesen Infos die Blöcke gennerieren SubString()
    3. die Blöcke in der richtige Reihenfolge hinschreiben



  • mh,
    kann mir schon vorstellen wie du das meinst aber komme noch nicht wirklich mit der Syntax klar...



  • fals es dir reicht nur bei leerzeichen (oder auch kommas) zutrennen koennte dir die eigenschaft commatext etwas helfen ...

    TStringList *TempList = new TStringList(), *KommaZeile = new TStringList();
           try{
               TempList->LoadFromFile("C:\\text.txt");
               KommaZiele->CommaText = TempList->Strings[0]; 
               ShowMessage(KommaZeile->Text); // zum test
               // jetzt kannst du die einzelnen "spalten" miteinander vertauschen
               String tmp = KommaZeile->Strings[0];
               KommaZeile->Strings[0] = KommaZeile->Strings[1]
               KommaZeile->Strings[1] = tmp;
               // und nun nur noch die geaenderte zeile wieder in den text einfuegen
               TempList->Strings[0] = KommaZiele->CommaText;
           }
           __finally{
        delete(TempList);
        delete(KommaZeile);
    }
    

Anmelden zum Antworten