1、求下面VC中数据类型在Delphi中的对应类型~------------------------------------------------
VC中数据类型             Delphi中对应数据类型ATOM
BOOL
BYTE
CHAR
COLORREF
DWORD
Windows句柄
INT, UINT
LONG
LPARAM
LPDWORD
LPINT, LPUINT
LPRECT
LPSTR, LPCSTR
LPVOID
LPWORD
LRESULT
NULL
SHORT
VOID
WORD
WPARAM
--------------------------------------------------
======================================
2、Delphi中的数据类型有什么特殊处?比如说字符串类型有哪些?及其特殊处~或者整形~参考上面提供的VC中的类型(或其它特殊类型)~
======================================
3、Delphi中函数调用约定有哪些?与VC中的__cdecl、__stdcall相同么?如不同有哪些区别?

解决方案 »

  1.   

    1.void这种东西不存在外,NULL看具体情况用0或nil替换,其它均可直接用,VCL中也定义了它们
    2.只有string比较特殊,因为MFC没有此类东西,编译器级的支持让它使用方便又很有效率.
    3.一样,没有__前缀,无区别
      

  2.   

    LPVOID用Pointer代替声明无类型变量变量后面什么都不写就行了
      

  3.   

    VC与Delphi之间动态链接库互相调用Delphi 调用VC的DLLVC中DLL声名格式: 
    Extern “C” void __declspec(dllexport) __stdcall ShowMess(HWND hwnd, char* mess);输出格式为:_ShowMess@8,“8”为函数参数字节数为了避免名称分裂,可采用以下方法解决:1.声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl。2.在VC工程中添加def文件,如:LIBRARYEXPORTSShowMess @1则DLL中输出函数名称不分裂。Delphi中调用格式: 
    Procedure ShowMess (h:HWND; mess:PChar); Stdcall;{Cdecl;} external LibName;如无Stdcall或Cdecl声名,Delphi默认Register(FastCall)调用格式。注意Delphi与VC的对齐格式不同,在VC中定义结构时要用以下格式: 
    #pragma pack(4)//结构定义#pragma pack()常用工具: 
    TDump.exe-Delphi 4 和 C++ Builder 3 提供Impdef.exe 和 Implib.exe - C++ Builder 3提供DumpBin.exe-VC5.0提供Lib.exe-VC5.0提供VC调用Delphi的DLLDelphi中的声名格式: 
    Function ShowDialog( hMainWnd:THandle; Msg:PChar ):integer; stdcall;输出到Dll文件中时,名称不分裂。VC中的调用格式: 
    extern "C" __declspec(dllimport) int __stdcall ShowDialog( HWND hwnd,char* Msg );.如带有__stdcall,则要求Lib文件中对应函数名称分裂,可有以下步骤生成Lib文件:.用Impdef.exe生成def文件,格式为:Impdef def文件名 dll文件名.手工调制def文件参数,如ShowDialog改为ShowDialog@8.用Lib.exe生成lib文件,格式为:Lib /def:def文件名.如声名中无__stdcall,默认调用格式仍为stdcall,但不要求名称分裂,用以下批处理文件MkLib.bat可生成Lib文件:@echo offif %1.==. goto errorimpdef %1.def %1.dlllib /def:%1.defgoto end:errorecho Usage: MkLib DllNameecho Note: Don't add extension ".dll" to parameter "DllName":end
      
      

  4.   

    哦,这个么?<<Delphi开发人员指南>><<Delphi精要>>中有详细的使用说明!
      

  5.   

    Delphi和它的孪生兄弟BCB数据类型映射得非常好,
    楼主不妨看看BCB的帮助
    再在BCB和VC中建立映射关系.
    我这个电脑上没装BCB,不好意思.
    不能帮你^CV中来了.
      

  6.   

    早上起来,看到这份300分的贴,有点精神我也来补充补充
    1、求下面VC中数据类型在Delphi中的对应类型~------------------------------------------------
    VC中数据类型             Delphi中对应数据类型   所在单元ATOM                     TAtom                  Windows
    BOOL                     Boolean, ByteBool      System
    BYTE                     Byte                   System
    CHAR                     Char                   System
    COLORREF                 COLORREF, TColorRef    Windows
    DWORD                    LongWord / DWORD       System/Windows
    Windows句柄              THandle / THandle      System/Windows
    INT                      Integer                System
    UINT                     UINT / Cardinal        Windows/System
    LONG                     LongInt                System
    LPARAM                   LPARAM / LongInt       Windows/System
    LPDWORD                  LPDWORD                Windows
    LPINT, LPUINT            PINT / PUINT           Windows
    LPRECT                   PRect                  Windows/Types
    LPSTR, LPCSTR            LPSTR / LPCSTR         Windows
    LPVOID                   Pointer                System
    LPWORD                   PWord                  System
    LRESULT                  LResult / LongInt      Windows/System
    SHORT                    SHORT / SmallInt       Windows/System
    WORD                     Word                   System
    WPARAM                   WPARAM / LongInt       Windows / System
    ------------------------------
    NULL                     用于指针是nil          System
                             用于字符串时是''
                             用于Variant时Null      (D5)System/(D6,7)Variant
    ------------------------------
    VOID                     声明过程时
         c syntax:
             void p();
         pascal syntax:
             procedure p();                         用于声明指针或强制转换时
         c syntax:
             void *
         pascal syntax:
             Pointer
    --------------------------------------------------
    ======================================
    2、Delphi中的数据类型有什么特殊处?比如说字符串类型有哪些?及其特殊处~或者整形~参考上面提供的VC中的类型(或其它特殊类型)~Delphi中的集合类型,c没有直接的对应物Delphi中的shortint对应于c的signed char
              byte 对应于c的unsigned char
              char 对应于c的charDelphi中的Boolean/WordBool/LongBool
       True值为1
    与VC不同的bool不同Delphi中的字符串,
      1. short string         ansi字符串,长度最大255,索引0为长度字节,无NULL结尾
      1. ansi string          ansi字符串,长度最大max int,生存期自管理对象,不能使用
                              索引0检索字符串长度,必须使用Length(),总是以NULL结尾,
                              使用了reference counted和copy on write技术。
      2. wide string          unicode字符串,长度最大(max int)/2,除了没有使用
                              reference counted 和copy on write 技术外,其他同
                              ansi string
      3. c style string       同c的字符串======================================
    3、Delphi中函数调用约定有哪些?与VC中的__cdecl、__stdcall相同么?如不同有哪些区别?
       Delphi中支持的调用约定Directive  Parameter order bc/vc对应物
    register   Left-to-right __fastcall(类似,但不兼容vc,
                                         Delphi顺序使用eax,edx,ecx,
                                         vc顺序使用ecx,edx,
                                         vc的param order是right->left)
    pascal   Left-to-right (__far) __pascal(vc已经废弃这种调用约定)
    cdecl   Right-to-left __cdecl (无可变参数特征)
    cdecl; varargs;             __cdecl (可变参数特征,但仅用于连接
                                        borland object文件的external声明)
    stdcall   Right-to-left __stdcall
    safecall   Right-to-left (无)注,
      1.Delphi默认调用约定是regsiter
      2.类方法及类对象方法的调用约定与vc恒不同,
        Delphi把this(self)储存在eax,vc储存在ecx
      3.Delphi计算参数的次序与传递参数的次序无关
    不对的地方请指正
      

  7.   

    俺是用VC的~Delphi已经通了6窍~。。
      

  8.   

    啊哦
    调用约定的问题。
    默认是regsiter~不是__stdcall?
    偶以前一直以为是__stdcall。。