读书人

这个简单的东西困扰小弟我一个礼拜了.

发布时间: 2012-03-23 12:06:21 作者: rapoo

这个简单的东西困扰我一个礼拜了...问出来你们别嘲笑我(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我短信息你

读书人网 >.NET

热点推荐