c++      ->        pascal
unsigned short     ->     Word
char *        ->     Pchar
unsigned long       ->   LongWord
BOOL         ->      Boolean
int          ->      Integer
请问是这样对应的吗,还有一个问题
c++函数中参数void* buf  在 Pascal中是不是用  var buf ?  还是 OleVariant?

解决方案 »

  1.   

    Delphi和C++数据类型对照表Delphi        字长/值域                                C++ShortInt    8位有符号整型                          signed char
    SmallInt    16位有符号整型                        short
    LongInt      32位有符号整型                        int
    Byte        8位无符号整型                          unsigned char
    Word        16位无符号整型                        unsigned short
    Integer      32位有符号整型                        int
    Cardinal    32位无符号整型                        unsigned int
    Boolean      真/假                                  bool
    ByteBool    真/假 或 8位无符号整型                unsigned char
    WordBool    真/假 或 16位无符号整型                unsigned short
    LongBool    真/假 或 32位无符号整型                BOOL (WinAPI)
    AnsiChar    8位无符号字符                          char
    WideChar    宽字编码字符                          wchar_t
    Char        8位无符号字符                          char
    AnsiString  Delphi的字符串类                      AnsiString 类
    String[n]    老式的Delphi字符串, n = 1..255字节    SmallString<n> 模板类
    ShortString  老式的Delphi字符串, 255字节            SmallString<255>
    String      Delphi的AnsiString类                  AnsiString
    Single      32位浮点数                            float
    Double      64位浮点数                            double
    Extended    80位浮点数                            long double
    Real        32位浮点数                            double
    Pointer      32无类型指针                          void *
    PChar        32位字符型指针                        unsigned char *
    PAnsiChar    32位ANSI型字符指针                    unsigned char *
    Comp        64位浮点数                            Comp 类
    OleVariant  OLE可变类型值                          OleVariant 类http://www.xfsoft.cn/Article_Show.asp?ArticleID=333
      

  2.   

    正解void *buf delphi 有两种对应, var Buf         这个头晕点, 是通用对像引用, 也是无值, 更像 C++ void &
    Buf: Pointer    这个才是一一对应的 void * 的, 不过 delphi 强类型反而有点不好搞, Buf^ 不让的, 要转义成实际的才行 Pchar(Buf)^不过如果是 dll 导出参数而饶过 delphi 类型检查的话, 两个是一样的也就是说 
       procedure foo(var buf); external 'xxx' name 'xxx';
    和 procedure foo(buf: pointer); external 'xxx' name 'xxx';是完全等价的