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

Вниз

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

Наверх




Память: 0.5 MB
Время: 0.011 c
15-1256243411
Юрий
2009-10-23 00:30
2009.12.20
С днем рождения ! 23 октября 2009 пятница


1-1229363181
mm_ash
2008-12-15 20:46
2009.12.20
Package InitUnit Table Bug


2-1257157663
Сергей
2009-11-02 13:27
2009.12.20
Как передать данные в CRReport.PrintOut


1-1229839894
VoyagerEternal
2008-12-21 09:11
2009.12.20
Проблема организации кода из нескольких модулей


15-1256107117
TIF
2009-10-21 10:38
2009.12.20
facebook обладает ИИ?