bcb 代码转换为 delphi 代码 (100分)

  • 主题发起人 魏启明
  • 开始时间

魏启明

Unregistered / Unconfirmed
GUEST, unregistred user!
bcb 代码转换为 delphi 代码
现在需要将一段Borland C++ Builder 代码转换为 Delphi 下

1.一个是bcb写的dll文件,bcb调用方法如下:
写在一个*.h文件中
void far _export _stdcall SetExchangeHeadIntoYKCommandData(struct
DATA_EXCHANGE_GUIDE_STRUCT *lpExData);
正式在bcb程序中调用时如下:
struct DATA_EXCHANGE_GUIDE_STRUCT guide_para;

SetExchangeHeadIntoYKCommandData(&guide_para);
我是用这个方法调用的
procedure SetExchangeHeadIntoYKCommandData(GuideParam:DATA_EXCHANGE_GUIDE_STRUCT);
stdcall;
external 'basedll.dll';
里面的形参应该怎么写,在调用时又该怎样传入变量
2.我在delphi中用record类型定义bcb的STRUCT类型,可以吗
3.这个问题较简单,a/b 是(a mod b)? 还是(a div b)?
a%b呢
 
procedure SetExchangeHeadIntoYKCommandData(var GuideParam:DATA_EXCHANGE_GUIDE_STRUCT);
stdcall;
external 'basedll.dll';
2.可以
3.是a div b
 
To:LeeChange,
关键在于这里 :
*lpExData, 是指针
&guide_para 取地址,另一种指针形式
我想,应该与你的方案有些不同吧?
 
其实是说明用址传递,而不是值传递,
delphi中址传递用var
 
那问题肯定不是出在接口部分.
 
这个程序,在bcb下是可以运行的(老版本),但是他的其他一些部分很差劲,
所以,我想改一下,但是我只懂得delphi,
 
看来我需要更详细的代码及出错信息
 
LeeChange 说的已经很好了,但是对于第三个问题,本人觉得应该视情况而定,如果
a, b 为整数类型,则应该使用 a div b, 如果为浮点型,应该使用 a / b.(sorry!)
 
这是一个接口程序,我的程序将通过它与第三方程序对话,但是,原有程序编写太过草率;
bcb程序也是调用这个动态连接库,它把所有的函数都包含在一个头文件中,然后调用:
头文件中定义如下:
void far _export _stdcall SetExchangeHeadIntoYKCommandData(struct
DATA_EXCHANGE_GUIDE_STRUCT *lpExData);
结构 struct DATA_EXCHANGE_GUIDE_STRUCT定义在另一个头文件中,如下:
struct DATA_EXCHANGE_GUIDE_STRUCT{
unsigned char type;
unsigned char number;
unsigned char flag_read;
unsigned char flag_write;};
在调用时是这样:
struct DATA_EXCHANGE_GUIDE_STRUCT guide_para;//定义变量
SetExchangeHeadIntoYKCommandData(&guide_para);
//调用,注意使用了&;
……
在我的delphi程序中,应该如何调用呢?
我可以给出全部的源码,但是,这个dll是封装的,并且,需要环境支持才可以运行;
 
谢谢帮助!
 
顶部