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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2007, 15:25   #1
alikon1
Пользователь
 
Регистрация: 07.10.2007
Сообщений: 22
По умолчанию Конвертирование из поля Edit в нормальный знак.

Подскажите пожалуйста. Как сделать так, чтоб при вводе в поле (допустим edit1) текста 2+2+2 потом можно было это все посчитать, а то inttostr знаки не конвертирует.

допустим.
var a:integer;
begin
a:=inttostr(edit1.Text); // где edit1.Text = '2+2+2'
edit1.Text:=inttostr(a); // где a уже должна быть = 6
end;

Выручайте.
alikon1 вне форума Ответить с цитированием
Старый 10.11.2007, 15:37   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
a:=inttostr(edit1.Text);
во первых здесь нужен StrToInt, а во вторых таким способом ты ничего не добьешься, тут нужно строку по символам разобрать, и на основе этого делать те или иные вычисления
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 10.11.2007, 15:38   #3
Rapid
Форумчанин
 
Аватар для Rapid
 
Регистрация: 01.09.2007
Сообщений: 747
По умолчанию

Цитата:
Как сделать так, чтоб при вводе в поле (допустим edit1) текста 2+2+2 потом можно было это все посчитать
У меня была такая же проблема. Ее можно решить несколькими способами
1. Написать процедуру, которая будет обрабатывать строку (с 4 знаками это не сложно, но придется помучится со скобками
2. Использовать готовый компонент Express (его нужно устанавливать с диска или скачать где нибудь)
Никому не верьте.
Rapid вне форума Ответить с цитированием
Старый 10.11.2007, 15:52   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

"Прямой" способ:
1. Выделяем все числа в массив.
2. Параллельно выделяем все знаки в отдельный стринг.
3. Берем первое и второе число, анализируем первый знак, производим вычисления. И так далее.
Это - только для вычислений без приоритетов (скобок).
mihali4 вне форума Ответить с цитированием
Старый 10.11.2007, 16:01   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Расчет формул из двух значений (6 Кб):
http://programmersforum.ru/attachmen...8&d=1182363718
Alex21 вне форума Ответить с цитированием
Старый 10.11.2007, 16:57   #6
alikon1
Пользователь
 
Регистрация: 07.10.2007
Сообщений: 22
По умолчанию

а если такой случай 2+3*5+7^2*2!+sin(60+30), то как быть? операции выполняются по приоритету
alikon1 вне форума Ответить с цитированием
Старый 10.11.2007, 17:05   #7
alikon1
Пользователь
 
Регистрация: 07.10.2007
Сообщений: 22
По умолчанию

Rapid писал:
2. Использовать готовый компонент Express (его нужно устанавливать с диска или скачать где нибудь)

А может кто-нибудь поподробней рассказать, или где почитать можно? Очень надо

Rapid,помоги пожалуйста. dzhambula@mail.ru
alikon1 вне форума Ответить с цитированием
Старый 10.11.2007, 18:00   #8
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Ну сколько можно? Используйте поиск по форуму.
http://www.programmersforum.ru/showthread.php?t=6568
zetrix вне форума Ответить с цитированием
Старый 12.11.2007, 12:21   #9
Rapid
Форумчанин
 
Аватар для Rapid
 
Регистрация: 01.09.2007
Сообщений: 747
По умолчанию

Приветствую.
Сорри, что не ответил сразу (писал курсач по фин анализу)
Компонент разместил во вложении.
http://www.programmersforum.ru/attac...1&d=1194858399
Чтобы установить компонент нужно сделать следующее
1. Войти в Дельфи, закрой все
2. Выбрать Компонент-Инсталлировать компонент
3. В первой строке диалога укажи имя компонент (задай путь)-это файл с расширением .pas
4. Жми ОК и дальше появится диалог, жми инсталлировать компонент (если кнопка инсталлировать не активна, перекомпилируй проект или попробуй еще раз все повторить)
5. Папку, в которой находятся исходники никуда не перемещай(лучше сразу засунь ее туда где трогать ее не будешь)
6. Жми закрыть и сохранить
Компонент должен появиться на закладке "Образцы"

Простой пример использования

Express1.Expression:=Edit1.Text;//В эдите например sin(10)+5*4-22
VRes:=Express1.TheFunction(0,0,0); // Переменная VRES типа Real
Edit2.Text:=FloatToStr(VRes);

А вообще инсталляция компонентов хорошо описана в Библии программиста, которую можно скачать с форума.
Вложения
Тип файла: rar Express.rar (221.2 Кб, 31 просмотров)
Никому не верьте.

Последний раз редактировалось Rapid; 12.11.2007 в 12:32.
Rapid вне форума Ответить с цитированием
Старый 12.11.2007, 12:27   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Дельфийский класс TParser блин!!! Он умеет выражения считать
пыщь

Последний раз редактировалось JTG; 12.11.2007 в 12:33.
JTG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертирование графических форматов файлов ALEX_RAS Помощь студентам 21 02.11.2008 17:46
Нормальный Transparent в Image??? Fre5h Компоненты Delphi 1 10.07.2008 08:44
изменение содержимого поля edit truel Win Api 1 21.04.2008 12:31
конвертирование Hex -> Text и Float -> Int NikOnLine Общие вопросы Delphi 13 22.12.2007 23:11
Паскаль. Программа - Ваш знак зодиака Vanet Помощь студентам 5 11.10.2007 21:11