Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Есть текст "1.5+2.5" как получить значение 4 / 15 сообщений из 15, страница 1 из 1
18.10.2006, 11:30
    #34062769
Focus_NEW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Вопрос таков. Есть строка в которой записаноа мат. выражение , как вычислить это выражение?
...
Рейтинг: 0 / 0
18.10.2006, 11:49
    #34062864
Focus_NEW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Все разобрался. Через Eval.
Всем спасибо
...
Рейтинг: 0 / 0
18.10.2006, 11:50
    #34062869
Дурак
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
А поподробнее ?
...
Рейтинг: 0 / 0
18.10.2006, 11:50
    #34062873
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
ДуракА поподробнее ?
WSH Eval
...
Рейтинг: 0 / 0
22.10.2006, 14:29
    #34072429
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
А ещё подробнее? Можно работающий текст программы?
...
Рейтинг: 0 / 0
23.10.2006, 11:40
    #34073370
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
лежит где-то, поищу:
1) определить положение знака (+-*...) с нирзшим приоритетом,
2) вополнить рекурсивную операцию.
3) не забывать скобки (баланс + скобки справа и с лева)
4) не забывать функции
5) если не функция, не знак, то число - брать Val _ом

аффтопитезь
...
Рейтинг: 0 / 0
23.10.2006, 12:12
    #34073507
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
код для VB6
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
Dim e As Object
Set e = CreateObject("Excel.Application")
MsgBox e.Evaluate("1.5+2.5")
e.Quit
End Sub
для Excel VBA то же самое, только объект Excel создавать не надо
для Acces VBA использовать функцию Eval (по аналогии)
...
Рейтинг: 0 / 0
23.10.2006, 12:14
    #34073515
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Nikzкод для VB6
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
Dim e As Object
Set e = CreateObject("Excel.Application")
MsgBox e.Evaluate("1.5+2.5")
e.Quit
End Sub
для Excel VBA то же самое, только объект Excel создавать не надо
для Acces VBA использовать функцию Eval (по аналогии)

это: а) нечестно
б) привлекает внешние ресурсы
...
Рейтинг: 0 / 0
23.10.2006, 12:33
    #34073601
Nikz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Aklin Nikzкод для VB6
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Command1_Click()
Dim e As Object
Set e = CreateObject("Excel.Application")
MsgBox e.Evaluate("1.5+2.5")
e.Quit
End Sub
для Excel VBA то же самое, только объект Excel создавать не надо
для Acces VBA использовать функцию Eval (по аналогии)

это: а) нечестно
б) привлекает внешние ресурсы
а) не согласен
б) да, это не есть хорошо, но почему бы нет?
своя функция - это бОльшая вероятность глюков, почему бы не использовать уже готовое/отлаженное решение? Тем более что совершенно не обязательно создавать объект excel каждый раз перед использованием evaluate и убивать после этого.
Можно создать его в Sub Main() и убивать при выгрузке главной формы...
И все будет работать достаточно быстро, а главное с малыми рисками поймать где нибудь единичку вместо нолика или сдвинутый разделитель разрядов...
...
Рейтинг: 0 / 0
23.10.2006, 13:03
    #34073748
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Nikz
а) не согласен
б) да, это не есть хорошо, но почему бы нет?
своя функция - это бОльшая вероятность глюков, почему бы не использовать уже готовое/отлаженное решение? Тем более что совершенно не обязательно создавать объект excel каждый раз перед использованием evaluate и убивать после этого.
Можно создать его в Sub Main() и убивать при выгрузке главной формы...
И все будет работать достаточно быстро, а главное с малыми рисками поймать где нибудь единичку вместо нолика или сдвинутый разделитель разрядов...

у меня была функция, в 1.5 раза быстрее всего, что я нашел до этого в инете.

позже сделал "упаковщик+выполнялку" что получилось еще быстрее, но уже стало смахивать на ассемблер.

а глюки - так вы этого и должны избежать, кстати.
...
Рейтинг: 0 / 0
23.10.2006, 17:56
    #34074941
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Focus_NEW,

Я как-то не понял, как в VB это сделать через Eval.

VladConn
...
Рейтинг: 0 / 0
23.10.2006, 18:15
    #34075001
nibbles
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
А есть еще невизуальный ActiveX-компонент - Microsoft Script Control 1.0 -, в котором есть этот самый Eval... кушает гораздо-гораздо меньше Excel'я...

У нас на нем "корпоративный" строковый калькулятор крутится - лет 5 назад слабал, пока еще никаких поползновений установить каки-нить навороченные калькуляторы ни у кого не было ;))

Компонентик весьма интересный... кто на F2 не забывает нажимать ;))
...
Рейтинг: 0 / 0
23.10.2006, 18:21
    #34075017
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
Ааа! Нечто вроде этого?

Private Sub Command2_Click()
Dim objScript As New ScriptControl
objScript.Language = "VBScript"
MsgBox objScript.Eval("(4+5)*3")
End Sub
...
Рейтинг: 0 / 0
23.10.2006, 19:30
    #34075200
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
aklin's calc

аффтопитезь
...
Рейтинг: 0 / 0
23.10.2006, 19:32
    #34075208
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Есть текст "1.5+2.5" как получить значение 4
лучше правда использовать Value а не Hard...

аффтопитезь
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Есть текст "1.5+2.5" как получить значение 4 / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]