![]() |
RawByteString in Stream finden?
Ich habe diese Prozedur im WWW gefunden und sie funktioniert wirklich exzellent.
Delphi-Quellcode:
Mein Problem besteht darin einen rawbytestring finden zu lassen. Wenn ich der Prozedur einen hardcoded String übergebe wird er gefunden nicht aber ein rawbytestring.
function FindInMemStream(Stream: TBytesStream; What: string): Integer;
var bufBuffer, bufBuffer2: array [0 .. 254] of Char; i: Integer; begin Result := 0; i := 0; FillChar(bufBuffer, 255, #0); FillChar(bufBuffer2, 255, #0); StrPCopy(@bufBuffer2, What); Stream.Position := 0; while Stream.Position <> Stream.Size do begin Stream.Read(bufBuffer[0], Length(What)); if CompareMem(@bufBuffer, @bufBuffer2, Length(What)) then begin Result := Stream.Position - Length(What); Exit; end; i := i + 1; Stream.Seek(i, 0) end; end; |
AW: RawByteString in Stream finden?
In Unicode Versionen von Delphi ist ein Char nicht mehr ein Byte. RawByteString hat ein Byte je Zeichen. Wegen des Typunterschieds wird der Compiler dann auch eine Warnung ausgeben. Eine mögliche Lösung ist den RawByteString in einen String umzuwandeln.
|
AW: RawByteString in Stream finden?
Hmm..
Oder mach ne Ansiversion daraus
Delphi-Quellcode:
Somit würdest Du dann UniCode verlieren...
function FindInMemStream(Stream: TBytesStream; What: AnsiString): Integer;
var bufBuffer, bufBuffer2: array [0 .. 254] of AnsiChar; i: Integer; begin Result := 0; i := 0; FillChar(bufBuffer, 255, #0); FillChar(bufBuffer2, 255, #0); StrPCopy(@bufBuffer2, What); Stream.Position := 0; while Stream.Position <> Stream.Size do begin Stream.Read(bufBuffer[0], Length(What)); if CompareMem(@bufBuffer, @bufBuffer2, Length(What)) then begin Result := Stream.Position - Length(What); Exit; end; i := i + 1; Stream.Seek(i, 0) end; end; Oder alternativ auf WideChar.... |
AW: RawByteString in Stream finden?
Wieso lese ich RawByteString im Titel, aber finde ihn nicht im Code?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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