Textdatei auf bestimmte Zeile (Inhalt der Zeile) untersuchen
-
Hi, wie schon oben erwähnt möchte ich eine Textdatei auf bestimmten Inhalt untersuchen, und abhängig davon ob er existiert, ihn ändern bzw löschen.
Kann ich das ganze innerhalb der Datei machen oder muss ich die ganze Textdatei erst in einen String laden? Für beide Möglichkeiten bräuchte ich Hilfe..
Gruß
-
Hallo,
Dazu mußt du die datei schon vollständig einlesen, ändern und dann wieder rausschreiben. Bei einer Textdatei kannst du TStringList gut dazu verwenden.
Einlesen mit TStringList::LoadFromFile
Dann von 0 bis TStringList::Count durchgehen und deinen Text in TStringList::Strings[] suchen und bei Bedarf ändern
Zuletzt mit TStringList::SaveToFile wieder rausschreiben.Alternativ könnte man C++Standard wie fstream, string, vector, getline etc. verwenden
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39469.html
-
Braunstein schrieb:
Dann von 0 bis TStringList::Count durchgehen und deinen Text in TStringList::Strings[] suchen und bei Bedarf ändern
Alternativ kann mit den AnsiString-Methoden (Pos, SubString etc.) auch direkt auf die Text-Property der StringList zugegriffen werden.
-
Danke, das war was ich gebraucht hatte.
Nun hab ich eine weitere Frage, gibt es eine Möglichkeit nur den Anfang einer Zeile auszulesen und dann den Index anzugeben? ::IndexOf braucht ja die ganze Zeile..
Ich habe bspw. eine Zeile "Name Peter" in der Textdatei. Jetzt könnte Peter ja auch Willi heißen
Wie bekomme ich jetzt den Index der Zeile in der der Name steht (dieser Index ist natürlich variabel). Ich brauch also TStringList::Methode die nur den Zeilenanfang vergleicht bis sie auf Übereinstimmung trifft.Oder geht das evtl auch anders?
-
Einfach die einzelne Zeile mit Pos prüfen. Wenn das Ergebnis ungleich 1 ist dann steht der Sucgbegriff nicht am Zeilenanfang.
-
Hallo
Wenn du genau weist das du einen festen String am Zeilenanfang suchst dann ist SubString und ein Vergleich besser als Pos
bis bald
akari
-
Eventuell könnte es helfen, wenn du mal zeigst, wie die Datei aufgebaut ist.
Was soll in jeder Zeile an welcher Position stehen um diese zu "erkennen" ?
-
Hat alles geklappt, danke
hab einfach die ganze .txt-Datei in den TStringList geladen, und dann mit
TStringlist::Strings[i]::Pos("name")den Anfang jeder Zeile überprüft
Gruß