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

Объявления констант в inc

СообщениеДобавлено: 02.01.2013 13:19:11
fpbt
Здравствуйте.

Наткнулся на проблему. В коде объявлена константа:
Код: Выделить всё

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

Re: Объявления констант в inc

СообщениеДобавлено: 02.01.2013 14:10:40
bormant
Вы собираете приложение для winCE?
Любые изменения в исходном коде RTL отразятся на компиляции только после пересборки RTL. Это действительно нужно?
Проще объявить недостающее в своем коде.

Re: Объявления констант в inc

СообщениеДобавлено: 02.01.2013 14:16:31
fpbt
bormant писал(а):Вы собираете приложение для winCE?

Нет, для win 32.
Пост подправил, не досмотрел когда копировал.