powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / перевод приложения на 64 бит
6 сообщений из 56, страница 3 из 3
перевод приложения на 64 бит
    #39404205
wlx-plugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexer81т.е. если курсор отвести в сторону от тотала. то ошибка не появится, и тотал и запущенный плагин будут работать нормально.закрываться без ошибок. пока курсор мыши не появится над окном плагина

Да, все так.

Но это, так сказать, только одно из проявлений ошибки - сообщение WM_NCHITTEST.

У меня, например, также все валится при вызове метода:

Код: pascal
1.
MyPanel.ManualDock(NewMyPanel);



Кроме того на 64 битах есть проблемы (AV) c якорями.
И это уже в приложение, а не в плагине.

Вообщем, у меня пока ощущение что для Win64 в Lazarus еще много багов...
...
Рейтинг: 0 / 0
перевод приложения на 64 бит
    #39410937
alexer81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот Гислер в listplughelp2.1 пишет
авторWindows messages below WM_USER are not passed to the windows procedure. -> Use SetWindowLongPtr to subclass the window
и что в связи с этим надо изменить в коде?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
перевод приложения на 64 бит
    #39623838
alexer81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пересел на другой комп. работаю в delphi XE7 при подключении JwaWinCrypt (хоть к пустому проекту) под 32 компилится без ошибок, а под 64 ругается на
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
begin
{$ifdef CPU64}
  Result := PVOID(InterlockedExchange64(LONGLONG(Target), LONGLONG(Value)));
{$else}
 [color=red] Result := PVOID(InterlockedExchange(LONG(Target), LONG(Value)));[/color]
{$endif CPU64}
end;


пишет
[dcc64 Error] JwaWinBase.pas(6355): E2197 Constant object cannot be passed as var parameter
и такая же ругня на
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function InterlockedCompareExchangePointer(var Destination: PVOID; Exchange, Comperand: PVOID): PVOID;
begin
{$ifdef CPU64}
  Result := PVOID(InterlockedCompareExchange64(LONGLONG(Destination),
              LONGLONG(Exchange), LONGLONG(Comperand)));
{$else CPU64}
 [color=red] Result := PVOID(InterlockedCompareExchange(LONG(Destination),
    LONG(Exchange), LONG(Comperand)));[/color]
{$endif CPU64}
end;


глянул прошлый раз я эти строки просто закомментировал. может по-правильному надо по-другому исправить?
в лазарусе код выглядит также и не ругается
...
Рейтинг: 0 / 0
перевод приложения на 64 бит
    #39624137
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заменить
alexer81
Код: pascal
1.
{$ifdef CPU64}

на
Код: pascal
1.
{$ifdef CPUX64}
...
Рейтинг: 0 / 0
перевод приложения на 64 бит
    #39627048
alexer81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_, Спасибо!
...
Рейтинг: 0 / 0
перевод приложения на 64 бит
    #39725958
alexer81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по поводу wlx-plugina в Lazarus под tcmd64.
решилось заменой:
GetWindowLong -> GetWindowLongptr
и SetWindowLong(fmMain.Handle, GWL_USERDATA, PtrInt(fmMain));
на
SetWindowLong(Widgetset.AppHandle, GWL_USERDATA, PtrInt(fmMain));
...
Рейтинг: 0 / 0
6 сообщений из 56, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / перевод приложения на 64 бит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]