C跟Delphi中类型转换的问题。 (100分)

  • 主题发起人 主题发起人 chuwenyong
  • 开始时间 开始时间
C

chuwenyong

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位富翁可以将如下结构转换为Delphi表示:
代码:
typedef struct_Client
{
    WORD    ClientNo;
    DWOWRD  ClientAge;
    CHAR    ClientSex;
    CHAR    ClientType[1];
    CHAR    ClientName[20];
    CHAR    EMAIL[256];
    time_t  Time;
    Byte    Port;
}Client,*PClient;
谢了!!
 
type
TStrunt_Client = packed record
ClientNo: Word;
ClientAge: DWord;
ClientSex: Char;
ClientType[1]: Char;
ClientName: array[0..19] of Char;
EMAIL: array[0..255] of Char;
Time: TimeStruct{需要定义};
Port: Byte;
}
 
PStruct_Client = ^TStruct_Client;
TStruct_Client = record
ClientNo: WORD;
ClientAge: DWORD;
ClientSex: CHAR;
ClientType: array[0..0] of CHAR;
ClientName: array[0..19] of CHAR;
EMAIL: array[0..255] of Char;
Time: LongInt;
Port: BYTE;
end;
 
type
struct_Client = class
ClientNo: word;
ClientAge: DWORD;
ClientSex: char;
ClientType: char;
ClientName: array[1..20] of char;
EMAIL: array[1..256] of char;
Time: Ttime;
Port: Byte;
end;
var
Client: struct_client;
Pclient: ^struct_client;
 
看了以上回复,似乎还有两个问题:
1。time_T应该不等于TTime,但是否等于Longtime呢?
2。Char aa 同 Char aa[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 类
 
还有这个,你可以对照着翻译[:)]

【附录A】Win32API与C语言数据类型对照表

Win32API C语言

HANDLE void*
BYTE unsigned char
SHORT short
WORD unsigned short
INT int
UINT unsigned int
LONG long
BOOL long
DWORD unsigned long
ULONG unsigned long
CHAR char
LPSTR char*
LPCSTR const char*
LPWSTR wchar_t*
LPCWSTR const wchar_t*
FLOAT float
DOUBLE double
 
那time_t 呢
 
对于time_t,我也没试过到底Delphi中哪个类型直接对应。
不过我建议你用TSystemtime类型,它可以直接对应C中的 SystemTime
我用过的。在结构中传递时间一般用这个,或者直接改字符串类型。
 
多人接受答案了。
 
后退
顶部