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