Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

из 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
2-1188815758
KJ13
2007-09-03 14:35
2007.09.30
Аудио фаил в exe


9-1161181131
cxvxc
2006-10-18 18:18
2007.09.30
Создать окно которое было бы всегда поверх других?


15-1187901409
ortodox
2007-08-24 00:36
2007.09.30
Учебники и движки


1-1184745100
Dr. Andrew
2007-07-18 11:51
2007.09.30
Как создать WordWrap для длинной строки?


1-1184934235
Mitrofan
2007-07-20 16:23
2007.09.30
Отладка нитей в Delphi