Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.013 c
1-1156172149
Fay
2006-08-21 18:55
2006.10.01
THintWindow.CalcHintRect


3-1154322875
yaral
2006-07-31 09:14
2006.10.01
LoadFromStream FIB Plus


1-1155809011
harisma
2006-08-17 14:03
2006.10.01
Вызов метода предка класса минуя непосредственного предка.


1-1156165096
laurely
2006-08-21 16:58
2006.10.01
Работа с тонким клиентом


9-1136550582
кобзон
2006-01-06 15:29
2006.10.01
Вопрос по DirectX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский