delphi – 如何在流中搜索十六进制?

delphi – 如何在流中搜索十六进制?,第1张

概述如何有效,快速地搜索流中的十六进制? 如果流量大,如何在流中快速搜索并重新调整位置? function FindInMemStream(Stream: TMemoryStream; What: String):Integer;var bufBuffer, bufBuffer2: array[0..254] of Char; i: Integer;begin Result := 0; 如何有效,快速地搜索流中的十六进制?
如果流量大,如何在流中快速搜索并重新调整位置?

function FindInMemStream(Stream: TMemoryStream; What: String):Integer;var  bufBuffer,bufBuffer2: array[0..254] of Char;  i: Integer;begin  Result := 0;  i := 0;  FillChar(bufBuffer,255,#0);  FillChar(bufBuffer2,#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;

我想将函数更改为serch hex,这个函数是否有效?你能给我一个高效的函数来交换十六进制吗?

解决方法 我已经调整了system.pas中可用的POS功能代码:)
如果你需要找到一些十六进制,你可以使用如下:

PosHex(##$AA#,MyStream);
function PosHex(const SubStr: AnsiString; const StrStream: TMemoryStream): Integer;var  SubLen,SrcLen,Len,I,J: Integer;  C1: AnsiChar;  Str: PAnsiChar;begin  SrcLen := StrStream.Size;  SubLen := Length(SubStr);  Result := 0;  if (SubLen <= 0) or (SrcLen <= 0) or (SrcLen < SubLen) then Exit;  StrStream.position := 0;  Str := StrStream.Memory;  Len := SrcLen - SubLen + 1;  C1 := SubStr[1];  for I := 1 to Len do  begin    if Str[I] = C1 then    begin      Result := I;      for J := 1 to SubLen-1 do      begin        if Str[I+J] <> SubStr[1+J] then        begin          Result := 0;          break;        end;      end;      if Result <> 0 then Exit;    end;  end;end;Usage:procedure TForm3.FormCreate(Sender: TObject);Var  M: TMemoryStream;  S: AnsiString;begin S := 'I would like to Find This string!'; M := TMemoryStream.Create; M.WriteBuffer(S[1],Length(S)); Memo1.lines.Add(IntToStr(PosHex('Find This',M))); M.Free;end;
总结

以上是内存溢出为你收集整理的delphi – 如何在流中搜索十六进制?全部内容,希望文章能够帮你解决delphi – 如何在流中搜索十六进制?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1237436.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存