Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Вниз

из C++ в Delphi непонятная мне строка. Помогите перевести.   Найти похожие ветки 

 
DVM ©   (2007-09-03 22:59) [0]

Я не особо большой знаток С/++, поэтому возник вопрос.
Есть код:

typedef struct _SHELLAPPBARDATA
{
   _SHELLAPPBARDATA(APPBARDATAV1& abdsrc):abd(abdsrc) {}

   const APPBARDATAV1& abd;
   /**/
   DWORD  dwMessage;
   HANDLE hSharedMemory;
   DWORD  dwSourceProcessId;
   /**/
} SHELLAPPBARDATA, *PSHELLAPPBARDATA;


Как записать в DELPHI строку этой записи

_SHELLAPPBARDATA(APPBARDATAV1& abdsrc):abd(abdsrc) {}


 
DVM ©   (2007-09-03 23:01) [1]

APPBARDATAV1 - это тоже структура (запись)


 
J_f_S   (2007-09-03 23:06) [2]

Сделай классом, раз в делфях не разрешены конструкторы у структур.

_SHELLAPPBARDATA(APPBARDATAV1& abdsrc):abd(abdsrc) {}
=
_SHELLAPPBARDATA(APPBARDATAV1& abdsrc)
{
   abd = abdsrc;
}


 
J_f_S   (2007-09-03 23:08) [3]

Ну и есть подозрение, что ссылку придется поменять на указатель. Насколько я помню, в дельфях ссылок нет (впрочем, с легкостью могу и наврать)


 
DVM ©   (2007-09-03 23:09) [4]


> J_f_S   (03.09.07 23:06) [2]
> Сделай классом, раз в делфях не разрешены конструкторы у
> структур.

А, так это конструктор так описывается. Тогда все ясно, спасибо за подсказку.


 
Rouse_ ©   (2007-09-03 23:12) [5]

SHELLAPPBARDATA = record
 abd: TAppBarData;
 dwMessage: DWORD;
 hSharedMemory: THandle;
 dwSourceProcessId: DWORD;
end;


 
DVM ©   (2007-09-03 23:14) [6]


> Rouse_ ©   (03.09.07 23:12) [5]

Я собственно так и написал сначала, но вот возникли сомнения, а нахрена вообще нужна та строка.


 
J_f_S   (2007-09-03 23:19) [7]


> А, так это конструктор так описывается. Тогда все ясно,
> спасибо за подсказку.

Это конструктор, да, со списком инициализации из одного элемента.


> Rouse_ ©   (03.09.07 23:12) [5]
> SHELLAPPBARDATA = record  abd: TAppBarData;  dwMessage:
> DWORD;  hSharedMemory: THandle;  dwSourceProcessId: DWORD;
> end;

В вы уверены, что элемент abd станет ссылкой, а не передастся по значению?


 
J_f_S   (2007-09-03 23:21) [8]

Все ж таки  между ссылкой на обьект и обьектом есть некоторая разница :)
Возможно, лучше сделать abd указателем.


 
DVM ©   (2007-09-03 23:21) [9]


> В вы уверены, что элемент abd станет ссылкой, а не передастся
> по значению?

А действительно. ИМХО не станет он ссылкой.


 
DVM ©   (2007-09-03 23:22) [10]


> Возможно, лучше сделать abd указателем.

я тоже так думаю.


 
Rouse_ ©   (2007-09-03 23:30) [11]

каков вопрос - таков ответ... по классике это делают как array[0..0] of TAppBarData, но я как понял что о деревяшке тут даже не идет и речи по сути вопроса...


 
evvcom ©   (2007-09-04 11:53) [12]

Сделать можно как угодно, лишь бы 4 байта заняло. А как будешь с этим работать - это уже другой вопрос. Так что

> Rouse_ ©   (03.09.07 23:30) [11]
> каков вопрос - таков ответ...


 
Mystic ©   (2007-09-04 12:07) [13]

По хорошему надо было бы писать:


typedef struct _SHELLAPPBARDATA
{
  explicit _SHELLAPPBARDATA(APPBARDATAV1& abdsrc):abd(abdsrc) {}
....  
} SHELLAPPBARDATA, *PSHELLAPPBARDATA;


а так надо быть внимательным, возможно неявное преобразование от APPBARDATAV1& к  _SHELLAPPBARDATA



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.046 c
15-1188494431
Bad_B
2007-08-30 21:20
2007.09.30
Жаворонки и совы(эксперимент)


15-1188303996
data
2007-08-28 16:26
2007.09.30
собираемся покупать мебель для кухни, кто покупал недавно?


2-1188545064
_Iv_
2007-08-31 11:24
2007.09.30
Массив и ресурсы(*.res)


3-1180074247
RomanH
2007-05-25 10:24
2007.09.30
Открыть XLS, как DataSet


6-1170156869
maxistent
2007-01-30 14:34
2007.09.30
закачка/докачка по ftp/http





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский