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

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

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

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

Сообщение McLion » 22.12.2019 17:55:08

Всем привет,

в 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


Большое спасибо!
Аватара пользователя
McLion
постоялец
 
Сообщения: 316
Зарегистрирован: 06.02.2015 18:41:00

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

Сообщение Awkward » 22.12.2019 18:14:36

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

так будет правильнее. Ну и под виндой это будет аналогично типу THandle
Awkward
новенький
 
Сообщения: 25
Зарегистрирован: 19.01.2017 00:06:47

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

Сообщение McLion » 22.12.2019 18:36:27

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


Хм... что же это может значить? С NativeUInt за место TThreadID та же петрушка.
Аватара пользователя
McLion
постоялец
 
Сообщения: 316
Зарегистрирован: 06.02.2015 18:41:00

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

Сообщение Vadim » 22.12.2019 19:43:30

McLion
А если, как компилятор и просит, ThreadId сделать типа QWord?
Vadim
долгожитель
 
Сообщения: 3857
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Awkward » 22.12.2019 20:13:42

Слишком мало кода, чтоб сказать с уверенностью, в чём дело. Но замена TThreadId на QWord вряд ли поможет.
Awkward
новенький
 
Сообщения: 25
Зарегистрирован: 19.01.2017 00:06:47

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

Сообщение McLion » 22.12.2019 20:37:32

Установил Lazarus 32bit и все пошло как по маслу!!!!
Но все равно спасибо за советы! :D
Аватара пользователя
McLion
постоялец
 
Сообщения: 316
Зарегистрирован: 06.02.2015 18:41:00

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

Сообщение Vadim » 23.12.2019 06:13:55

Из недр FPC: :)
Код: Выделить всё
{$ifdef CPU64}
  THandle = QWord;
{$else CPU64}
  THandle = DWord;
{$endif CPU64}
  TThreadID = THandle;
Vadim
долгожитель
 
Сообщения: 3857
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 6

Рейтинг@Mail.ru