起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 140|回复: 7

dll中的函数的参数类型为结构体指针,有办法在平台中用吗?加急!!**

[复制链接]
发表于 2009-7-10 09:15:08 | 显示全部楼层 |阅读模式
看过论坛中许多关于指针的帖子,如果是简单的指针操作,可以通过封装后导入实现。
我们要调用的这个dll中包含的函数全部包含结构体指针参数
先login
function tlq_login(aTLQ_ID: Pointer; atype: Integer; aflag: Integer): Integer;
然后取消息
function tlq_getmsg(aTLQ_ID: Pointer; aUsrMsg: pointer; aMsgContent: Pointer; aTimeout:Integer):Integer;
发消息
function tlq_putmsg(aTLQ_ID: Pointer; aUsrMsg: pointer; aMsgContent: PChar; aFlag: integer): Integer;

结构体中还包含字符数组
type
  TCRESULT = record
    rval: integer;
    tlqerrno: Integer;
  end;
  NETTLQID = record
    vi: Integer;
  end;

  TMsgID = record
    Time: Longword;
    ID: word;
    RgsLoc: word;
  end;
    TMSG_INFO = record
    VersionId: array[1..4] of Char;
    MsgType: Byte;
    MsgName: array[0..48] of Char;
    UsrContext: array[1..65] of Char;
    RemoveFileFlag: Byte;
    CompressFlag: Byte;
    CryptFlag: Byte;
    PriorNo: Byte;
    QueName: array[0..40] of Char;
    Expiry: integer;
    MsgLen: integer;
    ReportType: integer;
    ReportQName: array[1..41] of Char;
    CorrMsgId: TMsgID;
    LogFlag: Byte;
    Priority: Byte;
    OrgMsgLen: Integer;
    SrcNode: array[0..21] of Char;
    MsgSize: array[0..32] of Char;
    MsgId: TMsgID;
    BigPktFlag: Byte;
    FuncFlag: Integer;
  end;

PLQ_ID = ^TLQ_ID;
  TLQ_ID = record
    tlqerrno: Integer;
    pTrans: pChar;
    pFNameContainGet: pChar;
    pFNameContainPut: pChar;
    pSignalCtrl: pChar;
    vNETTLQID: NETTLQID;
    result: TCRESULT;

    bInTx: Integer;
    HostName: array[0..21] of Char;
    Port: Word;
  end;

这种情况,能否包装后实现呢。这个很关键,涉及我们能否选用一款产品,麻烦解答,谢了!!!
回复

使用道具 举报

发表于 2009-7-10 09:27:09 | 显示全部楼层
平台内是不支持指针的,用d6+sp2包装后以第三方控件的方式引入到平台调用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-10 11:49:01 | 显示全部楼层
再怎么包装,要调用这个dll的函数就要传入结构体指针参数呀???
回复 支持 反对

使用道具 举报

发表于 2009-7-10 13:30:25 | 显示全部楼层
平台里不支持指针。
只能考虑在平台内传入普通的参数,然后delphi中根据这个参数去对应不同的结构体指针的方式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-10 14:26:09 | 显示全部楼层
你们引入外部控件的文档中没有关于指针的包装过程。只是说“对于传递指针返回一个结构的情况,可以在Studio中用C#语言来引入这个函数”,现在x3 3042根本没有C#选项,怎么弄呀?
有没有关于指针包装的完整例子?
我们这个,先要传入指针,然后调用其它函数时还要用到返回的指针,很麻烦。
回复 支持 反对

使用道具 举报

发表于 2009-7-10 14:48:53 | 显示全部楼层
http://bbs.justep.com/forum.php?mod=viewthread&tid=9841
这个文档中有关指针的说明:请参考如何引入数组。
具体可以看下这个pdf文档9-10页
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-10 15:04:47 | 显示全部楼层
那个文档我有,是这么说的:
指针有两种情况:一种是传一个结构过来,一种是传数组过来。对于传递指针作为数组的情况,也是定义一个对象来访问这个数组,返回数组的每一个元素;对于传递指针返回一个结构的情况,可以在Studio中用C#语言来引入这个函数。
我们的情况就是传结构体指针,文档中没有例子,只是说:可以在Studio中用C#语言来引入这个函数。????????
回复 支持 反对

使用道具 举报

发表于 2009-7-10 15:10:18 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-18 23:48 , Processed in 0.039631 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表