请教,关于动态数组做参数的问题(50分)

  • 主题发起人 主题发起人 acdc
  • 开始时间 开始时间
A

acdc

Unregistered / Unconfirmed
GUEST, unregistred user!
定义一个GetCharArray函数,输入字符串,把运算结果通过动态数组传递到外部,并返回数组的长度。

function GetCharArray(expStr:string;var Buf:array of Char):Cardinal;
var
padLen:Cardinal
tmpStr:string;
begin
... ...

Setlength(Buf,padLen);//这一步会出错,提示Constant object cannot be passed as var parameter
Dll(tmpStr,Buf);

Result := padLen;
end;




但是如果我改成这样:

TCharArray = array of Char;

function GetCharArray(expStr:string;var Buf:TCharArray):Cardinal;
var
padLen:Cardinal
tmpStr:string;
begin
... ...

Setlength(Buf,padLen);//这一步没问题
Dll(tmpStr,Buf);//这一步如何调用?Dll的第二个参数是PChar类型的

Result := padLen;
end;
 
Dll(tmpStr,@Buf);//这样试试
 
来自:nicai_wgl, 时间:2006-9-13 15:25:00, ID:3571237
Dll(tmpStr,@Buf);//这样试试

-----------------------------------

这样写,编译通过,但是运行时会出错

我知道方法了:Dll(tmpStr,PChar(Buf));
 
tape TBuf = array of Char ;

end;

在函数中这样定义 Buf :TBuf,
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
551
import
I
I
回复
0
查看
686
import
I
后退
顶部