Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.05;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.012 c
1-12791
Юлия
2003-04-22 12:16
2003.05.05
Путь к исполняемому файлу


1-12699
Сергей Ч
2003-04-23 11:09
2003.05.05
Работа с MS Word


1-12711
NeshBriges
2003-04-21 16:16
2003.05.05
RichEdit


1-12713
levova
2003-04-23 15:39
2003.05.05
Буфер обмена


9-12595
ogo
2002-11-28 10:45
2003.05.05
opengl для delphi