Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1131
от 26.04.2008, 07:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 459, Экспертов: 58
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 133246: У меня такой вопрос : я начинающий программист, пытаюсь сделать калькулятор( все когда то с этого начинали). По своей сути я его сделал, есть такой момент. Код обработки события при нажатии '*', '/', '-','+' почти одинков ( отличаеться лишь последняя...

Вопрос № 133.246
У меня такой вопрос : я начинающий программист, пытаюсь сделать калькулятор( все когда то с этого начинали). По своей сути я его сделал, есть такой момент. Код обработки события при нажатии '*', '/', '-','+' почти одинков ( отличаеться лишь последняя строка). Для упрощения программы я хотел бы загнать весь код в одну процедуру ( либо функцию). При создании самой процедуры проьлем нет, но когда я вставляю туда сам код, Delphi ругается, что не видит таких значений как : Edit1.text и тд. Огромная просьба разъяснить ситуацию.

Приложение:

Отправлен: 20.04.2008, 20:40
Вопрос задал: Гардукевич Роман Эдуардович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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
Комментарий оценки:
Большое спасибо, это именно то, что мне надо было. Нашёл ошибку.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное