B
Bahl
Unregistered / Unconfirmed
GUEST, unregistred user!
连载:《如何将C/C++程序转译成Delphi之二》
2 转译的基础
2.1 命名
你要转译的的头文件中的命名要尽量遵守Borland的风格。这意味着既要保持原来的名称,又要使它们更Delphi化。
怎样将C语言中的名称转译成Delphi呢?
C语言程序员喜欢类型标识符全用大写字母,如MY_TYPE。在Delphi中,一个类型标识符以T前缀开头,后跟类型名称。不要使用下划线。C语言风格的类型标识符 MY_TYPE 转译成Delphi就是TMyType。
在旧的C语言头文件中,指针类型被命名为LPMY_TYPE。应该将它转译成PMyType 以与Borland的风格保持一致。
常量的名称,包括大写字母与下划线,应与原来的一致。
下面是一些例子:
C
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
DWORD TimeDateStamp;
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;
WORD Characteristics;
} IMAGE_FILE_HEADER,
*PIMAGE_FILE_HEADER;
Delphi-Translation
type
PImageFileHeader = ^TImageFileHeader;
TImageFileHeader = packed record
Machine: Word;
NumberOfSections: Word;
TimeDateStamp: DWORD;
PointerToSymbolTable: DWORD;
NumberOfSymbols: DWORD;
SizeOfOptionalHeader: Word;
Characteristics: Word;
end;
C
#define LANG_NEUTRAL 0x00
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1C
#define LANG_ARABIC 0x01
#define LANG_BASQUE 0x2D
#define LANG_BELARUSIAN 0x23
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
Delphi-Translation
CONST
LANG_NEUTRAL = $00;
LANG_AFRIKAANS = $36;
LANG_ALBANIAN = $1C;
LANG_ARABIC = $01;
LANG_BASQUE = $2D;
LANG_BELARUSIAN = $23;
LANG_BULGARIAN = $02;
LANG_CATALAN = $03;
LANG_CHINESE = $04;
2 转译的基础
2.1 命名
你要转译的的头文件中的命名要尽量遵守Borland的风格。这意味着既要保持原来的名称,又要使它们更Delphi化。
怎样将C语言中的名称转译成Delphi呢?
C语言程序员喜欢类型标识符全用大写字母,如MY_TYPE。在Delphi中,一个类型标识符以T前缀开头,后跟类型名称。不要使用下划线。C语言风格的类型标识符 MY_TYPE 转译成Delphi就是TMyType。
在旧的C语言头文件中,指针类型被命名为LPMY_TYPE。应该将它转译成PMyType 以与Borland的风格保持一致。
常量的名称,包括大写字母与下划线,应与原来的一致。
下面是一些例子:
C
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
DWORD TimeDateStamp;
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;
WORD Characteristics;
} IMAGE_FILE_HEADER,
*PIMAGE_FILE_HEADER;
Delphi-Translation
type
PImageFileHeader = ^TImageFileHeader;
TImageFileHeader = packed record
Machine: Word;
NumberOfSections: Word;
TimeDateStamp: DWORD;
PointerToSymbolTable: DWORD;
NumberOfSymbols: DWORD;
SizeOfOptionalHeader: Word;
Characteristics: Word;
end;
C
#define LANG_NEUTRAL 0x00
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1C
#define LANG_ARABIC 0x01
#define LANG_BASQUE 0x2D
#define LANG_BELARUSIAN 0x23
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
Delphi-Translation
CONST
LANG_NEUTRAL = $00;
LANG_AFRIKAANS = $36;
LANG_ALBANIAN = $1C;
LANG_ARABIC = $01;
LANG_BASQUE = $2D;
LANG_BELARUSIAN = $23;
LANG_BULGARIAN = $02;
LANG_CATALAN = $03;
LANG_CHINESE = $04;