Преобразование типов и ppcrossx64.exe

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
_SAA
незнакомец
Сообщения: 3
Зарегистрирован: 11.11.2008 13:21:11

Преобразование типов и ppcrossx64.exe

Сообщение _SAA »

Помогите новичку. Хочу попробовать откомпилить небольшой проект под win64.
Использую ppcrossx64.exe.
Наблюдаю ошибки на преобразовании типов записей, например, в SqlTimSt.pas

Код: Выделить всё

procedure TSQLTimeStampVariantType.Clear(var V: TVarData);
begin
  V.VType := varEmpty;
  FreeAndNil(TSQLTimeStampVarData(V).VDateTime); <- тут выдает ошибку
end;

SqlTimSt.pas(438,14) Error: Illegal type conversion: "<record type>" to "<record type>"

и таких мест много.
Пробовал преобразовывать через указатели, получается:
SqlTimSt.pas(438,14) Error: Illegal type conversion: "^untyped" to "<record type>"

Что не так делаю?
Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

TVarData <> TSQLTimeStampVarData для x64.
_SAA
незнакомец
Сообщения: 3
Зарегистрирован: 11.11.2008 13:21:11

Сообщение _SAA »

аааа, понятно. ну тогда это надолго...
А где можно почитать про перевод на 64бит. В частности про соответствие типов данных. ну и вообще ?
Спасибо.
Аватара пользователя
*vmr
постоялец
Сообщения: 168
Зарегистрирован: 08.01.2007 00:46:07
Откуда: Киев
Контактная информация:

Сообщение *vmr »

Посмотрите, для начала, что из себя представляют TSQLTimeStampVarData и TVarData. А там уже видно будет...
_SAA
незнакомец
Сообщения: 3
Зарегистрирован: 11.11.2008 13:21:11

Сообщение _SAA »

с ними я уже быстро разобрался. Сейчас застрял на variants.pas, activeX.pas (он почему-то в виде activeX.ppu неполный), comobj.pas ... (есть подозрение что этот этап будет непреодолимым)
Кстати, заметил что компилятор часто выдает identifier not found несмотря на то, что в uses указан модуль, где этот идентифаер следовало бы поискать. Т.е. как-то странно обходит модули. Это что-то не указано в параметрах ?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Скорее всего этот идентификатор описан внутри деректив вида

Код: Выделить всё

{$IFDEF WIN32}
...
{$ENDIF}

И он соответственно в коде для 64 разрядной системы виден не будет.
Ответить