Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите понять метод Парсера. пишу программу которая чертит графики... 
:(
    Опции темы
Vad
Дата 23.11.2004, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



Как я понял тут надо юзать Парсинг, но вот как его юзать я понять не могу, плз кто имел дело с этим помогите.
Надо сделать так чтобы когда пользователь вводил функцию(она может быть обсолюьно любая) то она просчитывалась с пдоставлением чисел в место переменых например от 1 до 100. Или как там график чертиться smile Я еще просто не пробовал график чертить.
Спасибо за внимание.
PM MAIL   Вверх
Yanis
Дата 23.11.2004, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Во первых:
http://www.codenet.ru/
Раздел: компиляторы.

Я бы ещё скачал какой-нибудь модуль или компонент с открытым исходным кодом, для расчета выражений и посмотрел бы там. У меня вроде где то калькулятор валялся, который выражения вычисляет.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Vad
Дата 23.11.2004, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



Спасибо, и если найдешь калькулятор этот пришли на мыло мне плз. [email protected].
Только я не могу понять в разделе компиляторы что смотреть??
PM MAIL   Вверх
Vad
Дата 23.11.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



Народ ну помогите плз smile smile smile
PM MAIL   Вверх
Guest
Дата 23.11.2004, 22:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Vad Ну как чего смотреть? смотреть нада как устроены компиляторы потому что у тебя задача сходная с тем что приходится делать компилятору при трансляции программ из кода языка в машинный код...
  Вверх
Vad
Дата 23.11.2004, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



Е мое, во тчо я ввязался, надо разобраться, наверняка времени много уйдет, а тут еще и 9 класс экзамены smile Ну ничего прорвемся!! Народ у кого есть примерчики Скиньте сюда плз! smile
За ранее благодарен!
PM MAIL   Вверх
Vad
Дата 24.11.2004, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



ау люди добрые, помогите мне ламеру плз smile
PM MAIL   Вверх
dm9
Дата 24.11.2004, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Из этой программы я выдирал модуль рассчёта выражения по формуле.
Принцип такой. Задаёшь формулу, задаёшь что чему равно и он выдаёт ответ. То, что тебе надо. Придётся 10 минут покопаться в чужих исходниках, у меня программа с использованием этого модуля пропала smile
Не разберёшься - пиши smile

Авторство неизвестно, качалось с delphimaster.ru.

PS По какой-то причине Кладовка на delphimaster.ru закрыта, поэтому авторство восстановить не удастся smile

PPS У автора особое чувство юмора, не забудь мессаги исправить, которые появляются при ошибках smile

PPPS Поддерживаются функции:
sin, cos, exp, ln, tg, lg, max, min, log, ctg, ^, %.

Это сообщение отредактировал(а) dm9 - 24.11.2004, 15:12

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  Translator.zip
PM MAIL ICQ   Вверх
Vad
Дата 26.11.2004, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



че то я не розабрался, не пойму че такое j ^( Да и ваще код не очеьн понятен smile
PM MAIL   Вверх
dm9
Дата 27.11.2004, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



А если посидеть часок и поразбираться?
PM MAIL ICQ   Вверх
Vad
Дата 27.11.2004, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



сидел , не очень то понятнО smile
PM MAIL   Вверх
dm9
Дата 27.11.2004, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Эх, блин... курс молодого бойца. Как использовать чужой код.

Этап A. Разведка
Запускаем программу. Смотрим, что она делает.
Что-то считает, стопудово. Видим внизу циферки: N=6 000 000 000, A=40.
Изображаем из себя дурачка - вводим в строку "Y" (без кавычек). И - надо же, какое чудо! Там появляется типа ответ: 150000000. А что, если ввести такое: "Y^2+500*Sin(d)". Ты смотри-ка, выдал ответ! Значит, эта штуковина действительно умеет считать формулы!!! КРУТО! Убедившись, что придурок из форума нас не обманул, и эта программа действительно делает что надо, приступаем к этапу B.

Этап B. Погружение
Открываем исходники. Программа для открывания - Delphi. Блокнот - это следующий этап. Файл cal.dpr. Тыкаем Ctrl+F12 и выделяем там все файлы. Enter. Исходники открыты. Тыкаем Shift+F12. Выделяем единственную строчку. Enter. Форма проекта открыта. Всё. Можно приступать к процессу. Замечаем, что вычисление происходит при нажатии на кнопку "Вычислить". Смотрим обработчик этого события (нажав на этот самый пункт меню). Видим код. Процедура из целых семи строчек. Подумать только, здесь и есть всё, что нам надо!!! Как я пришёл к этому выводу? А очень просто. Здесь есть строчка "c:=TCalculator.Create;". Это означает создание объекта. Каков тип объекта? Класс, если хотите? TCalculator, конечно! Процесс инициализации, или настройки, если по-деревенски, обычно происходит ПОСЛЕ создания объекта. Только после создания заполняются поля и вызываются методы. Поскольку создание объекта происходит здесь, значит, и инициализация здесь же. Смотрим, как происходит эта инициализация. АГА, НАШЛИ! Мы проходимся по строкам TMemo (цикл) и выполняем "c.AddParam(memo.Lines[i]);"! То есть строку из Memo добавляем методом AddParam! Хорошо, но так мы зададим только дополнительные правила для вычисления выражения. Например, "X=14", "R=4", "D=X+R". Но где само выражение, которое надо вычислить? А это не следующая строчка? А как начать вычисление и получить ответ? Наверное, это метод GetValue(value)?

Этап C. Переносим чужой код в наше приложение
Здесь надо посмотреть, какие используются модули. Намёк - основной модуль прописан после строчки "implementation" файла main.pas, а затем надо посмотреть, какие файлы использует этот модуль.
Копируем файлы к себе, подключаем их (uses), затем пишем то, что мы узнали:
c := TCalculator.Create;
c.AddParam ('X=4');
c.AddParam ('Y=5');
c.Expression := 'X+Y';
b := c.getValue (value).
c.Free;

Контрольный вопрос - где будет ответ, в b или в value, и каких они типов (смотреть в модуле, содержащем класс TCalculator, то есть Calculator.pas)?

Не забывай вызывать Free, хотя автор этого и не делает - хорошая привычка всегда освобождать за собой память.

Домашее задание - добавить к списку поддерживаемых функций функцию ch(x), равную 0.5(exp(x)+exp(-x)) и sh(x), равную 0.5(exp(x)-exp(-x)) smile

Если что непонятно - с удовольствием отвечу, но готовое решение выкладывать не буду, так как у меня правило: с 25 числа каждого месяца не выкладывать готовые решения...
PM MAIL ICQ   Вверх
Vad
Дата 27.11.2004, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



Если не разберусь до 1 декабря выложишь??
PM MAIL   Вверх
dm9
Дата 27.11.2004, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Ты разбирайся, разбирайся smile
Что непонятно - спрашивай, отвечу.
Решение не выложу smile
Добавлено @ 23:13
Если после моих указаний не разберёшься, будет странно smile
Если, конечно, тебе это действительно надо.
Добавлено @ 23:17
Вернее, не так. Готовое решение я УЖЕ выложил, тебе осталось только это понять smile
PM MAIL ICQ   Вверх
Гость_Vad
Дата 5.12.2004, 22:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Там функций много не понятных ( smile
  Вверх
dm9
Дата 6.12.2004, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Например?
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.