Giz*_*eat 3 arrays delphi byte freepascal
使用FreePascal(或Delphi,如果没有FP示例),给定一个2048字节的缓冲区作为"字节数组",如何在缓冲区中搜索"StringA"?
var
Buffer : array[1..2048] of byte;
...
repeat
i := 0;
BlockRead(SrcFile, Buffer, SizeOf(Buffer), NumRead);
// Now I want to search the buffer for "StringA"?
...
Run Code Online (Sandbox Code Playgroud)
谢谢
我认为这将在fpc中工作而无需额外的Unicode/AnsiString转换:
function Find(const buf : array of byte; const s : AnsiString) : integer;
//returns the 0-based index of the start of the first occurrence of S
//or -1 if there is no occurrence
var
AnsiStr : AnsiString;
begin
SetString(AnsiStr, PAnsiChar(@buf[0]), Length(buf));
Result := Pos(s,AnsiStr) - 1; // fpc has AnsiString overload for Pos()
end;
Run Code Online (Sandbox Code Playgroud)