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

Вниз

C to pascal   Найти похожие ветки 

 
angvelem   (2008-12-11 01:23) [0]

Помогите с преобразованием на Delphi этих трёх участков кода:

STDMETHODIMP CContainer::QueryInterface(REFIID riid, PVOID *ppvObject)
{
   if (IsEqualIID(riid, IID_IOleClientSite))
       *ppvObject = (IOleClientSite *)this; //!!!
   else if (IsEqualIID(riid, IID_IOleWindow))
       *ppvObject = this;
...

this понятно - заменяется на self, а предыдущая строка?

HRESULT CContainer::GetWindowContext (IOleInPlaceFrame ** ppFrame, IOleInPlaceUIWindow ** ppIIPUIWin,
                                 LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo)
{
   *ppFrame = (IOleInPlaceFrame *)this;  //!!!
...

HRESULT CContainer::GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid)
{
   *rgdispid = DISPID_UNKNOWN; //!!!

и эти два куска. Нужны отмеченные строки, весь остальной исходный код я перевёл.


 
MBo ©   (2008-12-11 07:45) [1]

(IOleInPlaceFrame *)this

это приведение типа(кастинг)

IOleInPlaceFrame(this)
или
this as IOleInPlaceFrame


 
clickmaker ©   (2008-12-11 13:20) [2]

> HRESULT CContainer::GetIDsOfNames(REFIID riid, OLECHAR FAR*
> FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR*
> rgdispid)
> {
>   *rgdispid = DISPID_UNKNOWN;


function CContainer.GetIDsOfNames(riid: REFIID; var rgszNames: PWideChar; cNames: UINT; var rgdispid: DISPID): HResult;
begin
 rgdispid := DISPID_UNKNOWN;


 
angvelem   (2008-12-11 23:59) [3]

to MBo, to clickmaker

Если бы указанные Вами варианты прошли, мне не пришлось бы задавать вопрос. Увы, я это пробовал сразу, не проходят.


 
clickmaker ©   (2008-12-12 11:57) [4]

что значит "не проходят"?


 
angvelem   (2008-12-13 00:21) [5]

Это значит, что компилятор выдаёт ошибку:
Incompatible types: "Integer" and "PDispIDList" и это в общем то правильно. Но как исправить?


 
Германн ©   (2008-12-13 01:22) [6]


> angvelem   (13.12.08 00:21) [5]
>
> Это значит, что компилятор выдаёт ошибку:
> Incompatible types: "Integer" and "PDispIDList" и это в
> общем то правильно. Но как исправить?
>

Бузина в огороде, а в Киеве дядька. Покажи место в твоих сообщениях, где упоминается PDispIDList.


 
angvelem   (2008-12-13 02:01) [7]

Бузина высохла, дядька уехал.
Это место я исправил. Осталась только одна ошибка, но думаю и с ней справлюсь.


 
Ort   (2008-12-15 20:37) [8]

sprintf(buf,"%.1lf Мб из %.1lf Мб свободно", freemb , totalmb );

столкнулся с проблемой...приведите аналогию на паскале пожулуста

buf : = Format("%.1lf Мб из %.1lf Мб свободно", [freemb , totalmb] );

пробовал так..не соответсвтие типов строка массив(((


 
Anatoly Podgoretsky ©   (2008-12-15 21:00) [9]

> Ort  (15.12.2008 20:37:08)  [8]

:=


 
Ort   (2008-12-15 21:03) [10]

Anatoly Podgoretsky
непонял


 
Ort   (2008-12-15 21:03) [11]


> sprintf(buf,"%.1lf Мб из %.1lf Мб свободно", freemb , totalmb
> );столкнулся с проблемой...приведите аналогию на паскале
> пожулустаbuf := Format("%.1lf Мб из %.1lf Мб свободно",
>  [freemb , totalmb] );пробовал так..не соответсвтие типов
> строка массив(((


 
Anatoly Podgoretsky ©   (2008-12-15 21:30) [12]


> непонял

Я тебе привел правильный синтаксис.


 
Ort   (2008-12-15 21:33) [13]

эм я не ровно с двоеточием имел ввиду просто кода тут набирал случайно опечатался


 
Anatoly Podgoretsky ©   (2008-12-15 21:47) [14]

Какого типа freemb , totalmb
Почему float


 
Ort   (2008-12-16 08:38) [15]

freemb, totalmb: double;
buf: Array [1..MAX_PATH] of char;

второй не понял вопрос


 
Palladin ©   (2008-12-16 09:27) [16]

buf:String


 
DevilDevil   (2008-12-16 10:01) [17]

function CContainer.QueryInterface(riid: REFIID; var ppvObject: pointer): STDMETHODIMP;
begin
  if (IsEqualIID(riid, IID_IOleClientSite)) then ppvObject := IOleClientSite(Self)
  else
  if (IsEqualIID(riid, IID_IOleWindow)) then ppvObject := Self;
...

function CContainer.GetWindowContext (var ppFrame: IOleInPlaceFrame; var ppIIPUIWin: IOleInPlaceUIWindow; lprcPosRect, lprcClipRect: PRect; lpFrameInfo:
LPOLEINPLACEFRAMEINFO): HRESULT;
begin
  ppFrame := IOleInPlaceFrame(Self);  //!!!
...

function CContainer.GetIDsOfNames(riid: REFIID; rgszNames{?}: PWideChar; cNames: dword{cardinal}; lcid: LCID; var rgdispid: DISPID): HRESULT
begin
  rgdispid := DISPID_UNKNOWN; //!!!
...


P.S. С++ - говённый язык.


 
clickmaker ©   (2008-12-16 11:01) [18]

> P.S. С++ - говённый язык.

о, давно не холиворили
начнем-с? )



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

Форум: "Основная";
Текущий архив: 2009.12.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1256795460
Rimdus
2009-10-29 08:51
2009.12.20
Компонент без отладки


2-1257341717
Serge
2009-11-04 16:35
2009.12.20
Как сделать программный мультиселект ListView?


1-1229610779
Denis__
2008-12-18 17:32
2009.12.20
Многочлены


15-1256145675
palva
2009-10-21 21:21
2009.12.20
Неполадки в форуме?


15-1256327662
SkyN
2009-10-23 23:54
2009.12.20
компонент простейшего dns сервера





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