function FileToHexStr_Lqb(File_Name:String):String;
var
F1:File of Byte;
Tmp_Byte:Byte;
i:Integer;
Tmp_Str1,Tmp_Str2,Rslt_Str:String;
begin
i:=1;Result:='';Rslt_Str:='';
AssignFile(F1,File_Name);
Reset(F1);
Read(F1,Tmp_Byte);
Tmp_Str2:=IntToHex(Tmp_Byte,2);
while Tmp_Str1<>'Read finished!' do
begin
if not Eof(F1) then
begin
Read(F1,Tmp_Byte);
Tmp_Str1:=IntToHex(Tmp_Byte,2);
end
else
Tmp_Str1:='Read finished!';
if (Tmp_Str2=Tmp_Str1)and(i<255)then
Inc(i)
else
begin
if i>2 then
Rslt_Str:=Rslt_Str+'G'+IntToHex(i,2)+Tmp_Str2
else
Rslt_Str:=Rslt_Str+Repeat_Str_Lqb(Tmp_Str2,i);
i:=1;
Tmp_Str2:=Tmp_Str1;
end;
if Length(Rslt_Str)>249 then
begin
Result:=Result+#39+Rslt_Str+#39#13#10#43; //#39:' #13:回车 #10:换行 #43:+
Rslt_Str:='';
end;
end;
if Length(Rslt_Str)>0 then Result:=Result+#39+Rslt_Str+#39;
CloseFile(F1);
end;
var
F1:File of Byte;
Tmp_Byte:Byte;
i:Integer;
Tmp_Str1,Tmp_Str2,Rslt_Str:String;
begin
i:=1;Result:='';Rslt_Str:='';
AssignFile(F1,File_Name);
Reset(F1);
Read(F1,Tmp_Byte);
Tmp_Str2:=IntToHex(Tmp_Byte,2);
while Tmp_Str1<>'Read finished!' do
begin
if not Eof(F1) then
begin
Read(F1,Tmp_Byte);
Tmp_Str1:=IntToHex(Tmp_Byte,2);
end
else
Tmp_Str1:='Read finished!';
if (Tmp_Str2=Tmp_Str1)and(i<255)then
Inc(i)
else
begin
if i>2 then
Rslt_Str:=Rslt_Str+'G'+IntToHex(i,2)+Tmp_Str2
else
Rslt_Str:=Rslt_Str+Repeat_Str_Lqb(Tmp_Str2,i);
i:=1;
Tmp_Str2:=Tmp_Str1;
end;
if Length(Rslt_Str)>249 then
begin
Result:=Result+#39+Rslt_Str+#39#13#10#43; //#39:' #13:回车 #10:换行 #43:+
Rslt_Str:='';
end;
end;
if Length(Rslt_Str)>0 then Result:=Result+#39+Rslt_Str+#39;
CloseFile(F1);
end;
解决方案 »
- 关于locate的多字段查找的方法
- DBGRID1選某筆資料DBGRID2就不能出現那筆資料
- sysconst.dcu
- 关于窗体继承的问题
- 关于Treeview边框拉宽宿小的问题!急!谢谢拉
- 哪里可下载 Microsoft Project 2002 简体中文版?送分。
- 求助....怎样实现Delphi后台驱动Auto CAD..在线等待!
- 不小心在paradox数据库中把date型的数据定义成了alpha型,在比较时出了问题,求助
- 给OleContainer赋值时出错,代码如下:
- 隐藏运行另一程序的代码。顶者有分
- 关于类声明用的可见性表示符小问题,请大家帮忙解答一下吧.
- 两个集合中有相同的元素,如何区分他们?
var
i:Integer;
F1:TextFile;
Tmp_Str:String;
begin
i:=1;
Tmp_Str:='';
while i<Length(HexStr) do
begin
while not(HexStr[i] in ['0'..'9','A'..'G']) do Inc(i);
if HexStr[i]='G' then
begin
Tmp_Str:=Tmp_Str+Repeat_Str_Lqb(Chr(StrToInt('$'+HexStr[i+3]+HexStr[i+4])),StrToInt('$'+HexStr[i+1]+HexStr[i+2]));
i:=i+5;
end
else
begin
Tmp_Str:=Tmp_Str+Chr(StrToInt('$'+HexStr[i]+HexStr[i+1]));
i:=i+2;
end;
end;
AssignFile(F1,File_Name);
Rewrite(F1);
Writeln(F1,Tmp_Str);
CloseFile(F1);
end;
在没有正常的修改PE Header的情况下,胡乱些别的EXE的开头也许会导致问题的