Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#16

Re: [TStringList] Problem mit einer Datei (bricht zu früh ab

  Alt 16. Sep 2006, 22:35
Okay... Ich habe es jetzt so gelöst (und meinen Bedürfnissen angepasst):
Delphi-Quellcode:
function FindInFile(const FileName : string; SearchWord : string) : TIntArray;
var
  fs : TFileStream;
  Buffer : array [1..10000] of Char;
  Size : Integer;
  idx : Integer;
  i : Integer;
begin
  SetLength(Result, 0);
  idx := 1;
  fs := TFileStream.Create(FileName, fmopenreadwrite or fmsharedenynone);
  try
    Repeat
      Application.ProcessMessages;
      Size := (Fs.Size - Fs.Position);
      if Size > 10000 then
        Size := 10000;
      Fs.ReadBuffer(Buffer, Size);
      for i := 1 to Size do
      begin
        if (Buffer[i] = SearchWord[idx]) then
          Inc(idx)
        else
          idx := 1;
        if (idx = Length(SearchWord)) then
        begin
          SetLength(Result, Length(Result) + 1);
          Result[High(Result)] := (fs.Position - Size) + i - idx + 1;
          idx := 1;
        end;
      end;
    until fs.Position >= fs.Size;
  finally
   fs.Free;
  end;
end;
TIntArray ist ein Integerarray!
Das größere Problem ist jetzt, dass ich auch noch den Wert benötige. Ich suche ja nach "<dep file="" und müsste nun an den Zwischenraum kommen (bis zum "/>)... Mal sehen, wie ich das mache!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat