Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Внизперевести тип с С++ на Delphi Найти похожие ветки
← →
ph0sgen © (2006-09-14 20:22) [0]Доброго времени суток, уважаемые мастера.
у меня такой вопрос:
необходимо перевести на Delphi следующее:
typedef struct _DnsRecord
{
struct _DnsRecord * pNext;
LPTSTR pName;
WORD wType;
WORD wDataLength;
union
{
DWORD DW;
DNS_RECORD_FLAGS S; // flags as structure
} Flags;
DWORD dwTtl;
DWORD dwReserved;
// Record Data
union
{
DNS_A_DATA A;
DNS_SOA_DATA SOA, Soa;
DNS_PTR_DATA PTR, Ptr,
NS, Ns,
CNAME, Cname,
MB, Mb,
MD, Md,
MF, Mf,
MG, Mg,
MR, Mr;
DNS_MINFO_DATA MINFO, Minfo,
RP, Rp;
DNS_MX_DATA MX, Mx,
AFSDB, Afsdb,
RT, Rt;
DNS_TXT_DATA HINFO, Hinfo,
ISDN, Isdn,
TXT, Txt,
X25;
DNS_NULL_DATA Null;
DNS_WKS_DATA WKS, Wks;
DNS_AAAA_DATA AAAA;
DNS_KEY_DATA KEY, Key;
DNS_SIG_DATA SIG, Sig;
DNS_ATMA_DATA ATMA, Atma;
DNS_NXT_DATA NXT, Nxt;
DNS_SRV_DATA SRV, Srv;
DNS_TKEY_DATA TKEY, Tkey;
DNS_TSIG_DATA TSIG, Tsig;
DNS_WINS_DATA WINS, Wins;
DNS_WINSR_DATA WINSR, WinsR, NBSTAT, Nbstat;
} Data;
}
DNS_RECORD, *PDNS_RECORD;
благодарю за внимание.
← →
Delf © (2006-09-15 09:16) [1]Интересно где такая жуть водится?
:-)
← →
Сергей М. © (2006-09-15 09:41) [2]
> ph0sgen
А в чем проблема ?
← →
han_malign © (2006-09-15 09:46) [3]
union
{
DWORD DW;
DNS_RECORD_FLAGS S; // flags as structure
} Flags;
- придется описать отдельным типом, т.к. в Delphi объединение можно определять только в конце рекорда.type
TFlags = packed record
case byte of
0: (DW: DWORD);
1: (S: DNS_RECORD_FLAGS);
end;
union{}Data - можно реализовать прямо в целевом record-е, но для сохранения доступа вида rec.Data.WinsR - тоже лучше отдельным типом..
ссылка на "самого себя" делается форвардным объявлением типа(специально для таких случаев было сделано исключение из правил для однопроходного компилятора)type
PDNS_RECORD = ^DNS_RECORD;//DNS_RECORD - форвардная ссылка - должно быть в одной секции type с полным описанием типа
DNS_RECORD = packed record
pNext: PDNS_RECORD;
..................
Flags: TFlags;
..................
LPTSTR - придется делать рукамиtype
{$IFDEF UNICODE}
LPTSTR = PWideChar;
{$ELSE}
LPTSTR = PChar;
{$ENDIF}
{$DEFINE UNICODE} - тоже надо прописывать самому - в Delphi таких глобальных переключателей нет...
Хотя - можно, ничтоже сумняшеся, описать как PChar и где(если) надо привести к PWideChar (указатель он и в Африке указатель)...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.017 c