Расчет формулы записанной в виде строки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Northwind
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.11.2006 (Пт) 15:35

Расчет формулы записанной в виде строки

Сообщение Northwind » 17.11.2006 (Пт) 15:53

Подскажите плз. Может быть есть такая функция
(не хочется самому писать) чтобы было примерно так:

Dim S as String
Dim I as Integer

S = "(5 + 5) / 2 - 3"
I = ФУНКЦИЯ(S)

Соответственно I = 2 после ее действия...
В справочнике не нашел, как написать представляю,
но если уже есть - зачем...
Последний раз редактировалось Northwind 17.11.2006 (Пт) 15:55, всего редактировалось 1 раз.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 17.11.2006 (Пт) 15:55

http://bbs.vbstreets.ru/viewforum.php?f=28

Там несколько топиков а-ля "Эвалютатор мат. выражений". Все готовенькое.

Northwind
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 17.11.2006 (Пт) 15:35

Сообщение Northwind » 17.11.2006 (Пт) 16:01

Спасибо. Слово ЭВАЛЮТАТОР - было незнакомым (поиск по нему не делал) ;)

artful84
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.12.2005 (Ср) 2:04
Откуда: 2la

Сообщение artful84 » 24.11.2006 (Пт) 15:21

Я сталкивался с похожей проблемой. Есть довольно хороший способ - использовать функцию eval из javascript. Для ее использования необходим MS Script Control. Если нужен пример, могу поискать.
Дилетант

artful84
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.12.2005 (Ср) 2:04
Откуда: 2la

Сообщение artful84 » 25.11.2006 (Сб) 10:05

Нашел пример - метод Симпсона для решения определенных инегралов с использованием MS SCript Control.

Код: Выделить всё

Option Explicit
Dim a As Double, b As Double, m As Integer
Dim h As Double
Dim x As Double
Dim sFun As String
Dim f As Double, n As Integer, i As Double

Private Sub cmdSol_Click()

On Error GoTo 100

f = 0
sFun = text1.Text

Dim strFunction As String

strFunction = "Function Eval(x)" & vbCrLf & " eval =" & text1.Text &_ vbCrLf & "End Function"

SCSimp.AddCode strFunction

a = CDbl(txtA.Text)
b = CDbl(txtB.Text)
m = CInt(txtM.Text)


     h = (b - a) / m / 2
     x = a
     f = SCSimp.Run("Eval", x)
     i = f: n = 0
10 x = x + h
     f = SCSimp.Run("Eval", x)
     i = i + 4 * f: n = n + 2
     If n = 2 * m Then GoTo 20
     x = x + h
     f = SCSimp.Run("Eval", x)
     i = i + 2 * f
     GoTo 10
20 x = b
     f = SCSimp.Run("Eval", x)
     i = (i + f) * h / 3
     txtSol.Text = Str(i)

Exit Sub

100 txtSol.Text = "Ошибка при решении. Проверьте данные"

End Sub
Последний раз редактировалось artful84 25.11.2006 (Сб) 13:41, всего редактировалось 1 раз.
Дилетант

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 25.11.2006 (Сб) 10:13

artful84, ты бы привел этот код в божеский вид перед тем как выложить. А то в этой жути без ящика пива не разберешься :evil:
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.11.2006 (Сб) 12:03

artful84 писал(а):Нашел пример - метод Симпсона для решения определенных инегралов с использованием MS SCript Control.

А я здесь выкладывал такой же пример, только без левых контролов -- через TLB...
Изображение

artful84
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.12.2005 (Ср) 2:04
Откуда: 2la

Сообщение artful84 » 25.11.2006 (Сб) 13:36

!Viper! писал(а):artful84, ты бы привел этот код в божеский вид перед тем как выложить. А то в этой жути без ящика пива не разберешься :evil:

Гм... Первокурсники, которые VB первый раз видели, разобрались без ящика пива. Ладно, приведу.
Дилетант

artful84
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.12.2005 (Ср) 2:04
Откуда: 2la

Сообщение artful84 » 25.11.2006 (Сб) 13:42

tyomitch писал(а):А я здесь выкладывал такой же пример, только без левых контролов -- через TLB...


Ну не такой уж он и левый :)
Дилетант


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 97

    TopList