Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.08.2010, 11:49   #1
Колхозник
 
Регистрация: 10.08.2010
Сообщений: 3
По умолчанию Делфи7 не компилирует строку

Подскажите, пожалуйста: Делфи7 не компилирует строку
Код:
Label.Caption:='O';
если помещаю ее в свою процедуру(MyProc),выделяет красным, выдает сообщения "Undeclared identifier:'Label1' " и 'Could not compile used unit 'Unit1.pas' ". При этом в процедурах обработки событий компонентов ("procedure TForm1.Button1Click(Sender: TObject);" например) и компилируется и работает прекрасно.
Колхозник вне форума Ответить с цитированием
Старый 11.08.2010, 12:05   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

у тебя неверное имя компонента. Должно быть label1 или любое другое, только не просто label.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 11.08.2010, 12:09   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
если помещаю ее в свою процедуру(MyProc)
эта процедура ничего знать не знает о каких-то там формах которые ты нарисовал даже в одном и том же модуле. соответственно не знает и об их компонентах.
Цитата:
сообщения "Undeclared identifier:'Label1' "
о форме (и ее компонентаз) обязательно знает метод ее класса

Код:
Tform1=class(Tform)
....
private
  procedure  My_1_Method;
publuc
  procedure My_2_method;
end;

prcedure TForm1.my_1_metod;
begin
  label1.caption:='а я знаю';
end;
процедура может знать только о переменных (и типах) объявленных в модуле.

Код:
var form1: TForm1;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.08.2010 в 12:15.
evg_m вне форума Ответить с цитированием
Старый 11.08.2010, 12:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ее в свою процедуру(MyProc)
А твоя MyProc это просто процедура? Если да то сделай ее методом формы, на которой Лабел лежит, или пиши полный путь
Код:
FormТакаяТо.Label.Caption:='O';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 12:24   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Товарищи, что вы тут пишете? посмотрите его код. Label - это метка в программирование, соответственно именем быть не может.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 11.08.2010, 12:28   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что вы тут пишете?
Я свой ответ отталкивал от ошибки:
Цитата:
Undeclared identifier:'Label1'
А в посте автор свободно мог опечататься.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.08.2010, 12:39   #7
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

А ну тогда, ему надо просто в public свою процедуру объявить.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 11.08.2010, 13:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
просто в public свою процедуру объявить
Вы не совсем правы.
1) исчерпывающие ответы уже даны выше (смотри пост #3 и #4)
2) и не обязательно в public - достаточно её просто сделать методом класса...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2010, 14:11   #9
Колхозник
 
Регистрация: 10.08.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
Товарищи, что вы тут пишете? посмотрите его код. Label - это метка в программирование, соответственно именем быть не может.
Пропустил в сообщении цифру(в тексте программы не пропускал). К сожалению не могу сейчас проверить ваши советы на компьютере, только завтра, но спасибо за советы.
Колхозник вне форума Ответить с цитированием
Старый 15.08.2010, 18:08   #10
Колхозник
 
Регистрация: 10.08.2010
Сообщений: 3
По умолчанию

Откампилировалось, когда сделал так:

Код:
procedure TForm1.Mypr;
 begin
Label1.Caption:='O';
 end;
Теперь знаю "КАК", но до понимания "ПОЧЕМУ" далеко
Спасибо за ответы.
Колхозник вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
почему не компилирует? neBu4kaMaXiM Паскаль, Turbo Pascal, PascalABC.NET 9 30.04.2010 23:14
vs 2008 не компилирует Sr.wills Общие вопросы C/C++ 1 21.04.2010 10:37
Dev C++ компилирует, Visual C++ ругается Cookson Visual C++ 7 02.10.2009 10:39
Компилятор не компилирует!((( Тимс Общие вопросы по Java, Java SE, Kotlin 10 11.06.2009 18:35
Devcpp-4.9.9.2 не компилирует. MacTiger Общие вопросы C/C++ 6 20.04.2009 22:15