Вопрос № 133246: У меня такой вопрос : я начинающий программист, пытаюсь сделать калькулятор( все когда то с этого начинали). По своей сути я его сделал, есть такой момент. Код обработки события при нажатии '*', '/', '-','+' почти одинков ( отличаеться лишь последняя...
Вопрос № 133.246
У меня такой вопрос : я начинающий программист, пытаюсь сделать калькулятор( все когда то с этого начинали). По своей сути я его сделал, есть такой момент. Код обработки события при нажатии '*', '/', '-','+' почти одинков ( отличаеться лишь последняя строка). Для упрощения программы я хотел бы загнать весь код в одну процедуру ( либо функцию). При создании самой процедуры проьлем нет, но когда я вставляю туда сам код, Delphi ругается, что не видит таких значений как : Edit1.text и тд. Огромная просьба разъяснить
ситуацию.
Отвечает: Djec
Здравствуйте, ARXANGEL!
Возможно ошибка из-за того, что вы создали свою, пользовтельскую функцию, которая не является методом класса Form1, в следствие чего компиллятор не видит таких объектов как Edit1. Необходимо либо явно писать Form1.Edit1 при использовании, либо указать вашу функцию как метод класса Form1.
Либо если это не так, напишите в мини-форум данного вопроса полный текст программы или функции
--------- Полная зависимость от интернета - это когда окно браузера запущено просто так, для спокойствия души и тела
Ответ отправил: Djec (статус: 8-ой класс)
Ответ отправлен: 20.04.2008, 20:51 Оценка за ответ: 4
Отвечает: Николай Владимирович / Н.В.
Здравствуйте, ARXANGEL! Это происходит потому что функция не принадлежит форме (классу TForm1). Предлагаю следующие варианты решения: Вариант 1 В Вашем коде нужно каждый писать полное обращение к конечным объектам, т.е. Form1.Edit1.Text
Вариант 2 По сути полностью аналогичный первому: использовать оператор with для сокращенного обращения. Выглядеть это будет так: function myfunc; begin with
Form1 do begin здесь Ваш код end; end;
Вариант 3 Использовать возможности классов и создать функцию, принадлежащую Form1. Для этого нужно сделать следующее: 1. В разделе public (функция будет доступна в других модулях программы) или private (функция не будет доступна в других модулях программы) описания формы добавить строку с описание функции.
Например, function myfunc:integer; 2. В разделе implementation написать саму процедуру, указывая класс, которому она принадлежит (т.е. TForm1): function TForm1.myfunc:integer; далее ее код.
То что у меня получилось Вы можете увидеть в приложении.
Если будут вопросы, пишите в мини-форум.
Удачи!
Приложение:
Ответ отправил: Николай Владимирович / Н.В. (статус: Профессор) Россия, Москва WWW:nvsoft.org ICQ: 420720 ---- Ответ отправлен: 20.04.2008, 20:56 Оценка за ответ: 5 Комментарий оценки: Большое спасибо, это именно то, что мне надо было. Нашёл ошибку.