Не могу разобраться с ошибкой

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

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

Ответить
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Не могу разобраться с ошибкой

Сообщение McLion »

Всем привет,

в Lazarus 1.6 все отлично работало, но вот Lazarus 2.06 выдает такую ошибку:
main.pas(550,116) Error: Call by var for arg no. 6 has to match exactly: Got "LongWord" expected "QWord"


Что тут поменяли, и как мне исправить ошибку?
Вот соответствующий код:

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

procedure TMainForm.PlayStation(Sender: TObject);
var
  ThreadId: Cardinal;
  lvstreamurlfav, lvstreamurlfix: String;
begin
  RepeatPlayTimer.Enabled := True;

  StrPCopy(proxy, SettingsForm.ProxyEdit.Text); // copy the Servertext to the Proxy array

  if (cthread <> 0) then
    //MessageBeep(0);
  else
  begin
    if Sender = FavListView then
      cthread := BeginThread(nil, 0, @OpenStationURL, PAnsiChar(favstations[FavListView.ItemIndex, 2]), 0, ThreadId) <<<---- Вот тут выдает эту ошибку
    else if Sender = FixListView then
      cthread := BeginThread(nil, 0, @OpenStationURL, PAnsiChar(fixstations[FixListView.ItemIndex, 2]), 0, ThreadId)
    else if Sender = PlayBitBtn then // Letzten abgespielten Sender wiedergeben
    begin


Большое спасибо!
Awkward
новенький
Сообщения: 53
Зарегистрирован: 18.01.2017 23:06:47

Сообщение Awkward »

Если компиляция под 64 бита (похоже на то), то как вариант, просто заменить
ThreadId: Cardinal;
на что-то типа
ThreadId:TThreadID;

так будет правильнее. Ну и под виндой это будет аналогично типу THandle
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Да, пошло, спасибо!
Компиляция тоже прошла без ошибок, но вот прога не стартует, вот что выходит.
Программу не удалось успешно запустить (0x000007b). Нажмите на ОК, что бы закрыть прогу.


Хм... что же это может значить? С NativeUInt за место TThreadID та же петрушка.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

McLion
А если, как компилятор и просит, ThreadId сделать типа QWord?
Awkward
новенький
Сообщения: 53
Зарегистрирован: 18.01.2017 23:06:47

Сообщение Awkward »

Слишком мало кода, чтоб сказать с уверенностью, в чём дело. Но замена TThreadId на QWord вряд ли поможет.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Установил Lazarus 32bit и все пошло как по маслу!!!!
Но все равно спасибо за советы! :D
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Из недр FPC: :)

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

{$ifdef CPU64}
  THandle = QWord;
{$else CPU64}
  THandle = DWord;
{$endif CPU64}
  TThreadID = THandle;
Ответить