Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.008 c
3-12667
Arm79
2003-04-09 19:43
2003.05.05
отчеты с помощью Rave


7-12956
Fast
2003-03-13 22:05
2003.05.05
Работа с COM портом.


14-12939
Mad Rapper
2003-04-16 17:28
2003.05.05
Как в текстовое поле вставлять рисунки?


7-12953
BPK
2003-02-17 23:00
2003.05.05
Как узнать состояние лотка CD-ROM?


8-12835
Сергей
2003-01-24 21:23
2003.05.05
Отображение картинки с возможностью скролла




   Наверх