Страница 1 из 1

Ошибка компиляции TObject в Combobox

СообщениеДобавлено: 08.01.2024 21:39:04
dalfy
После установки Lazarus 3.0 перестал компилироваться код
Код: Выделить всё
ComboBox1.AddItem(SQLQuery1.FieldByName('NAME').AsString,
    TObject(SQLQuery1.FieldByName('ID').AsInteger));

Говорит, мол, TObect и integer не совместимы. Хотя в версии 3.0 RC2 всё компилировалось и запускалось.
В чём может быть дело? В опубликованных изменениях к версии 3.0 ничего не говорится.

Re: Ошибка компиляции TObject в Combobox

СообщениеДобавлено: 08.01.2024 21:55:35
Снег Север
Предполагаю, что это - один из вариантов частой проблемы фрипаскаля на 64х битных ОС. Попробуйте привести ваш integer к int64.

Re: Ошибка компиляции TObject в Combobox

СообщениеДобавлено: 09.01.2024 02:32:36
Alex2013
Код: Выделить всё
Type
  tSR_Record=Record
    Name:String;
    BaseUrl:String;
    MirorList:String;
    PageList :String;
    NfScript:String;
    FCurent:Boolean;
  end;
  pSR_Record=^tSR_Record;

Var SR:pSR_Record;
...
New (SR);
...
  ListBox1.AddItem( SR^.Name,TObject(SR));
...

Так работает всюду. :idea: То есть нужно использовать ссылку на переменную

Re: Ошибка компиляции TObject в Combobox

СообщениеДобавлено: 09.01.2024 10:33:23
Alexx2000
Код: Выделить всё
TObject(PtrInt(SQLQuery1.FieldByName('ID').AsInteger))

Re: Ошибка компиляции TObject в Combobox

СообщениеДобавлено: 09.01.2024 19:55:18
dalfy
Alex2013 писал(а):New (SR);

Что-то не получилось с простым integer.

Это сработало:
Снег Север писал(а):привести ваш integer к int64

и
Alexx2000 писал(а):PtrInt(...)

одно и тоже, но PtrInt более универсален, т.к. зависит от компилятора (определяется дефайнами).

Благодарю за помощь!