![]() |
Re: Word-Dokument in StringList laden
Ich pushe jetzt das letzte Mal, ich denke, das hat sonst auch keinen Sinn mehr.
Ich würde mich freuen, wenn jemand eine Lösung für mein Problem weiß, ich komme auf keinen grünen Zweig... |
Re: Word-Dokument in StringList laden
Zitat:
könnte z.B. so aussehen
Delphi-Quellcode:
function ScanFileForString(aFile, SearchString: String; IgnoreCase: Boolean=true;
MaxBytesScanned: Int64 = 2097152): Boolean; const MAX_BUFFER_SIZE = 20480; //20 kb var Buffer: String; FS: TFileStream; BytesRead: Integer; i, match: Integer; BufferSize, StrLength: Integer; begin Result := false; If (SearchString='') then exit; If IgnoreCase then SearchString := ANSIUppercase(SearchString); //Datei öffnen... falls das nicht klappt gibts hier ne Exception //daher die Funktion besser im try..except Schutzblock aufrufen! FS := TFileStream.Create(aFile, fmOpenRead or fmShareDenyWrite); try BufferSize := 0; StrLength := Length(SearchString); //Ermitteln wie groß der Puffer sein muss. Er soll ca. 20 kb groß sein, //wenn nicht die ganze Datei reinpasst If FS.Size <= MAX_BUFFER_SIZE then BufferSize := FS.Size else BufferSize := (MAX_BUFFER_SIZE div StrLength) * StrLength; SetLength(Buffer, BufferSize); Repeat //Höchstens MaxBytesScanned Bytes untersuchen oder bis EOF BytesRead := FS.Read(Buffer[1], BufferSize); If BytesRead = 0 then exit; If IgnoreCase then Buffer := ANSIUppercase(Buffer); for i:=1 to BytesRead do begin match := 0; If (BufferSize-(i-1) >= StrLength) then while (Buffer[i+match] = SearchString[match+1]) do begin inc(match); If match = StrLength then begin Result := true; exit; end; end; end; Until (FS.Position >= MaxBytesScanned) or (FS.Position = FS.Size); finally FS.Free; SetLength(Buffer, 0); end; end; |
Re: Word-Dokument in StringList laden
Hi,
nach der von Dir genannten Zeichnkette folgen in einer Word-Datei mehrere Nullzeichen und diese interpretiert die StringList offensichtlich als Dateiende. Statt einer StringList würde ich für deinen Zweck eher einen FileStream empfehlen, in dem du dann suchen kannst. |
Re: Word-Dokument in StringList laden
Vielen Dank für den Code, Dani. :)
Werde ich in den nächsten Tagen mal ausprobieren. @Niko: Danke, du bestätigst das mit TFileStream. ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz