Bestimmten Text in Datei finden und Text anhängen o. auslesen?



  • Abend,

    wie könnte man am einfachsten, einen Text in einer Textdatei finden und das dahinter stehende Wort oder bestimmte Anzahl an Zeilen auslesen und ersetzen?

    hoffe es gibt ein einfachen weg 😕

    THX



  • Also ich benutze für sowas, falls es eine Text-Datei ist, TStringList. Aber so richtig klar ist mir nicht, was Du meinst. "das dahinter stehende Wort "



  • na er meint wohl wie paramater

    mache dies und das und vielleicht noch das

    substring, find, indexof, solche sachen der string klasse, Stringlist is recht unkompliziert, sollte sich geil dafür eignen.



  • Moin,

    ehm nunja ich habe zb eine text datei gespeichert die so aussieht...

    Name:Müller
    Vorname:Dieter
    Strasse:Ring-Str
    Hausnummer:30
    Tel:01010

    Name:Schmidt
    Vorname:Martin
    Strasse:Kreuz-Str
    Hausnummer:1
    Tel:1111
    .
    .
    .

    jetzt dachte ich mir wenn ich im Program, ein Edit Feld namens Name mache und da "Schmidt" eigebe, dann ein Button drücke.

    Soll er in die Adressdatei.txt kucken, wo der Name Schmidt ist und mir die restlichen Zeilen wie Vorname ins Editfeld Vorname schreibt usw.

    wie müsste so was den aussehen? wäre dankbar für beispielcode

    beim RichEdit1->FindTextA gibt er mir schon mal den anfangs index wo das wort beginnt zurück, aber wie weiter?



  • Hallo,

    dann wäre TIniFIle wohl eher angebracht...

    [Section]
    Key=Value

    [Daten_1]
    Name=Schmidt
    Vorname=Martin
    ...

    mfg, Micha!



  • die text Datei erzeuge ich nicht, die txt kommt aus einem anderen Programm das ich nicht beeinflussen kann



  • schau mal hier, da steht z.B. wie man bestimmte Zeichen findet und ersetzt



  • jep damit bin ich der sache schon ein schritt näher 😃

    dies klapt so weit...

    int col, row;
    
    for(row = 0; row < Form1->RichEdit2->Lines->Count; row++)
        if ((col=Form1->RichEdit2->Lines->Strings[row].Pos(Edit2->Text)) > 0)
        {
            Edit1->Text = Form1->RichEdit2->Lines->Strings[row + 1];
    
        }
    

    das problem ist jetzt, daß ich im Edit1 "Vorname:Dieter" stehen habe
    frage dazu ist wie könnte ich in den Lines->String...., zb. sagen daß er ab den : den text im editfeld ausgibt?



  • AnsiString::SubString(), AnsiString::Pos(), usw. usf.



  • so geht das also 👍

    int row;
    
    for(row = 0; row < Form1->RichEdit2->Lines->Count; row++)
        if (Form1->RichEdit2->Lines->Strings[row].Pos(Edit2->Text))
        {
         Edit1->Text = Form1->RichEdit2->Lines->Strings[row+1].SubString(24,10);
        }
    

    danke für die nette hilfe, ihr seit die besten 😉


Anmelden zum Antworten