suche nach einer zeichenkette in einer Datei
-
Hallo mal wieder,
meine Frage betrifft diesmal das Suchen von Zeichenketten.
Für meine Anwendung muss ich eine Zeichenkette in einer Datei finden und auslesen. Ebendso wäre ein laden der Datei in ein Memo oder RichEdit denkbar und das suchen darin nach der Zeichenkette. Das Problem ist das Suchen

1. Ich habe da nun aber zwei Probleme. Zum einen möchte ich nach einer mir bekanntne Zeichenkette suchen. Ich habe in der Hilfe schon was mit AnsiMatchText gefunden, werde daraus aber nicht schlau.
2. Zum anderen möchte ich bspw. eine Zeichenkette der erste Zeile der Datei ab dem dritten Zeichen bis zum folgenden Leerzeichen auslesen.
Das Zweite ist eigentlich schon kein suchen mehr, eher eine Art des Dateieinlesens.Danke im Voraus für eure Hilfe.
MfG M
-
Hallo
da der Thread so ähnlich ist :
http://www.c-plusplus.net/forum/viewtopic-var-t-is-107704.html/Edit : Link korrigiert
bis bald
akari
-
Hallo
So, ich habe mir jetzt was überlegt um Zeichen aus einer StrinListe in versch. RichEdits zu kopieren. Die Zeichenkette END dient dabei als Index für das "Umschlaten" auf RichEdit2. Also alles was zw. StringListenPosition 28 und dem letzten END liegt soll in RichEdit1 und alles nach dem letzten END soll in RichEdit2 geladen werden.
Leider zeigen die beiden verwendeten RichEdits nichts an.
Wenn ich den Zähler ENDpos auslese erhalte ich eine 0 (siehe Befüllen RichEdit1), wenn i auslese erhalte ich im Label3 ebenfalls eine 0 (siehe Befüllen RichEdit2). Label1 zeigt die korrekte Länge der StringListe an...void __fastcall TFormMain::OpenReinforce(TStringList *tmpList) { int ListLenght=0, i=0, ENDpos=0; ListLenght = tmpList->Count; //lenght of tmpList Label1->Caption = tmpList->Count; if (ListLenght >= 28) { for (int i = 28; i == ListLenght ; i++ ) { //search last END actString = tmpList->Strings[i]; //get a String if (actString == "END") ENDpos = i; //test to equal } Label2->Caption = ENDpos; for (int i = 28; i == ENDpos ; i++) RichEdit1->Lines->Add(tmpList->Strings[i]); //add Strings for (int i = ENDpos+1; i == ListLenght ; i++ ) RichEdit2->Lines->Add(tmpList->Strings[i]); //add the rest Label3->Caption = i; //müsste = ListLenght sein! } }Ich habe es schon mit anderen int Variablen als immer wieder i zu verwenden versucht, aber das bringt keine Abhilfe. Nach 2h über dme Problem hocken seh ich wohl auch den Wald vor lauter Bäumen nicht mehr...

Ich hoffe ihr könnt helfen.
MfG M
-
Hallo
Das hier
for (int i = 28; i == ListLenght ; i++ ) { //search last END actString = tmpList->Strings[i]; //get a String if (actString == "END") ENDpos = i; //test to equal }kannst du durch
ENDPos = tmp->IndexOf("END");ersetzen.
Desweiteren sind deine Bedingungen der Schleifen falsch. Diese sollen true sein, solange die Schleife fortgesetzt werden soll. Also
for (int i = 28; i < ENDpos ; i++) RichEdit1->Lines->Add(tmpList->Strings[i]); //add Strings for (int i = ENDpos+1; i < ListLength ; i++ ) RichEdit2->Lines->Add(tmpList->Strings[i]); //add the rest Label3->Caption = i;/Edit : Die Variablen ListLenght, i und actString brauchst du nicht, das i in den Schleifen reicht aus.
bis bald
akari