Ошибка при сборке (Win32)

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

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

Ошибка при сборке (Win32)

Сообщение FeLiX » 04.05.2010 14:08:46

Использую в проекте код:
Код: Выделить всё
var
  p: TPoint;
begin
  if not Assigned(FilterForm) then FilterForm := TFilterForm.Create(nil);
  FilterForm.PopupParent := SpicForm;
  p := Point(SpeedButton5.Width, SpeedButton5.Top);
  with SpeedButton5.ClientToScreen(p) do
  begin
    FilterForm.Left := X - SpeedButton5.Width;
    FilterForm.Top := (Y - FilterForm.Height) - 2;
  end;
  FilterForm.Show;

В линукс проект собирается норомально. В win же выдает ругается на строчку p := Point(SpeedButton5.Width, SpeedButton5.Top); Сообщение:
Код: Выделить всё
ChatUnit.pas(94,37) Fatal: Syntax error, ")" expected but "," found

Кто нибуть может объямнить, почему компилятор требует в win скобку после SpeedButton5.Width.
Аватара пользователя
FeLiX
новенький
 
Сообщения: 15
Зарегистрирован: 13.02.2010 16:57:20

Re: Ошибка при сборке (Win32)

Сообщение alaken » 04.05.2010 14:18:56

какая у вас версия Lazarus и FPC?
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Ошибка при сборке (Win32)

Сообщение FeLiX » 04.05.2010 16:06:13

Оу, забыл указать, первоначально был Lazarus 0.9.29 FPC 2.4.0 из Snapshots. В линукс стоит из svn, думал в этом дело, обновил до Lazarus 0.9.29 FPC 2.5.1, ошибка осталась.
Обратил внимание компилятор ругается, при использовании модуля windows.
Аватара пользователя
FeLiX
новенький
 
Сообщения: 15
Зарегистрирован: 13.02.2010 16:57:20

Re: Ошибка при сборке (Win32)

Сообщение Mr.Smart » 04.05.2010 16:12:21

Код: Выделить всё
...
  Classes.Point(SpeedButton5.Width, SpeedButton5.Top);
...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Ошибка при сборке (Win32)

Сообщение VirtUX » 04.05.2010 16:24:33

FeLiX писал(а):Обратил внимание компилятор ругается, при использовании модуля windows.

Закоментируйте его. Он под Linux не нужен.
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Ошибка при сборке (Win32)

Сообщение Mr.Smart » 04.05.2010 16:48:06

VirtUX Внимательно прочтите вопрос.
FeLiX писал(а):...
В линукс проект собирается норомально. В win же выдает ругается на строчку p := Point(SpeedButton5.Width, SpeedButton5.Top);
...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Ошибка при сборке (Win32)

Сообщение FeLiX » 04.05.2010 16:53:55

И что? Это для кросс проекта. Использую {$IFDEF WINDOWS},windows {$ENDIF};
Код: Выделить всё
  {$IFDEF WINDOWS}
   SetWindowLong(Handle, GWL_HWNDPARENT, 0);
   SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
   {$ENDIF} 

Если бы не этот отказался быот этого модуля.
Как еще можно сделать другую форму не зависимой от главной. Что бы при сворачивании главной другая оставалась и наоборот.
В линукс это не нужно. А вот виндовс приходится.
Аватара пользователя
FeLiX
новенький
 
Сообщения: 15
Зарегистрирован: 13.02.2010 16:57:20

Re: Ошибка при сборке (Win32)

Сообщение VirtUX » 04.05.2010 18:45:47

Mr.Smart писал(а):Внимательно прочтите вопрос.

Ях!.. Сорри. :oops:
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Ошибка при сборке (Win32)

Сообщение alaken » 04.05.2010 19:32:12

чтото похожее было, так и не смог победить
проверьте в исходном коде проекта нет ли лишних подключенных модулей... (Проект-Посмотреть исходный код проекта)

пробовали как советовал Mr.Smart на прямую вызвать из модуля метод?

Код: Выделить всё
Classes.Point(SpeedButton5.Width, SpeedButton5.Top);


как вариант костыль

Код: Выделить всё
var
  p: TPoint;
begin
  if not Assigned(FilterForm) then FilterForm := TFilterForm.Create(nil);
  FilterForm.PopupParent := SpicForm;

  p.X := SpeedButton5.Width;
  p.Y := SpeedButton5.Top;

  with SpeedButton5.ClientToScreen(p) do
  begin
    FilterForm.Left := X - SpeedButton5.Width;
    FilterForm.Top := (Y - FilterForm.Height) - 2;
  end;
  FilterForm.Show;
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Ошибка при сборке (Win32)

Сообщение FeLiX » 04.05.2010 20:24:21

Раньше не упсел проверить.
Вот это
Код: Выделить всё
Classes.Point(SpeedButton5.Width, SpeedButton5.Top);

Работает. Спасибо...
Аватара пользователя
FeLiX
новенький
 
Сообщения: 15
Зарегистрирован: 13.02.2010 16:57:20

Re: Ошибка при сборке (Win32)

Сообщение Vadim » 05.05.2010 03:24:11

FeLiX
Поменяйте местаами, в строке Uses, модули Classes и Windows. Модуль, что стоит на втором месте, перекрывает модуль, который стоит на первом месте. Либо, если одинаковых названий из того и другого модуля много и используются они с равной степенью вероятности, используйте уточнение названия, как предложил Mr.Smart, т.е. перед названием функции ставьте название модуля.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru