Наткнулся на проблему. В коде объявлена константа:
- Код: Выделить всё
uses
...., Windows, ...
const
GENERIC_ACCESS = GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE or GENERIC_ALL;
...
Компилятор выдаёт ошибку на "GENERIC_EXECUTE": unit1.pas(11,68) Error: Identifier not found "GENERIC_EXECUTE"
Ну это я понимаю, т.к. в файле "$(LazarusDir)\fpc\2.6.1\source\rtl\win\wininc\defines.inc" нет такого определения. Я поискал и нашел в другом файле: "$(LazarusDir)\fpc\2.6.1\source\rtl\wince\wininc\defines.inc".
Решил прописать в "$(LazarusDir)\fpc\2.6.1\source\rtl\win\wininc\defines.inc":
- Код: Выделить всё
{ CreateFile, GetFileAttributes, SetFileAttributes }
GENERIC_READ = $80000000;
GENERIC_WRITE = $40000000;
GENERIC_EXECUTE = $20000000; // <- добавил
В лазаре при наведении на GENERIC_EXECUTE стала появляться всплывающая подсказка на его значение и файл. Но при компиляции всё равно та же ошибка.
Пример:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Windows;
const
GENERIC_ACCESS = GENERIC_READ or GENERIC_WRITE or GENERIC_EXECUTE or GENERIC_ALL;
type
TForm1 = class(TForm)
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
end.
Подскажите, что и как правильно надо делать.
Lazarus-1.1-39718-fpc-2.6.1-20130102-win32.exe