声明 procedure MyFunction ( var Buffer )某过程
var Buffer: array[0..39] of Char;
begin
MyFunction (Buffer[0]); //调用正确
MyFunction (Buffer); //调用错误!!需要的是不可理解的是:
function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;
显然也是Buffer,但是在例子中却是一个Buffer类型的变量:var
BufferA: PChar;
BufferB: array[0..2047] of Char;
begin
try
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, BufferA, iFileLength); //为什么是正确的?
iBytesRead := FileRead(iFileHandle, BufferB[0], iFileLength); //为什么是正确的?
iBytesRead := FileRead(iFileHandle, BufferB, iFileLength); //为什么是错误的???
finally
FreeMem(Buffer);
end
var Buffer: array[0..39] of Char;
begin
MyFunction (Buffer[0]); //调用正确
MyFunction (Buffer); //调用错误!!需要的是不可理解的是:
function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;
显然也是Buffer,但是在例子中却是一个Buffer类型的变量:var
BufferA: PChar;
BufferB: array[0..2047] of Char;
begin
try
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, BufferA, iFileLength); //为什么是正确的?
iBytesRead := FileRead(iFileHandle, BufferB[0], iFileLength); //为什么是正确的?
iBytesRead := FileRead(iFileHandle, BufferB, iFileLength); //为什么是错误的???
finally
FreeMem(Buffer);
end
解决方案 »
- 怎样设置ColorComboBox只显示某些颜色呢?
- SQL查询问题
- 有一台条码打印机 品牌是:partner的PR-300,如何用delphi制作打印程序
- 点击MainMenu1菜单,其中一项,怎样得到点击项的内容??
- deExpress 的 SQLDataSet1 报错!!
- 一个想不通的问题?关于执行时间的问题!
- 大家好,请教1下,如何安装.pas为后缀的组件,最近我得到一些组件,是以.pas为后缀的,请问如何安装呀
- 求救(关于WSAIoctl的用法)
- delphi做的dll可以被VB用吗?
- 使用serversocket多线程接收客户端的数据包然后插入相应的数据库有什么问题?
- 高手请进,什么打印控件能够实现以下打印功能(分数可以再加)?
- 各位谁有读取网页源文件的网址和标题的函数?
我的理解是,当 var Buffer 参数时,用Buffer[0]会转成buffer的首地址,而直接写Buffer会把buffer本身的地址传过去
我记得正确的写法是MyFunction ((@Buffer)^);
另外:delphi的help中 FileRead的ex是错的.