delphi如何像UltraEdit修改某个地址的数据??? 我想将00000160h 00 00 10 00 00 40 00 00 00 00 10 00 00 10 00 00中的 10 00 改成20 00 该怎么办?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有用delphi写的客查看二进制文件的代码(简易的类似与ultraedit)现在不在身边,下班后可以给你如要,请留下mail 读文件,写文件呀。 TFileStream等等。 [email protected]谢谢你了~~~我打开的是exe文件啊~~!我要修改某个地址的内容~~不是编辑,是直接在程序中修改了~~ 用二进制方式打开文件-写文件。地址就自己计算偏移量然后seek, write....--------------------------------------看见了么,那支蛾子,正飞向太阳,那就是我!-------------------------------------- exe文件应该不可以进行修改吧, 使用 FileRead、FileSeek、FileWrite 即可 f:= TFileStream.Create(...); f.Position:=... f.Write(...); f.Free;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> AssignFile(...); Reset(...); Seek(...); BlockWrite(...);>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> GetWindowThreadProcessID(...); ProcessHandle:= OpenProcess(...); WriteProcessMemory(...);足够啦,从流文件,到二进制文件,再到内存,我全贴了,要一送二;这些都是我源代码中的一部分,需要具体的再和我联系 以 16进制 显示所读的文件,不过这个主要是测试 readfileex,所以如果会很慢。var hFile: HWND; Buffer: array[0..16] of BYTE; lPOverlapped: POverlapped; FileSize: Cardinal; loopCount, loopCountII , i, j : Cardinal; lineStr: string; FileName: string;begin if Self.OpenDialog1.Execute then begin FileName := OpenDialog1.FileName; end else Exit; hFile := CreateFile(PChar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,FILE_FLAG_OVERLAPPED); FileSize := GetFileSize(hFile,nil); loopCount := FileSize div 16; New(lPOverlapped); lPOverlapped^.Offset := 0; ZeroMemory(@Buffer,16); ProgressBar1.Max := loopCount; ProgressBar1.Step := 1; for i := 0 to loopCount - 1 do begin ReadFileEx(hFile,@Buffer,16,lPOverlapped,nil); lPOverlapped^.Offset := lPOverlapped^.InternalHigh + lPOverlapped^.Offset; lineStr := ''; for j := 0 to 15 do begin if j = 0 then lineStr := Format('%.2x',[Buffer[j]]) else begin if j in [2,4,6,8,10,12,14] then lineStr := lineStr + Format(' %.2x',[Buffer[j]]) else lineStr := lineStr + Format('%.2x',[Buffer[j]]); end; end; RichEdit1.Lines.Add(lineStr); ProgressBar1.StepIt; end; loopCountII := FileSize - 16*loopCount; ReadFileEx(hFile,@Buffer,FileSize - 16*loopCount,lPOverlapped,nil); lineStr := ''; for j := 0 to loopCountII - 1 do begin lineStr := lineStr + Format(' %.4x',[Buffer[j]]); end; RichEdit1.Lines.Add(lineStr); Dispose(lPOverlapped); CloseHandle(hFile)end; 怎么用Delphi 7 读取SQL表格有多少行数据,把行数保存到一个变量里下面的能实现吗具体怎么做 问问子串转换成日期型是什么函数?谢谢! Delphi运行问题请教 一个网页中的数据库的问题! 在一个form的两个实例记录拖动问题 如何知道执行SQL语句要多长时间 请问如何关闭IIS的服务? 讨论。。。 Delphi中如何實現權限控制到字段 怎样判断image中是否有图片? 如何动态扩展数组下表范围 在線等待,SQL語句問題?
现在不在身边,下班后可以给你
如要,请留下mail
TFileStream等等。
我要修改某个地址的内容~~不是编辑,是直接在程序中修改了~~
--------------------------------------
看见了么,
那支蛾子,
正飞向太阳,
那就是我!
--------------------------------------
f.Position:=...
f.Write(...);
f.Free;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
AssignFile(...);
Reset(...);
Seek(...);
BlockWrite(...);
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
GetWindowThreadProcessID(...);
ProcessHandle:= OpenProcess(...);
WriteProcessMemory(...);足够啦,从流文件,到二进制文件,再到内存,我全贴了,要一送二;
这些都是我源代码中的一部分,需要具体的再和我联系
hFile: HWND;
Buffer: array[0..16] of BYTE;
lPOverlapped: POverlapped;
FileSize: Cardinal;
loopCount, loopCountII , i, j : Cardinal;
lineStr: string;
FileName: string;
begin
if Self.OpenDialog1.Execute then
begin
FileName := OpenDialog1.FileName;
end
else
Exit;
hFile := CreateFile(PChar(FileName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,FILE_FLAG_OVERLAPPED);
FileSize := GetFileSize(hFile,nil);
loopCount := FileSize div 16;
New(lPOverlapped);
lPOverlapped^.Offset := 0;
ZeroMemory(@Buffer,16);
ProgressBar1.Max := loopCount;
ProgressBar1.Step := 1;
for i := 0 to loopCount - 1 do
begin
ReadFileEx(hFile,@Buffer,16,lPOverlapped,nil);
lPOverlapped^.Offset := lPOverlapped^.InternalHigh + lPOverlapped^.Offset;
lineStr := '';
for j := 0 to 15 do
begin
if j = 0 then
lineStr := Format('%.2x',[Buffer[j]])
else
begin
if j in [2,4,6,8,10,12,14] then
lineStr := lineStr + Format(' %.2x',[Buffer[j]])
else
lineStr := lineStr + Format('%.2x',[Buffer[j]]);
end;
end;
RichEdit1.Lines.Add(lineStr);
ProgressBar1.StepIt;
end;
loopCountII := FileSize - 16*loopCount;
ReadFileEx(hFile,@Buffer,FileSize - 16*loopCount,lPOverlapped,nil);
lineStr := '';
for j := 0 to loopCountII - 1 do
begin
lineStr := lineStr + Format(' %.4x',[Buffer[j]]);
end;
RichEdit1.Lines.Add(lineStr);
Dispose(lPOverlapped);
CloseHandle(hFile)
end;