![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
C to pascal [D5, WinXP]
angvelem © (2008-12-11 01:23:00)Помогите с преобразованием на 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; //!!!
и эти два куска. Нужны отмеченные строки, весь остальной исходный код я перевёл.
clickmaker (2008-12-16 11:01:00) [1]> P.S. С++ - говённый язык.
о, давно не холиворили
начнем-с? )
DevilDevil (2008-12-16 10:01:00) [2]
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. С++ - говённый язык.
Palladin (2008-12-16 09:27:00) [3]buf:String
Ort (2008-12-16 08:38:00) [4]freemb, totalmb: double;
buf: Array [1..MAX_PATH] of char;
второй не понял вопрос
Anatoly Podgoretsky (2008-12-15 21:47:00) [5]Какого типа freemb , totalmb
Почему float
Ort (2008-12-15 21:33:00) [6]эм я не ровно с двоеточием имел ввиду просто кода тут набирал случайно опечатался
Anatoly Podgoretsky (2008-12-15 21:30:00) [7]
> непонял
Я тебе привел правильный синтаксис.
Ort (2008-12-15 21:03:00) [8]Anatoly Podgoretsky
непонял
Ort (2008-12-15 21:03:00) [9]
> sprintf(buf,"%.1lf Мб из %.1lf Мб свободно", freemb , totalmb
> );столкнулся с проблемой...приведите аналогию на паскале
> пожулустаbuf := Format('%.1lf Мб из %.1lf Мб свободно',
> [freemb , totalmb] );пробовал так..не соответсвтие типов
> строка массив(((
Anatoly Podgoretsky (2008-12-15 21:00:00) [10]> Ort (15.12.2008 20:37:08) [8]
:=
Ort (2008-12-15 20:37:00) [11]
sprintf(buf,"%.1lf Мб из %.1lf Мб свободно", freemb , totalmb );
столкнулся с проблемой...приведите аналогию на паскале пожулуста
buf : = Format('%.1lf Мб из %.1lf Мб свободно', [freemb , totalmb] );
пробовал так..не соответсвтие типов строка массив(((
angvelem (2008-12-13 02:01:00) [12]Бузина высохла, дядька уехал.
Это место я исправил. Осталась только одна ошибка, но думаю и с ней справлюсь.
Германн (2008-12-13 01:22:00) [13]
> angvelem (13.12.08 00:21) [5]
>
> Это значит, что компилятор выдаёт ошибку:
> Incompatible types: 'Integer' and 'PDispIDList' и это в
> общем то правильно. Но как исправить?
>
Бузина в огороде, а в Киеве дядька. Покажи место в твоих сообщениях, где упоминается PDispIDList.
angvelem (2008-12-13 00:21:00) [14]Это значит, что компилятор выдаёт ошибку:
Incompatible types: 'Integer' and 'PDispIDList' и это в общем то правильно. Но как исправить?
clickmaker (2008-12-12 11:57:00) [15]что значит "не проходят"?
angvelem (2008-12-11 23:59:00) [16]to MBo, to clickmaker
Если бы указанные Вами варианты прошли, мне не пришлось бы задавать вопрос. Увы, я это пробовал сразу, не проходят.
clickmaker (2008-12-11 13:20:00) [17]> 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;
MBo (2008-12-11 07:45:00) [18](IOleInPlaceFrame *)this
это приведение типа(кастинг)
IOleInPlaceFrame(this)
или
this as IOleInPlaceFrame