Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
ВнизUndeclared identifier в функциях, процедурах Найти похожие ветки
← →
Arch-vile (2003-04-23 00:07) [0]На вот этот код:
function Levell(const Flag: integer):integer;
begin
case Level of
8:case flag of
1:result:=3;
2:result:=25;
3:Action2.Execute;
4:Action5.Execute;
end;
15:case flag of
1:result:=4;
2:result:=150;
3:Action3.Execute;
4:Action6.Execute;
end;
24:case flag of
1:result:=5;
2:result:=1000;
3:Action4.Execute;
4:Action7.Execute;
end;
end;
end;
выдает ошибки
Undeclared identifier: Action2,Action3,etc
Как можно исправить? Объявление в классе TForm1 не помогает :(
← →
Anatoly Podgoretsky (2003-04-23 00:25) [1]Видимо так и есть. У тебя есть такие переменные Action2, Action3 - именно пересенные должного типа?
Видимо нет.
← →
Вот (2003-04-23 03:51) [2]вертится в голове - "Variable "Self" is unaccessible due to optimization"
Почему вертится - сам не знаю. То ли перепил, то ли перетрудился при отладке.
Функция "Levell", судя по приведенному коду, не "привязана" ни к какому классу. Это не есть ошибка. Это вполне нормально. Но в ее теле упоминаются некие Action"ы. Такое их упоминание годится только если последние "не привязаны" к некоему классу. В противном случае требуется конкретная "привязка" типа -3:MyForm.Action2.Execute;
← →
DarkGreen (2003-04-23 07:55) [3]А область видимости этих переменных?
Ты их в TForm"е объявляешь? Если да, то в функции:
3:TForm1.Action2.Execute;
4:TForm1.Action5.Execute;
← →
Separator (2003-04-23 08:09) [4]Пориведи их объявление
← →
Palladin (2003-04-23 08:24) [5]
> Объявление в классе TForm1 не помогает
> :(
1 в TForm1 у тебя их (Action) нет, если б были - помогло
2 ты не правильно объявляешь
← →
Reindeer Moss Eater (2003-04-23 08:56) [6]function Levell(const Flag: integer):integer;
Эта функция - не член класса TForm1. Поэтому она ничего не знает про Action1, Action2
← →
Alexey Bednov (2003-04-23 09:19) [7]
> Ты их в TForm"е объявляешь? Если да, то в функции:
> 3:TForm1.Action2.Execute;
>
TForm1 - это не объект, это тип объекта. Надо
Form1.Action2.Execute;
Или внеси функцию levell в класс TForm1
← →
DarkGreen (2003-04-23 11:04) [8]2 Alexey Bednov (23.04.03 09:19)
Ага, вы правы, невнимательный с утра...
← →
Dimka Maslov (2003-04-23 11:15) [9]with Form1 do case Level надо писать тогда всё заработает
← →
Reindeer Moss Eater (2003-04-23 11:21) [10]Кривой код.
Где гарантия, что именно переменная Form1 в этом модуле будет содержать указатель на все экземпляры класса TForm1?
← →
Arch-vile (2003-04-23 11:24) [11]Все, with Form1 do помогло, всем спасибо, топик закрыт :)
Для интереса: Экшны - это экшн-лист, они были объявлены в классе TForm1, а не помогала привязка Levell к TForm1.
← →
Palladin (2003-04-23 11:26) [12]да он не кривой, просто не верный в принципе.
и его появление означает что автор не удосужился ознакомится с предыдущими постами...
← →
Reindeer Moss Eater (2003-04-23 11:28) [13]Либо делать
function Levell(const Flag: integer):integer; членом класса,
либо
function Levell(AForm:TForm1; const Flag: integer):integer;
Иначе код кривой.
← →
Palladin (2003-04-23 11:29) [14]я в шоке
← →
Arch-vile (2003-04-23 11:36) [15]Reindeer Moss Eater
Либо делать
function Levell(const Flag: integer):integer; членом класса,
либо
function Levell(AForm:TForm1; const Flag: integer):integer;
Palladin ©
я в шокe
Люди не считайте меня дураком. У меня форма называется не Form1 и класс не TForm1.
Сделать членом класса - не помогает. Или я неправильно объявляю ее? хз, скорее всего неправильно объявляю. Вот если новую компоненту делать - все норм. А в TForm1 добавлять - не работает :( Оно мне говорит: "Error: unsatisfied forward or external declaration "TFift.Levell""
← →
Reindeer Moss Eater (2003-04-23 11:41) [16]Сделать членом класса - не помогает
Сделать членом класса - помогает
← →
Arch-vile (2003-04-23 11:43) [17]2Reindeer Moss Eater
И как его там обявить? я же говорю - у меня не получается.
← →
Palladin (2003-04-23 11:46) [18]тебе в начале еще сказали
> Пориведи их объявление
← →
Reindeer Moss Eater (2003-04-23 11:47) [19]Люди не считайте меня дураком
И как его там обявить?
Задекларировать внутри определения класса формы наверное
← →
Palladin (2003-04-23 11:49) [20]если описываешь метод класса то будь добр в названии указывай имя класса.
function TForm1.Levell(const Flag: integer):integer;
> Люди не считайте меня дураком
а кем после этого тебя считать?
← →
Arch-vile (2003-04-23 11:54) [21]Это автоматическое объявление
procedure FormCreate(Sender: TObject);
А ты говоришь:
function TForm1.Levell(const Flag: integer):integer;
Откедова же я знал, что там надо было писать TForm1.?
← →
Palladin (2003-04-23 11:59) [22]!!!
я не сказал в ДЕКЛАРАЦИИ
я сказал в ОПИСАНИИИ
разницу понимаш?
← →
Arch-vile (2003-04-23 12:00) [23]А! все, звиняйте, понял. Топик окнчательно (надеюсь) закрыт
← →
Anatoly Podgoretsky (2003-04-23 20:15) [24]Ну ты понял.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c