Калькулятор в одну строчку

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Калькулятор в одну строчку

Сообщение AnarCky » 13.01.2007 (Сб) 12:15

Сейчас делаю сабж. Собственно надо, чтобы в одном txt1 окне было исходное выражение, а вдругом txt2 результат. Txt1 должно поддерживать минимум 6 математических операций одновременно (напр "(66+5)/7-3*3^4"). Застопорился на самом главном - как обеспечить одновременное выполнение всех операций.
Есть задумка, но способов реализации нет.
Идея такая: все содержимое txt1 преобразовать в строчку кода, а потом эту строчку подставить в код после операторов преобразования и затем выполнить эту строчку.
Если идея плохая\не работает\не к месту\идиотская (нужное подчеркнуть) подскажите плзз что-нить другое.
Спасибо!
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 13.01.2007 (Сб) 13:17

Парсить это раз
Или использовать библиотеку J#, что именно не помню, но MSDN рулит

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 13.01.2007 (Сб) 17:57

Спасиба за ответ, но что такое парсить?
Что значит использовать библиотеку J#?

Своего MSDN нет, а на сайте вместо читабельного русского текста сплошь краказяблики.

Будьте добры объясните. Это срочно нада, до понедельника. Мне проект на научно-практическую конференцию в школе сдавать, а у меня ни шиша зеленого не получается. :shock:
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Сообщение MIT » 14.01.2007 (Вс) 0:14

AnarCky
Рулит поиск не только MDSN но и по сайту.
Парсить - превращать текст в команды (насколько я понимаю)
Парсеры:
http://bbs.vbstreets.ru/viewtopic.php?t=28808
http://bbs.vbstreets.ru/viewtopic.php?t=28272
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 14.01.2007 (Вс) 14:02

MIT
Спасибо! Качнул.

Токо есть проблемка:

!Viper!
Ты делал сей кирпич, тебе лучше знать. У меня VS.NET 2003 подчеркиает волнистой фрагмент

Код: Выделить всё
            Do
                If sr.EndOfSream Then 'sr.EndOf Stream подчеркнут
                     Return String.Empty
                End If
                Dim s As String = sr.ReadLine()
                If bIgnoreEmpty AndAlso s.Length = 0 Then
                     Continue Do          'и этот подчеркнут
                End If


этом куске я заменил:

Код: Выделить всё
            Do
                If sr.Peek = -1 Then
                     Return String.Empty
                End If
                Dim s As String = sr.ReadLine()
                If bIgnoreEmpty AndAlso s.Length = 0 Then
                     Continue Do          'а этот снова подчеркнут
                End If


Скажите правильно ли я сделал замену и как избавится от второго подчеркивания.
Если нада больший кусок кода - говорите.[/code]
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

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

Сообщение Viper » 15.01.2007 (Пн) 8:30

Я так думаю, что подчеркнуто всеже Sream а не Stream, буковку то добавь
If sr.EndOfSream Then 'sr.EndOf Stream подчеркнут


А есть ли в 2003 Continue?

Добавлено позжее:

Собственно функция ReadLine модуля Common к парсеру как к таковому не имеет отношения и оставалась в файле "по наследству", сей модуль можно смело удалить, парсер будет работать и без него.

З.Ы. В кирпичах щас лежит обновленная версия без лишнего модуля
Весь мир матрица, а мы в нем потоки байтов!

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 15.01.2007 (Пн) 20:04

Значит там и правда EndOfSream т.к. я копировал.
Continue заменил на:
Код: Выделить всё
            Do
                If sr.Peek = -1 Then
                     Return String.Empty
                End If
                Dim s As String = sr.ReadLine()
                If bIgnoreEmpty AndAlso s.Length = 0 Then
                     GoTo m1
                End If
m1:
[\code]

Коряво конечно, но работает. :) 

Токо что дочитал последние 2 строчки. Щас ясно. А в принципе можно сделать замену по моему варианту?
Я давно уже мучился с оператором продолжения.
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

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

Сообщение Viper » 16.01.2007 (Вт) 8:17

В оригинале был (и есть) EndOfStream, значит буква где-то уже у тебя потерялась. Замена Continue реализуется примерно так:

Вариант с Continue:

Код: Выделить всё
Do
' что-то делаем
If bNextStep Then
     Continue Do ' т.е. переходим на следующий шаг
End If
' опять же что-то делаем
Loop While b


Вариант без Continue:

Код: Выделить всё
Do
' что-то делаем
If bNextStep Then
     Continue Do ' т.е. переходим на следующий шаг
Else
     ' опять же что-то делаем
End If
Loop While b


Лучше так, чем с GoTo
Весь мир матрица, а мы в нем потоки байтов!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.01.2007 (Ср) 16:52

MIT писал(а):Парсить - превращать текст в команды (насколько я понимаю)


И не влом вам маяться? ScriptControl ведь никто не отменял...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 17.01.2007 (Ср) 19:34

Прикол в том, что Continue он как раз подчеркивает. Независимо от структуры оператора.
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..


Вернуться в Visual Basic .NET

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

Сейчас этот форум просматривают: Yandex-бот и гости: 44

    TopList