-
reqyz (11.02.11 13:00) [0]
-
Palladin © (13.02.11 12:44) [1]а пацаловат?
-
clickmaker © (14.02.11 15:09) [2]> (*reinterpret_cast<void***>(Surf))
почему не 5 звездочек? -
han_malign (14.02.11 18:36) [3]
> почему не 5 звездочек?
- чем вам не угодил указатель на массив указателей? -
! (14.02.11 18:37) [4]
> void *pFlip = (*reinterpret_cast<void***>(Surf))[11];
> ptrdiff_t pDDSFlipDiff = reinterpret_cast<ptrdiff_t>(pFlip)
> - reinterpret_cast<ptrdiff_t>(GetModuleHandle(_T("ddraw.
> dll")));
динамическое приведение типов
pFlip указатель без определения конкретного типа, видимо в дельфе это будет pointer
ptrdiff_t - некоторый тип, скорее всего определенный непосредственно в коде, а не в сторонней библиотеке.
Соответственно определяешь переменные:
Var
pFlip : Pointer;
pDDSFlipDiff : ptrdiff_t; // соответственно в дельфе должен быть такой тип :-)
а далее нужно сделать приведение типов
Surf к pFlip
а вторая строка бред какой-то :-)
в первой я так понимаю берут указатель на поверхность, а вот зачем во второй вычитают из этого указателя хандл модуля? :-( -
DiamondShark © (18.02.11 11:43) [5]По-моему, такой язык не имеет права существовать.
-
han_malign (18.02.11 14:14) [6]
> По-моему, такой язык не имеет права существовать.
- а такой?
typedef void *pointer;
typedef pointer pointer_array_t[]; /*хотя вот это - согласен - не очень логично выглядит*/
typedef pointer_array_t *pointer_array_p;
pointer pFlip = (*reinterpret_cast<pointer_array_p>(Surf))[11]; -
DiamondShark © (18.02.11 15:41) [7]__исходный* код() (н_е) должен<быть_похож>[на]->вывод*испорченного_телетайпа, подключённого<<к (зашумлённой)линии с *плохо_синхронизированной частотой;
-
KSergey © (18.02.11 15:47) [8]> DiamondShark © (18.02.11 11:43) [5]
Есть просто криворукие программисты
Побуквенно перевести на дельфи - выйдет ничуть не лучше. -
han_malign (18.02.11 16:15) [9]
> Побуквенно перевести на дельфи - выйдет ничуть не лучше.
- нееe - в Паскале таки придется описать тип косвенной ссылки на указатель, либо таки честно развернуть разадресацию...pp:= PPointer(surf)^;
inc(pp, 11);
pFlip:= PPointer(pp)^;
- такой вот дядя Вирт зануда - специально ведь так сделал... -
KSergey © (18.02.11 17:00) [10]> han_malign (18.02.11 16:15) [9]
Можно более полный пример с типами и т.д.?
Не понимаю где проблема написать типа
:= Pointer(PPointer(surf)^ + 11);