Форум: "Основная";
Текущий архив: 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