在调用
function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
有个问题var
str:string;
begin
WriteFile(hFile,pchar(str)^nBytes,lcb,nil);
//为什么此处是pchar(str)^而不是pchar(str)
end;
function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;
有个问题var
str:string;
begin
WriteFile(hFile,pchar(str)^nBytes,lcb,nil);
//为什么此处是pchar(str)^而不是pchar(str)
end;
解决方案 »
- VCD,DVD软件能自动识别其原唱,伴唱声道吗?
- 介绍一个开发技术知识库网站
- 基础问题,很容易解决~~
- 这是什么错误 list index out of bounds(0)
- 关于ado明天給分。。。在线等
- 如何给MDI的工作区使用图片背景?
- 问题超市
- 哪位能提供一个简单的在本地主机通信测试的服务器和客户端程序代码
- A是个FORM窗口,有一个dj函数procedure TFormDz17.dj();,B是一个类,A调用B,B里如何调用A里的dj?
- 在d5中有没有与vb中的print相同的命令
- 我用groupbox放了两个radiobutton,但是过不了,是语法问题,但我不知道。
- 求教,如何使Turbopower的日历控件显示"星期X"而不是"星"
pchar(str) 代表str的地址
你的定义是const buffer,当然是内容
如果你的定义是
BOOL WriteFile( HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesWritten, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // pointer to structure needed for overlapped I/O
);lpcvoid就是个指针就应该 pchar(str)
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;上面的是delphi中的原型; 可以看到buffer的定义
const Buffer 不是指针.
当然,delppi编译器在连接windows库的时候会转换成指针的,因为const指定了必须按地址传送。