L
lccc
Unregistered / Unconfirmed
GUEST, unregistred user!
客户端调用自动化COM组件的函数:
function TImplClass.ReadOut(out Data:TDataRecord):WordBool;
var //TImplClass=接口的实现类
AscStr:string;
begin
Result:=False;
SetLength(AscStr,22);
//以下调用动态库从端口取得数据;
try
if not GetData(AscStr) then Exit;//动态库函数GetData函数从端口取数据,失败退出。
except
Exit;
end;
try
Data.A:=StrToInt('$'+Copy(AscStr,1,2));//读取第一个数据,2个字符串 -----
//W处
Data.B:=StrToInt('$'+Copy(AscStr,3,8));//读取第二个数据项,8个字符串 -----
//X处
Data.C:=StrToInt('$'+Copy(AscStr,11,4));//读取第三个数据项,4个字符串 -----
//Y处
Data.D:=StrToInt('$'+Copy(AscStr,15,8));//读取第三个数据项,8个字符串
//Z处
except
Exit;
end;
Result:=True;
end;
其中,TDataRecord的定义如下:
TDataRecord=record
A:Byte;
B:LongWord;
C:Word;
D:LongWord;
end;
现在调用时,提示地址访问非法:
Access Violation at address 0156132C in "ServerCOM.dll",
write of address 30303030
如果再次调用则没有错误。
逐步调试,发现有时在X处出现错误,有时在Y处出现错误,
有时在Z出出现错误。
错误后(再次读取读出了数据),客户端退出,提示:
“Runtime error 204 at 00003BBD”
各种方法都尝试了,不知什么原因,请高手指教。
在线等待!!
function TImplClass.ReadOut(out Data:TDataRecord):WordBool;
var //TImplClass=接口的实现类
AscStr:string;
begin
Result:=False;
SetLength(AscStr,22);
//以下调用动态库从端口取得数据;
try
if not GetData(AscStr) then Exit;//动态库函数GetData函数从端口取数据,失败退出。
except
Exit;
end;
try
Data.A:=StrToInt('$'+Copy(AscStr,1,2));//读取第一个数据,2个字符串 -----
//W处
Data.B:=StrToInt('$'+Copy(AscStr,3,8));//读取第二个数据项,8个字符串 -----
//X处
Data.C:=StrToInt('$'+Copy(AscStr,11,4));//读取第三个数据项,4个字符串 -----
//Y处
Data.D:=StrToInt('$'+Copy(AscStr,15,8));//读取第三个数据项,8个字符串
//Z处
except
Exit;
end;
Result:=True;
end;
其中,TDataRecord的定义如下:
TDataRecord=record
A:Byte;
B:LongWord;
C:Word;
D:LongWord;
end;
现在调用时,提示地址访问非法:
Access Violation at address 0156132C in "ServerCOM.dll",
write of address 30303030
如果再次调用则没有错误。
逐步调试,发现有时在X处出现错误,有时在Y处出现错误,
有时在Z出出现错误。
错误后(再次读取读出了数据),客户端退出,提示:
“Runtime error 204 at 00003BBD”
各种方法都尝试了,不知什么原因,请高手指教。
在线等待!!