Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-12855
chum
2003-03-10 16:30
2003.05.05
Использование HttpQueryInfo


14-12924
klyonov
2003-04-18 08:12
2003.05.05
WS_EX_TRANSPARENT


14-12895
Вольный Стрелок
2003-04-16 11:36
2003.05.05
отследить позицию мыши


14-12920
DeMoN-777
2003-04-17 21:22
2003.05.05
Заметили новую звёздочку


1-12734
Cooper
2003-04-23 21:57
2003.05.05
Координаты указателя мыши в пределах Image





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский