StrCopy(szNativeOs, @szRecv[0]); 出错~ 本帖最后由 l0v3_y1n9 于 2012-02-09 23:00:39 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正常不代表就一定是对的procedure fun(var szNativeOs: PAnsiChar);var szRecv: Array[0..253] of Char; i,mlen: integer;begin FillChar(szRecv, SizeOf(szRecv), #0); szRecv[0] := 't'; szRecv[1] := 'e'; szRecv[2] := 's'; szRecv[3] := 't'; mlen := 0; for i:=0 to 253 do if szRecv[i]=#0 then begin mlen := i+1; break; end; szNativeOs := AllocMem(mlen); StrCopy(szNativeOs, @szRecv[0]); //这里出错 求解释 szNativeOs定义为局部变量是正常的 唯独是函数var传递进去就出错end;procedure TForm1.Button1Click(Sender: TObject);var NativeOs: PAnsiChar;begin fun(NativeOs); MessAgeBox(0, NativeOs, nil , 0); FreeMem(NativeOs);end; 用szNativeOs := @szRecv[0]; 不会出错 如果不用申请内存的方式 请问这种写法是否恰当? NativeOs未分配內存!!!传址方式,最好在调用前分配内存procedure TForm1.Button1Click(Sender: TObject);var NativeOs: PAnsiChar;begin szNativeOs := AllocMem(mlen); fun(NativeOs); MessAgeBox(0, NativeOs, nil , 0); FreeMem(NativeOs);end; 小问题 GDI+可以动态加载吗? MSComm 如何封装成 DLL IdUDPServer 广播的问题 messagebox问题 请教:用delphi作word开发的问题 关于获取系统空闲时间的问题(高手请进) 急,怎样实现数据库的安全 怎样修改DBGrid中字符串的值? WeekOfTheYear的问题 为什么我的头像hold不住 delphi 如何监测远程的wsdl是否存在呢?
var
szRecv: Array[0..253] of Char;
i,mlen: integer;
begin
FillChar(szRecv, SizeOf(szRecv), #0);
szRecv[0] := 't';
szRecv[1] := 'e';
szRecv[2] := 's';
szRecv[3] := 't';
mlen := 0;
for i:=0 to 253 do
if szRecv[i]=#0 then
begin
mlen := i+1;
break;
end; szNativeOs := AllocMem(mlen);
StrCopy(szNativeOs, @szRecv[0]); //这里出错 求解释 szNativeOs定义为局部变量是正常的 唯独是函数var传递进去就出错
end;procedure TForm1.Button1Click(Sender: TObject);
var
NativeOs: PAnsiChar;
begin
fun(NativeOs);
MessAgeBox(0, NativeOs, nil , 0);
FreeMem(NativeOs);
end;
用szNativeOs := @szRecv[0]; 不会出错 如果不用申请内存的方式 请问这种写法是否恰当?
传址方式,最好在调用前分配内存procedure TForm1.Button1Click(Sender: TObject);
var
NativeOs: PAnsiChar;
begin
szNativeOs := AllocMem(mlen);
fun(NativeOs);
MessAgeBox(0, NativeOs, nil , 0);
FreeMem(NativeOs);
end;