Помогите разобраться с принадлежностью к форме
От: utter  
Дата: 02.06.05 06:50
Оценка:
Возникла небольшая проблемка.
Если мы пишем в основном коде программы, либо в коде процедуры, которая не озаглавлена "TForm1.xxx", а просто "xxx" простейший код, к примеру, Label1.Caption:='Проверка'; то он не прокатывает и требуется написать так: Form1.Label1.Caption:='Проверка';
Но, при этом всегда вылетает критическая ошибка: Debugger Exception Notification: "Project <имя_проекта.exe> raised exception class EAccessViolation with message 'Access violation at address <адрес> in module '<имя_проекта.exe>'. Read of address <адрес>. Process stopped. User Step or Run to continue."
Пробовал и в Delphi 6, и в 7 — ошибка одна.

Если же мы обзываем процедуру "TForm1.xxx", то Label1.Caption:='Проверка'; теперь прокатывает и ошибок не выдает, но как мы можем из основного кода программы вызвать эту процедуру: "TForm1.xxx"?
Если мы пишем TForm1.xxx; то при компиляции вылетает ошибка: "This form of method call only allowed for class methods". Если просто xxx; то такой процедуры не найдено.

Помогите пожалуйста разобраться в этой ситуации.
Re: Помогите разобраться с принадлежностью к форме
От: byterus Россия  
Дата: 02.06.05 07:09
Оценка:
Здравствуйте, utter, Вы писали:

U>Помогите пожалуйста разобраться в этой ситуации.

Как вы создаете форму? Если автоматически то все должно быть Ок. Если вручную то проследите за тем чтобы FormName<>nil например так FormName:=TformName.Create(Application);
MySQL stored procedure debugging
Re: Помогите разобраться с принадлежностью к форме
От: ak_miass Россия  
Дата: 02.06.05 07:11
Оценка:
Здравствуйте, utter, Вы писали:

U>Если мы пишем в основном коде программы, либо в коде процедуры, которая не озаглавлена "TForm1.xxx", а просто "xxx" простейший код, к примеру, Label1.Caption:='Проверка'; то он не прокатывает и требуется написать так: Form1.Label1.Caption:='Проверка';

U>Но, при этом всегда вылетает критическая ошибка: Debugger Exception Notification: "Project <имя_проекта.exe> raised exception class EAccessViolation with message 'Access violation at address <адрес> in module '<имя_проекта.exe>'. Read of address <адрес>. Process stopped. User Step or Run to continue."

Значит форма ещё\уже не существует.
Re: Помогите разобраться с принадлежностью к форме
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.06.05 07:15
Оценка:
Здравствуйте, utter, Вы писали:

U>Возникла небольшая проблемка.

U>Если мы пишем в основном коде программы, либо в коде процедуры, которая не озаглавлена "TForm1.xxx", а просто "xxx" простейший код, к примеру, Label1.Caption:='Проверка'; то он не прокатывает и требуется написать так: Form1.Label1.Caption:='Проверка';
Все верно. Label1- это поле, а полю надо задавать контекст, т.е. экземпляр объекта, поле которого тебе интересно. В данном случае ты выбираешь Form1 таким контекстом.
Проблема у тебя от того, что ты не понимаешь возможности одновременного существования нескольких форм типа TForm1.
U>Но, при этом всегда вылетает критическая ошибка: Debugger Exception Notification: "Project <имя_проекта.exe> raised exception class EAccessViolation with message 'Access violation at address <адрес> in module '<имя_проекта.exe>'. Read of address <адрес>. Process stopped. User Step or Run to continue."
Это от того, что Form1 еще не создан в момент, когда ты пытаешься обращаться к его полям.
U>Если же мы обзываем процедуру "TForm1.xxx", то Label1.Caption:='Проверка'; теперь прокатывает и ошибок не выдает,
Конечно. Теперь это — метод класса. И контекст уже задан.
U>но как мы можем из основного кода программы вызвать эту процедуру: "TForm1.xxx"?
Точно так же — надо дать ей контекст.
U>Если мы пишем TForm1.xxx; то при компиляции вылетает ошибка: "This form of method call only allowed for class methods". Если просто xxx; то такой процедуры не найдено.
Form1.xxx. Но, скорее всего, ничего хорошего не получится, потому что ты опять попытаешься вызывать xxx до создания формы.
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Помогите разобраться с принадлежностью к форме
От: utter  
Дата: 02.06.05 07:31
Оценка:
Спасибо. Разобрался.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.