我是delphi初学者,遇到这样一个问题
我是要在delphi中调用用vc++写的dll动态库
在vc++中 .h的声明文件中为:__int16 __stdcall IC_Read_Float(HANDLE idComDev,__int16 offset,float *fdata);
但我不知 在delphi声明中用什么数据类型取代 float* ,
我这样试过
...
type
Psingle=^Single.... Function IC_Read_Float(idComDev:longint;offset:smallint;databuffer:Psingle):smallint;stdcall;
far;external 'Da32.dll' name 'IC_Read';
......var
sdata:psingle; GetMem(sdata,16);
st:=IC_Read_Float(icdev,60,sdata); //位置一编译能成功 但当我运行到位置一时 就出错了 ....error:access violation....
请各为大侠帮帮我
我是要在delphi中调用用vc++写的dll动态库
在vc++中 .h的声明文件中为:__int16 __stdcall IC_Read_Float(HANDLE idComDev,__int16 offset,float *fdata);
但我不知 在delphi声明中用什么数据类型取代 float* ,
我这样试过
...
type
Psingle=^Single.... Function IC_Read_Float(idComDev:longint;offset:smallint;databuffer:Psingle):smallint;stdcall;
far;external 'Da32.dll' name 'IC_Read';
......var
sdata:psingle; GetMem(sdata,16);
st:=IC_Read_Float(icdev,60,sdata); //位置一编译能成功 但当我运行到位置一时 就出错了 ....error:access violation....
请各为大侠帮帮我
解决方案 »
- firemonkey下,按钮上的图标在那里设置、。
- 用delphi做界面,提几个问题,新手,望大家帮助
- 闲来无事情,想研究下组件(很难嘛?)
- 为什么拉DBGrid右边的滚动条不能触发TADOTable的AfterScroo事件?如何拉滚动条时如何觖发。
- 如何在datase desktop 放入图片
- 请问我想吧dbgrid里面的内容保存到一个string变量里面怎么做,
- ★★★李维新书(...Web Service)第五章的问题: 什么是Schema(纲要)?
- 图形文件转换
- 有没有类似DBgrid的控件,点击列上的标题便可按这一列的升降排序?
- 现有三个窗体,第一和第二个窗体上都有一个button,点击后显示第三个窗体,在第三个窗体显示的时候,我怎么知道是点击第一个窗体上的按钮还是点击第二个窗体上的按钮显示的呢?
- 请问截屏时怎样把自己的程序界面最小化来截得整个屏幕
- ADOQuery在oracle下查询的问题
function RegDeleteKeyA; external 'advapi32.dll' name 'RegDeleteKeyA';
肯定是其他问题了,我特意写了个dll,函数和你的dll是一样的,运行时很正常:function IC_Read_Float(idComDev:longint;offset:smallint;var databuffer:Single):smallint;stdcall; far;external 'e:\tmp.dll' name 'IC_Read';procedure TForm1.Button1Click(Sender: TObject);
var
tmp: Single;
begin IC_Read_Float(1,60,tmp);
ShowMessage(FloatToStr(tmp));//显示的结果是1000end;VC代码:
__int16 __stdcall IC_Read(HANDLE idComDev,__int16 offset,float *fdata); __int16 __stdcall IC_Read(HANDLE idComDev,__int16 offset,float *fdata)
{
*fdata=1000;
return 1;
}
function IC_Read_Float(idComDev:longint;offset:smallint;databuffer:Psingle):smallint;stdcall;
far;external 'Da32.dll' name 'IC_Read_Float';//你要的在vc中定义的是IC_Read_Float,非IC_Read
看看WIN API就会明白
你可以把float放大至整数作为参数传递