Форум: "Прочее";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
ВнизБаг в Delphi (от 7 до 2007) с условной компиляцией Найти похожие ветки
← →
Loginov Dmitry © (2007-08-07 22:41) [0]
var
Form1: TForm1;
{$DEFINE AAA}
resourcestring
stroka1 = "Строка 1!";
stroka2 {$IFNDEF AAA} : string (или любой другой текст) {$ENDIF} = "Строка 2!";
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(stroka2);
end;
end.
Получаем:
[Pascal Error] Unit1.pas(34): E2003 Undeclared identifier: "stroka2"
если resourcestring заменить на const, то все пашет.
Если вместо ShowMessage(stroka2) вызвать ShowMessage(stroka1) то все работает нормально :)
Получается, что при использовании resourcestring в Delphi вообще нельзя разделять с помощью директив условной компиляции имя переменной и символ равно.
Вот такой вот глючечек...
← →
Reindeer Moss Eater © (2007-08-07 22:51) [1]Получается, что при использовании resourcestring в Delphi вообще нельзя разделять с помощью директив условной компиляции имя переменной и символ равно.
Нет, не получается.
← →
Loginov Dmitry © (2007-08-07 22:54) [2]> Нет, не получается.
Конечно между именем переменной и символом равно можно поставить директивы условной компиляции. Если переменная не используется, то это все даже скомпилицца.
← →
Reindeer Moss Eater © (2007-08-07 22:55) [3]Можно и не между именем и знаком равно. И все равно будет как и задумано.
← →
Loginov Dmitry © (2007-08-07 23:09) [4]> Можно и не между именем и знаком равно. И все равно будет
> как и задумано.
На самом деле я просто привел какой-то надуманный пример. Понадобилось сделать такой вот маневр (в зависимости от опции условной компиляции делать объявление через resourcestring или var), а оказывается так нельзя - баг компилятора. Я этого точно не задумывал.
← →
Loginov Dmitry © (2007-08-07 23:09) [5]На самом деле я НЕ просто привел какой-то надуманный пример
← →
Reindeer Moss Eater © (2007-08-07 23:11) [6]в зависимости от опции условной компиляции делать объявление через resourcestring или var
У тебя нарисовано все что угодно, только не это.
← →
Loginov Dmitry © (2007-08-07 23:16) [7]> У тебя нарисовано все что угодно, только не это.
Ну тогда так:
{$DEFINE UseResStr}
{$IFDEF UseResStr}
resourcestring
{$ELSE}
var
{$ENDIF}
stroka1 {$IFNDEF UseResStr} : string {$ENDIF} = "Строка 1!";
stroka2 {$IFNDEF UseResStr} : string {$ENDIF} = "Строка 2!";
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(stroka1);
end;
← →
Reindeer Moss Eater © (2007-08-07 23:23) [8]Я бы решил такое вот так
{$IFDEF AAA}
{$I ...}
{$ELSE}
{$I ...}
{$ENDIF}
← →
Loginov Dmitry © (2007-08-07 23:28) [9]Я почти также режил. В inc-файле сделал:
{$IFDEF}
resourcestring
.........
{$ELSE}
var
.........
{$ENDIF}
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c