Textdatei ein TeilString Suchen und bis zum nächsten TeilString lesen ( gelöst )



  • Textdatei sieht wie folgt aus:

    0        0        0        0    
    &F   5=00000000000000000000000000000000 
    390R___1%__0805
    

    Nun klat ich schaffe es die DAtei in ein Memo zu speichern, sicherlich wäre es praktische nur in eine art Buffer Zwischen zu speichern.

    Und dann würde ich gerne sozusagen in der DAtei nach dem ersten "&F" suchen lassen dann also alles auslesen bis das Zeichen "=" erscheint. Also wäre in diesem fall das was er ausliest eine einfache 5. und diese dann halt in eine Variable speichern.

    Hoffe die Erklärung ist soweit ok.

    Danke
    mfg Killer



  • du kannst statt des Memo auch eine TStringList verwenden, und mit Pos, SubString und Delete mit Hilfe eine Schleife alle gewünschten Informationen bekommen

    die Suchfunktion liefert hierzu sicherlich eine ganze Reihe von Informationen, genau wie die BCB-Hilfe



  • hallo danke erstmal. mit der suchfunktion hatte ich es schon versucht aber leider nix gefunden. habe jetzt mit den neuen begriffen suchfunktion und Hilfe benutzt aber kamm nur das ergebnis

    Die Methode SubString gibt den angegebenen Teilstring in einem AnsiString-Objekt zurück.
    
    AnsiString __fastcall SubString(int index, int count) const;
    
    Beschreibung
    
    Es wird ein neues AnsiString-Objekt zurückgegeben, das einen Teilstring des AnsiString-Objekts enthält. Der Teilstring enthält die in count angegebene Anzahl von Zeichen und beginnt an der mit index festgelegten Position.
    

    und
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-212554-and-highlight-is-substring.html

    bei raus, was für mein verständnis aber leider sogut wie nichts bringt.

    könnt ihr evt ein kleines einfaches Beispiel geben. Im forum sind immer nur die informationen schau ansistring pos und substing methoden an. aber die hilfe hat keine beispiele ode rerklärungne die ich verstehe.

    danke
    mfg
    Killer



  • was genau ist denn an dem von dir geposteten Link nicht zu verstehen? im Prinzip ist es doch genau das was du willst

    du suchst mit Pos nach dem gewünschten Zeichen und nimmst dann SubString um das Teilstück zu extrahieren (ungetestet):

    //List ist eine TStringList
    int Pos1 = List->Text.Pos("&F");
    int Pos2 = List->Text.Pos("=");
    String dazwischen = List->Text.SubString(Pos1,Pos2-Pos1);
    

    natürlich solltest du die StringList vorher füllen -> LoadFromFile



  • Es tut mir leid aber bei dem gepostet link ist für mich beispielweise nicht direkt klar das wie ich jetzt wohl denke seine 2 Variablen
    FoundAt1 und FoundAt2 wohl integer sein sollen.

    und er hat dann eine ganz andere art der scheribweise benutzt als du mir jetzt gezeigt hast. Deine finde ich irgendwie einfacher bzw logisch zu verstehen.

    Habe wie folgt nun mal ausprobiert und wollte mir den Teilstring erstmal in einem Edit anzeigenlassen, sollte ja egal sein. Leider kommt eine Fehlermeldung

    "E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich*"
    auserdem wird mir daraus nicht klar welche Zeile er den verwendent.

    RichEdit1->Lines->LoadFromFile("C:\\NikoTest.txt") ;
    
    int Pos1 = RichEdit1->Text->Pos("&F");
    int Pos2 = RichEdit1->Text->Pos("=");
    Edit1->Text = RichEdit1->Text->SubString(Pos1,Pos2-Pos1);
    

    ich weis für ich ist das alles sicherlich sehr einfach, aber bitte verstehe das mir das irgendwie schwerig fällt. Danke



  • schau dir nochmal mein Beispiel an, ich hatte dort einen kleinen Fehler drin, der jetzt korrigiert ist



  • jo perfekt hat funktioniert. DAs mit dem punkt ist ganz neu für mich irgendwie. habe früher Delphi Programmiert da wr ja überall ein .

    aber so hats dann endgültigt funktioniert

    füe alle die es dann nicht rasfinden so gehts es und habe ich getestet 🙂

    RichEdit1->Lines->LoadFromFile("C:\\NikoTest.txt") ;
    
    int Pos1 = RichEdit1->Text.Pos("&F")+2;
    int Pos2 = RichEdit1->Text.Pos("=");
    Edit1->Text = RichEdit1->Text.SubString(Pos1,Pos2-Pos1);
    

    Ich vermute er sucht hier in derganzen datei was mir nicht klar wird ist wie man das in einzelnen Zeilen macht bzw. was passiert wenn das 2 mal der fall sein sollte. Aber das probiere ich jetzt selber rum jetzt habe ich wieder eine grundstruktur auf der ich aufbauen kann. Danke für dein Verständnis.

    mfg
    Killer



  • Nimm einfach statt TRichEdit::Text TRichEdit::Lines. Du könntest auch einfach mal in die Hilfe schauen was Text bei TRichEdit bedeutet.


Anmelden zum Antworten