Zu deinem Code: Nicht böse sein aber...
So wie ich es verstanden habe willst du in der Datei, zeile für Zeile nach 2 Strings suchen lassen (12:15 bzw 12:17 als Beispiel). Wenn einer der Strings in der jeweiligen Zeile enthalten ist soll die Zeile in einem Memo ausgegeben werden. Was dazwischen liegt willst du nicht haben.
So hab ichs verstanden. So sollte das gehen: (Code ist ungetestet und nur eben so hingepfuscht!)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| function DatenLesen(DateiName,sub1,sub2:string):Boolean; var Datei : TextFile; Zeile : String; i : integer; begin i:=1; Result := false; AssignFile(Datei, DateiName); if not FileExists(DateiName) then exit; DBMemo1.Clear; try ReSet(Datei); while not eof(Datei) do begin ReadLn(Datei,s); if pos(sub1,s)>0 then begin DBMemo1.Lines.Add('Zeilennr. : ' +IntToStr(i)+': '+s); Result := true; end; if pos(sub2,s)>0 then begin DBMemo1.Lines.Add('Zeilennr. : ' +IntToStr(i)+': '+s); Result := true; end; inc(i); end; except ShowMessage('Fehler beim lesen der Datei!'); end; end; |
An "DateiName" übergibst du den DateiNamen als String.
"sub1" und "sub2" sind die 2 Strings nach denen gesucht werden soll.
Die Funktion gibt "true" zutück wenn die Datei wenigstens einen der Strings beinhaltet und "false" wenn dem nicht so ist!
MfG, Raphael