Einzelnen Beitrag anzeigen

Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#1

Fehlerteufel bei Delphi Treff

  Alt 31. Dez 2014, 08:00
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;
Martin MIchael
  Mit Zitat antworten Zitat