Главная страница
    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.006 c
14-12916
ctapik
2003-04-17 18:49
2003.05.05
Дизайнер формы.


1-12829
SMA
2003-04-22 00:17
2003.05.05
Имена каталогов и файлов


3-12610
Jaxtor
2003-04-15 13:56
2003.05.05
Ошибка при выполнении Insert


14-12862
blackman
2003-04-13 18:46
2003.05.05
---|Ветка была без названия|---


1-12780
Till
2003-04-20 15:12
2003.05.05
StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский