Textfile nach Schlüsselwörter durchsuchen und den darauffolgenen Zahlenwert ausgeben
-
Hallo,
ich bin ganz frisch hier und habe eine Frage auf die ich trotz google nie eine Antwort gefunden habe.Also: Ich habe eine Datei : Test.txt
.txt-Anfang_____________
Gewicht m= 4 kgLänge=
3 m
.txt-Ende_______________Diese Datei möchte ich einlesen und sobald ein Schlüsselbegriff kommt möchte ich einen darauffolgenen Zahlenwert (double) in einem Edit-Dings ausgeben. Ich möchte das ganz aber als Text- und nicht als Binärdatei.
Geht sowas überhaupt??????Gespeichert habe ich das ganze nach dieser Methode:
ofstream f("C:\\Test.txt");
f<<"Gewicht m="<<endl;
usw.......................Ich denke mal das "speichern" geht wesentlich eleganter, aber so funktionierts....
Das Problem ist wie gesagt das einlesen/ "Laden"....
Ich habe mir überlegt das das mit einer while-Schleife gehen könnte aber da weiß ich nicht wie ich das formulieren kann. Wie gesagt, bin blutiger AnfängerWeiß zufällig jemand wie das geht bzw. wo man sowas nachlesen kann?
Wäre super nettMfg Casi
-
Hallo und Willkommen!
Weiß zufällig jemand wie das geht bzw. wo man sowas nachlesen kann?
In der BCB-Hilfe nach "TStringList" suchen und dann "LoadFromFile()", "SaveToFile()" benutzen.
Zusätzlich auch "StrToFloat()" und "FloatToStr()" mal ansehen.wNw
-
Wenn das Format immer gleich ist, dann könntest du sowas in der Art machen:
[cpp]
TStringList *file=new TStringList();
file->LoadFromFile("text.txt");
int posanf,posend;
String line;
vector <String> sfor;
sfor.push_back("Gewicht m= ");
sfor.push_back("Länge= ");
for(int i=0;i < file->Count;i++)
{
line=file->Strings[i];
for(int j=0;j<sfor.size();j++)
{
posanf=line.Pos(sfor[j]);
if(posanf)
{
posanf+=sfor[j].Length();
posend=line.SubString(posanf,line.Length()-posanf).Pos(" ");
Memo1->Lines->Add(line.SubString(posanf,--posend));
break;
}
}}
delete file;[/cppAlledings müsste es dann in deinem Beispiel z.B. "Länge= 3 m" sein (Also nicht über mehrere Zeilen verteilt.
-
TStringList *file=new TStringList(); file->LoadFromFile("text.txt"); int posanf,posend; String line; vector <String> sfor; sfor.push_back("Gewicht m= "); sfor.push_back("Länge= "); for(int i=0;i < file->Count;i++) { line=file->Strings[i]; for(int j=0;j<sfor.size();j++) { posanf=line.Pos(sfor[j]); while(posanf) { posanf+=sfor[j].Length(); posend=line.SubString(posanf,line.Length()-posanf).Pos(" "); Memo1->Lines->Add(line.SubString(posanf,--posend)); posanf=0; } } } delete file;
-
Wenn man zusätzlich noch alle whitespaces aus den Zeilen entfernt und die Buchstaben nach entweder upper- oder lowercase wandelt bevor man sie parst ist man schon fast fertig.