读取文件的问题

xsf2516624 2009-06-11 05:26:03
我想实现的功能是读取文件1.exe,然后把读取出来的1.exe的数据追加到2.exe的尾部,
为什么我用下面代码实现不了?请问该怎么解决?(不用流操作的,用API函数)

var
vFileHandle0, vFileHandle1: THandle;
vfilesize: LongWord;
vdata0: Pointer;
vTempWord: LongWord;
begin
vFileHandle0 := CreateFile(PAnsiChar('1.exe'), GENERIC_READ,
FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
vFileSize := GetFileSize(vFileHandle0, nil);
GetMem(vdata0, vFileSize);
SetFilePointer(vFileHandle0, 0, nil, FILE_BEGIN);
ReadFile(vFileHandle0, vData0, vFileSize, vTempWord, nil);
CloseHandle(vFileHandle0);

vFileHandle1 := CreateFile(PAnsiChar('2.exe'), GENERIC_WRITE,
FILE_SHARE_WRITE, nil, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
SetFilePointer(vFileHandle1, 0, nil, FILE_END);
WriteFile(vFileHandle1, vdata0^, SizeOf(vdata0), vTempWord, nil);
CloseHandle(vFileHandle1);
FreeMem(vdata0) ;
end;
;
...全文
23 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmoon1983 2009-06-12
  • 打赏
  • 举报
回复

WriteFile(vFileHandle1, vdata0^, SizeOf(vdata0), vTempWord, nil);


看出两个问题:
1) vdata0^ --> 多了^
2) SizeOf(vdata0) = 4

换成下面的看看


WriteFile(vFileHandle1, vdata0, vfilesize, vTempWord, nil);

xsf2516624 2009-06-11
  • 打赏
  • 举报
回复
谢谢你顶了~
骑牛上铂金 2009-06-11
  • 打赏
  • 举报
回复
MARK,帮顶!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧