dll函数说明:
Read_Iodata(Sy_id,Iodata)
功能:读取进出资料
参数:Sy_id:控制器地址(2 字节字符串)
返回:a.返回整型值 0-表示成功,4-表示失败。
b.Iodata:进出资料(45位字符)我在delphi中的声明:function Read_Iodata(sy_id:string;iodata:array of char):Shortint;stdcall; external 'syris.dll' name 'Read_Iodata';
//首先写了一个函数ReadIoData,在这个函数中调用dll中的Read_Iodata函数:
function TForm1.ReadIoData(sy_id: string): string;
var
str_IOData:array[1..45] of char;
str1:string;
//int_result:Integer;
begin if Read_IoData(sy_id,str_IOData)=0 then
begin
result:=string(PChar(@str_IOData));
end
else
begin
result:='';
end;
end;然后我在按钮事件中调用:
procedure TForm1.Btn_ReadIODataClick(Sender: TObject);
var
str_data:string;
begin
str_data:=ReadIodata(Edit_Controler.Text);
if str_data='' then
begin
Edit_IOData.Text:='Read Error!';
end
else
begin
Edit_IOData.Text:=str_data;
end
end;//为什么执行到 Edit_IOData.Text:=str_data; 会出现"access violation at 0x4d8dd88b:read of address 0x4d8dd88b" 错误呢,请高手指导一下,在线等...
还有一个奇怪的现象,就是我把 Edit_IOData.Text:=str_data; 改成 form1.Edit_IOData.Text:=str_data; 错误就消失了,但是再加上别的语句就又有错误了,???
Read_Iodata(Sy_id,Iodata)
功能:读取进出资料
参数:Sy_id:控制器地址(2 字节字符串)
返回:a.返回整型值 0-表示成功,4-表示失败。
b.Iodata:进出资料(45位字符)我在delphi中的声明:function Read_Iodata(sy_id:string;iodata:array of char):Shortint;stdcall; external 'syris.dll' name 'Read_Iodata';
//首先写了一个函数ReadIoData,在这个函数中调用dll中的Read_Iodata函数:
function TForm1.ReadIoData(sy_id: string): string;
var
str_IOData:array[1..45] of char;
str1:string;
//int_result:Integer;
begin if Read_IoData(sy_id,str_IOData)=0 then
begin
result:=string(PChar(@str_IOData));
end
else
begin
result:='';
end;
end;然后我在按钮事件中调用:
procedure TForm1.Btn_ReadIODataClick(Sender: TObject);
var
str_data:string;
begin
str_data:=ReadIodata(Edit_Controler.Text);
if str_data='' then
begin
Edit_IOData.Text:='Read Error!';
end
else
begin
Edit_IOData.Text:=str_data;
end
end;//为什么执行到 Edit_IOData.Text:=str_data; 会出现"access violation at 0x4d8dd88b:read of address 0x4d8dd88b" 错误呢,请高手指导一下,在线等...
还有一个奇怪的现象,就是我把 Edit_IOData.Text:=str_data; 改成 form1.Edit_IOData.Text:=str_data; 错误就消失了,但是再加上别的语句就又有错误了,???
解决方案 »
- 日期比较问题 access
- delphi 中如何将图片数据保存到dat文件里的,然后读取出来,并在Image控件中显示
- QuickReport打印预览后点打印按钮没有反应
- 我用delphi做的系统服务程序为什么不能停止(跪求,甩分)
- query组件执行select 语句之后,怎样得到满足条件的记录的条数?
- 急! 使用控件时,出现"没有注册类别"错误
- SQL 2000 有这个函数吗?
- 大家需要Delphi学习工具吗?
- 我用.RecNo 定位记录,但是为什么不能修改???
- delphi语音聊天如何实现啊
- 如果比较两个图片的差异
- BusinessSkinForm中TbsSkinDateEdit的星期不能正常显示
function Read_Iodata(sy_id, iodata:PChar):Shortint;stdcall; external 'syris.dll' name 'Read_Iodata';ReadIoData函数改成:
function TForm1.ReadIoData(sy_id: string): string;
var
str_IOData: String;
begin
Result := '';
SetLength(str_IOData, 46);
if Read_IoData(PChar(sy_id), PChar(str_IOData)) = 0 then
Result := String(PChar(str_IOData));
end;