Hallo
bei den Kollegen vom Delphi Treff haben sich Fehler eingeschlichen.
Result ist IMMER -1, hat einer die Idee wie es richtig lauten muss.
matchPosition := 1; ist immer 1 da stimmt auch was nicht ?!
Guten Rutsch Freunde des Pascal
http://www.delphi-treff.de/tipps-tri...g-durchsuchen/
Datei nach einem bestimmten String durchsuchen
Um in einer Datei nach einem bestimmten String zu suchen, kann die folgende Funktion benutzt werden:
buffer: array[1..1024 * 1024] of Char;
ist viel so viel Speicher
Da gibt ja sogar mein Rechner mit 8 GB ein Stackoverflow
Delphi-Quellcode:
function FindInFile(const AFileName: string; ASearchWord: string; AMatchCase: Boolean): Integer;
var
fileStream: TFileStream;
buffer: array[1..1024 * 1024] of Char;
bufferSize: Integer;
c: Char;
matchPosition, i, lengthOfSearchWord: Integer;
currentPosition, fileStreamSize: Integer;
begin
Result := -1;
lengthOfSearchWord := Length(ASearchWord);
if lengthOfSearchWord = 0 then
Exit;
if not AMatchCase then
ASearchWord := AnsiUpperCase(ASearchWord);
matchPosition := 1;
fileStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
try
fileStreamSize := fileStream.Size;
currentPosition := 0;
while currentPosition < fileStreamSize do
begin
bufferSize := Min(high(buffer), (fileStreamSize - currentPosition));
fileStream.ReadBuffer(buffer, bufferSize);
currentPosition := fileStream.Position;
i := 1;
while i 1 then /// while i = 1 then
begin
i := i - matchPosition + 1;
matchPosition := 1;
end;
Inc(i);
end;
end;
finally
fileStream.Free;
end;
end;