Главная страница
    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.04 c
1-1185019258
Makhanev Alexander
2007-07-21 16:00
2007.09.30
Совместимость с вистой...


2-1188907163
ArtikZ
2007-09-04 15:59
2007.09.30
time


15-1188938127
vasIZmax
2007-09-05 00:35
2007.09.30
ПО в кредит


2-1189103677
...::ExE::..
2007-09-06 22:34
2007.09.30
Реестр


1-1184536038
временный Чайник
2007-07-16 01:47
2007.09.30
Сенсорный монитор





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