2013-01-03 92 views
2

對於使用DLL,我只有可用的C頭文件。現在我將這些頭文件轉換爲Delphi接口文件。這工作得很好,直到出現有複雜的C的typedef像這樣的:將複雜的C Typedef語句轉換爲Delphi記錄

typedef struct _IFSDK_PAUSE 
    { 
    int version; 
    FPDF_BOOL (*NeedToPauseNow) (struct _IFSDK_PAUSE* pThis); 
    void*  user; 
    } IFSDK_PAUSE; 

要轉換爲:

type 
    IFSDK_PAUSE = record 

    version: Integer; 

    pThis: <----- Problem!!! 

    user: Pointer; 
    end 

如何正確地轉換這些複雜的類型定義?

+0

這是指向函數的指針,它返回'FPDF_BOOL'並且有一個類型爲'struct _IFSDK_PAUSE *'的參數' –

回答

7

這是一個函數指針。它收到一個指向結構的指針,並返回FPDF_BOOL。據推測,由於沒有指定調用約定,所以默認調用約定cdecl適用。

有了這些信息,你會轉化爲德爾福這樣的:

type 
    PIFSDK_PAUSE = ^IFSDK_PAUSE; 
    TNeedToPauseNow = function(pThis: PIFSDK_PAUSE): FPDF_BOOL; cdecl; 
    IFSDK_PAUSE = record 
    version: Integer; 
    NeedToPauseNow: TNeedToPauseNow; 
    user: Pointer; 
    end; 

注意,不像C,一個Delphi程序類型是隱含的指針。