Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.224.57.86] |
|
Сообщ.
#1
,
|
|
|
Компонент PostfixCalc разбирает математические выражения и вычисляет их. Выражение может состоять из чисел, переменных, функций и арифметических операций. Все числа можно задавать в любых системах счисления (точнее от 2-й до 36-й).
В архиве сам компонент и демо-калк для тестирования Прикреплённый файлPostfixCalc_v03.rar (10.38 Кбайт, скачиваний: 737) |
Сообщ.
#2
,
|
|
|
Из uses демки хорошо бы убрать "NkEdit". Все равно не используется, а с толку сбивает.
И сразу общее замечание: у парсера слишком много ограничений. Для унарного минуса добавляется 0 спереди, удаляются пробелы перед парсингом — это не очень хороший стиль. Кроме того если несколько унарных минусов, то возникает ошибка, хотя это вполне корректная операция. |
Сообщ.
#3
,
|
|
|
Цитата Из uses демки хорошо бы убрать "NkEdit". Все равно не используется, а с толку сбивает. угу, просто забыл Цитата И сразу общее замечание: у парсера слишком много ограничений. Для унарного минуса добавляется 0 спереди, удаляются пробелы перед парсингом — это не очень хороший стиль. Кроме того если несколько унарных минусов, то возникает ошибка, хотя это вполне корректная операция. а насчет этого я подумаю |
Сообщ.
#4
,
|
|
|
Цитата Кроме того если несколько унарных минусов, то возникает ошибка, хотя это вполне корректная операция. исправил, заодно убрал добавление нулей перед унарным минусом. |
Сообщ.
#5
,
|
|
|
Не пойму, зачем закрепили тему. Компонент, типа, такой крутой, или для коллективной разработки? Я никак не против, просто не догоняю...
Ладно, умеет ли компилировать выражения? Строить их деревья, например, для дифференцирования? Вообще, зачем компонент для невизуальных задач? Добавлено Всё-таки посмотрел исходник.... Да, много вопросов отпало к сожалению. Нет поддержки $, 0x. Ненавижу писать/читать капснутые hex-числа, по мне так в нижнем регистре лучше всё распознаётся даже. Было бы удобнее иметь возможность указания rad или deg так же непосредственно после значения угла. Почему нет оператора факториала n!? Медленный код: Цитата for i := 1 to p-1 do s := s + str[i]; Цитата - думаю, самое место для использования перечисления. if a in ['A'..'Z'] then result := 3 // именно 3, это не опечатка Кроме ShowErrors наверно полезнее было бы RaiseErrors - с ними-то при желании можно делать что угодно, хотя т.к. это компонент, то может и не очень. Ещё, раз уж компонент, то где Events и иконки нет.... Ещё если бинарное число состоит только из нулывых цифр (например, 0000b), то ошибка, что пустая строка не есть floating-point value. Добавлено Ну зачем добавлять "scc" в конце при выводе результата, что я сам не знаю, какую систему установил... Как и думал, вещественный результат можно получить только в cc=10. Добавлено Опять, раз уж это компонент, то где настройки, например вообще отсутствуют настройки округления. А я хочу, чтобы округлялось до 3 знака после запятой к ближайшему чётному! |
Сообщ.
#6
,
|
|
|
Цитата Ненавижу писать/читать капснутые hex-числа, по мне так в нижнем регистре лучше всё распознаётся даже. нижний регистр занят под переменные Цитата Почему нет оператора факториала n!? уже добавил Цитата Было бы удобнее иметь возможность указания rad или deg так же непосредственно после значения угла. наверное сделаю. Цитата Медленный код: Цитата for i := 1 to p-1 do s := s + str[i]; Заменил на result := copy(str, 1, p-1). Переменную s вообще выкинул. Цитата Ну зачем добавлять "scc" в конце при выводе результата, что я сам не знаю, какую систему установил... чтобы после получения ответа(если он выводится в тот же Едит, где задается выражение) было удобнее продолжать вычисления. Но это требуется не всегда, поэтому сделаю опционально. Цитата отсутствуют настройки округления. А я хочу, чтобы округлялось до 3 знака после запятой к ближайшему чётному! сделаю |
Сообщ.
#7
,
|
|
|
Цитата Gaiver @ Ну почему мир так несправедлив к тем, кто хочет перемен? Чем они провинились, что мы считаем их ниже нас! Мы что, возомнили себя богами? О .NET, когда же это кончится?нижний регистр занят под переменные Цитата Gaiver @ Не верюуже добавил Цитата Gaiver @ Лучше забей, сделай компиляциюнаверное сделаю. Цитата Gaiver @ Т.е. ты хотел сказать result := str; setlength(result, p-1)? Я прввильно тебя понял?Заменил на result := copy(str, 1, p-1). Переменную s вообще выкинул. Цитата Gaiver @ Не принимай всё так близко к сердцу, спроси себя: "Оно мне надо?", если да - делай, бог в помощь. Мне оно не надо лично. Вот когда введёшь оператор "'" (производная), вот будет интересно посмотреть. Ладно, я просто ухмыляюсь, хороший компонент, только зря он - компонент, лучше бы библиотека вычислителная, а компоненты уже могут её юзать на здоровье, имхо-имхо-имхо. сделаю Добавлено Кстати, а длинная арифметика поддерживается? |
Сообщ.
#8
,
|
|
|
Цитата Не верю а теперь? Цитата Кстати, а длинная арифметика поддерживается? нет |