Конференция "Начинающим" » Перевести 3 строчки C++ -> Delphi
 
  • 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);
 
Конференция "Начинающим" » Перевести 3 строчки C++ -> Delphi
Есть новые Нет новых   [134431   +9][b:0][p:0.001]