这个简单的东西困扰我一个礼拜了...问出来你们别嘲笑我(D2010)...
ShowMessage(WideCharToString(PWideChar(byName)));
//能正常show出来。
btnNewClientname.Text := WideCharToString(PWideChar(byName));
//给这个edit赋值出现错误:
----------
Debugger Fault Notification
----------
Project F:\Yolo-E8HotelMis\YoloE8HotelMis.exe faulted with message: 'access violation at 0x00da664a: read of address 0x000006ad'. Process Stopped. Use Step or Run to continue.
----------
OK
----------
太郁闷了.....招揽高手
环境是【Win7+delphi2010】
----------------------------------------------
byName 是一个 PAnsiChar 类型的全局变量。
软件装载时:
getmem(byName, 30);
软件退出时:
FreeMem(byName);
这个东西赋值是这样:
for i := 0 to 29 do
byName[i] := AnsiChar(Readbuf[i + 7]);
至于Readbuf是调用一个Dll函数的回传值。dll的delphi函数这样定义的:
function OneCommand(cmd: integer; dLength: integer; pBuff: PByte;
nTypeAB: integer; nOutOfTime: integer): integer; stdcall;
External 'DllCom.dll' name 'OneCommand';
里面的pBuff就是Readbuf.
Readbuf.的delphi的定义是这样的:
Readbuf: array [0 .. 2047] of Byte;
[解决办法]
可以的話,你發source過來我調試看看...
mail我短信息給你