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

Не компилируются программы с 2.7.1

СообщениеДобавлено: 01.02.2014 02:46:42
Sharfik
Попробовал обновить компилятор с 2.6.2 до 2.7.1. Собирал из исходников и готовый вариант откомпилированный скачивал компилятора. Все время одна и та же проблема, модули связанные с Forms не компилируются. Лог ниже. Под 2.6.2 без проблем, под 2.7.1 не моя программа не пересборка лазаруса не проходят.
Действие "Компиляция пакета FCL 1.0.1" завершено
...
C:\Lazarus\components\lazutils\winfileutil.inc(179,62) Hint: Local variable "FindData" does not seem to be initialized
C:\Lazarus\components\lazutils\winfileutil.inc(200,62) Hint: Local variable "FindData" does not seem to be initialized
C:\Lazarus\components\lazutils\winfileutil.inc(225,50) Hint: Local variable "lft" does not seem to be initialized
C:\Lazarus\components\lazutils\winfileutil.inc(304,76) Hint: Local variable "find" does not seem to be initialized
C:\Lazarus\components\lazutils\winfileutil.inc(311,37) Error: Call by var for arg no. 2 has to match exactly: Got "WIN32_FIND_DATAW" expected "WIN32_FIND_DATAA"
C:\Lazarus\components\lazutils\winfileutil.inc(263,11) Hint: Found declaration: FindWideToAnsi(const WIN32_FIND_DATAW;var WIN32_FIND_DATAA);
C:\Lazarus\components\lazutils\winfileutil.inc(331,41) Hint: Local variable "wide" does not seem to be initialized
C:\Lazarus\components\lazutils\winfileutil.inc(333,39) Error: Call by var for arg no. 2 has to match exactly: Got "WIN32_FIND_DATAW" expected "WIN32_FIND_DATAA"
C:\Lazarus\components\lazutils\winfileutil.inc(263,11) Hint: Found declaration: FindWideToAnsi(const WIN32_FIND_DATAW;var WIN32_FIND_DATAA);
C:\Lazarus\components\lazutils\fileutil.pas(253) Fatal: There were 2 errors compiling module, stopping


Код: Выделить всё
function FindFirstWide(const Path: string; Attr: Longint; out Rslt: TSearchRec): Longint;
var
  find  : TWIN32FINDDATAW;
begin
  Rslt.Name:=Path;
  Rslt.Attr:=attr;
  Rslt.ExcludeAttr:=(not Attr) and ($1e);
                 { $1e = faHidden or faSysFile or faVolumeID or faDirectory }
  { FindFirstFile is a Win32 Call }
  Rslt.FindHandle:=Windows.FindFirstFileW( PWideChar(UTF8Decode(Path)),find);
  If Rslt.FindHandle=Invalid_Handle_value then
  begin
    Result:=GetLastError;
    Exit;
  end;
  { Find file with correct attribute }
[b] FindWideToAnsi(find, Rslt.FindData);[/b]
  Result:=FindMatch(Rslt);
end; 

Re: Не компилируются программы с 2.7.1

СообщениеДобавлено: 01.02.2014 23:42:32
Максим
Возьмите Lazarus 1.2RC2.

Re: Не компилируются программы с 2.7.1

СообщениеДобавлено: 02.02.2014 02:33:25
Sharfik
Максим писал(а):Возьмите Lazarus 1.2RC2.

Максим, а когда советовал 2.7.1 поставить сразу нельзя было развернуто отвечать? Или коронный стиль отвечать обрывками, чтобы люди создавали новые темы когда рецепт не будет работать?

Re: Не компилируются программы с 2.7.1

СообщениеДобавлено: 02.02.2014 15:55:25
Максим
Sharfik писал(а):Максим, а когда советовал 2.7.1 поставить сразу нельзя было развернуто отвечать? Или коронный стиль отвечать обрывками, чтобы люди создавали новые темы когда рецепт не будет работать?

А нельзя в бутылку не лезть? ЧСВ жмёт?

Первое: я не знал, что Lazarus 1.0.14 не собирается последним FPC 2.7.1.
Второе: я не обратил внимания ранее, какую вы используете версию Lazarus, а вы это явно (в теле сообщения) не указывали.
Третье: я не нянька и не телепат, времени разжёвывать и класть в рот у меня нет. А "рецептов" я не даю, я только подсказываю, в каком направлении нужно двигаться.

Re: Не компилируются программы с 2.7.1

СообщениеДобавлено: 02.02.2014 17:46:24
Sharfik
Смотря что такое бутылка. Был бы выбор, юзал бы Delphi, но пришлось переползти сюда. А тут заморочек, столько, что ощущение, что Lazarus писали ярые ненавистники Windows.
За советы спасибо, но заколебал компилятор и UTF8 уже.

Re: Не компилируются программы с 2.7.1

СообщениеДобавлено: 03.02.2014 00:39:20
Максим
А вы относитесь позитивно к этому, и всё будет нормально.

В конце концов, да, с UTF-8 не всё реализовано элегантно, но это работает кроссплатформенно, и не самым плохим образом.

В компиляторе я не знаю, что вас колеблет. Ну есть недоделки по части исключений в DLL, уже исправленные в 2.7.1, а в целом он вполне себе OK.