Zitat von
Blitzer:
Es geht mir auch mehr um einen Lösungsalgorithmus als um die explizite Syntax....
Also folgendes Problem:
Ich habe eine Log-datei mit vielen Einträgen, jeder Eintrag hat ne neue Zeile. Ich muss aus der gesamten Log-Datei immer 2 Wörter raussuchen... also z.B. UserName und Passwort... Hinter diesen beiden Wörtern stehen dann immer die Daten die ich brauche... Natürlich kommen pro LogDatei öfter diese beiden Wörter vor... Ich brauche also jeden eintrag... Diese will ich dann in einem StringGrid speichern alle passwörter in der einen Spalte, alle usernamen in der anderen spalte....
eine logdatei sieht z.B so aus:
28.02.2005 12:35:44 Logddatei erstellt.
28.02.2005 12:35:44 UserName:
test
28.02.2005 12:35:44 Verbindung hergestellt zu
xx
28.02.2005 12:35:44 Updateliste eingelesen
xx
28.02.2005 12:35:45 Datei
xx
28.02.2005 12:35:45 Archive : xxx
28.02.2005 12:35:52 Passwort:
blabla
1.) Objekt der Klasse TStringList erzeugen
2.) Daten aus Datei laden (LoadFromFile)
3.) Liste
rückwärts durchlaufen und alle Zeilen löschen, die nicht die Wort "Username:" oder "Passwort:" enthalten
Delphi-Quellcode:
for i:= liste.Count-1 downto 0 do
begin
s := liste[i];
if (Pos('Username:', s)=0) and (Pos('Passwort:', s)) then
liste.Delete(i);
end;
4.) Liste vorwärts durchlaufen und abwechselnd den Username und das Passwort entnehmen
mit Copy()
die Position, ab der kopiert werden soll ist Pos(':', s)+2
Man kann Punkt 3.) und 4.) auch auf einmal durchführen.