Пара вопросов по портированию

Вопросы программирования и использования среды Lazarus.

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

Ответить
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Пара вопросов по портированию

Сообщение Attid »

в общем из дельфи перетаскиваю проэктик есть следующие проблемки :

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

type
  TSymbol = Byte;

/****/
function TRList.GetSymbol(ix: Integer): TSymbol;
begin
  Result := TSymbol(Objects[ix]);
end;
/****/

Error: Illegal type conversion: "TObject" to "Byte"


кто виноват и как выкрутится.

ЗЫ. зачем и почему так сделано я не знаю, мне надо портировать с минимальным изменением.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

а что это такое - Objects[ix]?
если сождежит Pointer-ы (судя по ошибке)
то приведи их сначала к типу Integer - это будет совпадать по размеру
а потом от integer-a бери младший байт -
но вобщей такой код - наивернейший путь к глюкам
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Наверное надежнее к PtrUInt:
Result := PtrUInt(Objects[ix]);
Уж к байту компилятор сам должен додуматься привести...
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

он баутики содержит, циферки.
сделал пока так

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

Result := TSymbol(Integer(Objects[ix]));


вроде работает.
Ответить