Редактор формул
От: TheOldMen  
Дата: 18.07.05 09:40
Оценка:
Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.
суть в простоте, а простота в сути
Re: Редактор формул
От: Dimonka Верблюд  
Дата: 18.07.05 10:35
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


Тебе надо обратиться в форум по проектированию, а затем в форум по пользовательскому интерфейсу. Вопрос слишком общий, чтобы давать конкретные советы.
Re: Редактор формул
От: VitaliyDoroshko  
Дата: 18.07.05 13:27
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.
Для этого выражение представляется в виде обратной польской записи, а затем обрабатыается. Это длиная песня.
Но есть и другой путь. Может не столь правильный, но гораздо более короткий.
Тебе потребуется подключиться к какой-либо базе данных (например через ODBC). Чем мощнее база данных, тем больше возможностей будет у твоего редактора формул. Можно использовать MS SQL, можно поключиться к dbf-файлу, но я бы порекомендовал подключаться к Access.
Итак создаешь в своем приложении три компонента например ADOQuery, Memo и кнопку.
1) В базе данных создаешь таблицу (напрмер с именем Tab1) с одним полем (Например Fld1 и с одной пустой записью)
2) В Мемо пишешь формулу (например 1+1)
3) При нажатии на кнопку формируешь запрос ADOQuery->SQL->Text="Select "+Memo->Lines->Text+" as Result From Tab1"
4) Выполняешь запрос ADOQuery->Open()
5) Результат можно получить так:ADOQuery->FieldByName("Result")->Text
Re[2]: Редактор формул
От: TheOldMen  
Дата: 18.07.05 13:35
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.

VD>Для этого выражение представляется в виде обратной польской записи, а затем обрабатыается. Это длиная песня.
VD>Но есть и другой путь. Может не столь правильный, но гораздо более короткий.
VD>Тебе потребуется подключиться к какой-либо базе данных (например через ODBC). Чем мощнее база данных, тем больше возможностей будет у твоего редактора формул. Можно использовать MS SQL, можно поключиться к dbf-файлу, но я бы порекомендовал подключаться к Access.
VD>Итак создаешь в своем приложении три компонента например ADOQuery, Memo и кнопку.
VD>1) В базе данных создаешь таблицу (напрмер с именем Tab1) с одним полем (Например Fld1 и с одной пустой записью)
VD>2) В Мемо пишешь формулу (например 1+1)
VD>3) При нажатии на кнопку формируешь запрос ADOQuery->SQL->Text="Select "+Memo->Lines->Text+" as Result From Tab1"
VD>4) Выполняешь запрос ADOQuery->Open()
VD>5) Результат можно получить так:ADOQuery->FieldByName("Result")->Text

В действительности мне не нужно расчитывать значения формул. Мне нужно просто их редактировать.
А конрол я могу взять как TImage, но будет ли это рационально, я, к сожалелъю, не знаю...
суть в простоте, а простота в сути
Re[2]: Редактор формул
От: ilnar Россия  
Дата: 18.07.05 13:36
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Здравствуйте, TheOldMen, Вы писали:


TOM>>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


VD>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.

VD>Для этого выражение представляется в виде обратной польской записи, а затем обрабатыается. Это длиная песня.
VD>Но есть и другой путь. Может не столь правильный, но гораздо более короткий.
VD>Тебе потребуется подключиться к какой-либо базе данных (например через ODBC). Чем мощнее база данных, тем больше возможностей будет у твоего редактора формул. Можно использовать MS SQL, можно поключиться к dbf-файлу, но я бы порекомендовал подключаться к Access.
VD>Итак создаешь в своем приложении три компонента например ADOQuery, Memo и кнопку.
VD>1) В базе данных создаешь таблицу (напрмер с именем Tab1) с одним полем (Например Fld1 и с одной пустой записью)
VD>2) В Мемо пишешь формулу (например 1+1)
VD>3) При нажатии на кнопку формируешь запрос ADOQuery->SQL->Text="Select "+Memo->Lines->Text+" as Result From Tab1"
VD>4) Выполняешь запрос ADOQuery->Open()
VD>5) Результат можно получить так:ADOQuery->FieldByName("Result")->Text







Еще не было так смяшно, вы бы еще кого нибудь заказали сидеть за аськлй и слать ответы на вычисление формул, а с программы слали бы человеку формулу
Re[3]: Редактор формул
От: VitaliyDoroshko  
Дата: 18.07.05 13:49
Оценка:
Здравствуйте, ilnar, Вы писали:

I>Здравствуйте, VitaliyDoroshko, Вы писали:


VD>>Здравствуйте, TheOldMen, Вы писали:


TOM>>>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


VD>>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.

VD>>Для этого выражение представляется в виде обратной польской записи, а затем обрабатыается. Это длиная песня.
VD>>Но есть и другой путь. Может не столь правильный, но гораздо более короткий.
VD>>Тебе потребуется подключиться к какой-либо базе данных (например через ODBC). Чем мощнее база данных, тем больше возможностей будет у твоего редактора формул. Можно использовать MS SQL, можно поключиться к dbf-файлу, но я бы порекомендовал подключаться к Access.
VD>>Итак создаешь в своем приложении три компонента например ADOQuery, Memo и кнопку.
VD>>1) В базе данных создаешь таблицу (напрмер с именем Tab1) с одним полем (Например Fld1 и с одной пустой записью)
VD>>2) В Мемо пишешь формулу (например 1+1)
VD>>3) При нажатии на кнопку формируешь запрос ADOQuery->SQL->Text="Select "+Memo->Lines->Text+" as Result From Tab1"
VD>>4) Выполняешь запрос ADOQuery->Open()
VD>>5) Результат можно получить так:ADOQuery->FieldByName("Result")->Text


I>

I>
I>
I>
I>
I>Еще не было так смяшно, вы бы еще кого нибудь заказали сидеть за аськлй и слать ответы на вычисление формул, а с программы слали бы человеку формулу

Многие знают пословицу "Краткость — сестра таланта".
Но не многие знают продолжение пословицы: "И теща гоногара".
Re[2]: Редактор формул
От: Dimonka Верблюд  
Дата: 18.07.05 13:54
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.


Интересно Вы разделили задачи по степени сложности.

Остольную часть поста опускаю — без слёз не могу подобное читать.
Re[3]: Редактор формул
От: VitaliyDoroshko  
Дата: 18.07.05 14:15
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Здравствуйте, VitaliyDoroshko, Вы писали:


VD>>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.


D>Интересно Вы разделили задачи по степени сложности.


D>Остольную часть поста опускаю — без слёз не могу подобное читать.


>А конрол я могу взять как TImage, но будет ли это рационально, я, к сожалелъю, не знаю...


Извини, я не правильно понял задачу.
Re[4]: Редактор формул
От: Danchik Украина  
Дата: 18.07.05 14:41
Оценка:
Здравствуйте, VitaliyDoroshko, Вы писали:

VD>Здравствуйте, Dimonka, Вы писали:


D>>Здравствуйте, VitaliyDoroshko, Вы писали:


VD>>>Ну насчет контрола, я думаю ты сам разберешься. Гораздо сложнее разобрать синтаксис, проанализировать и вычичилить результат.


D>>Интересно Вы разделили задачи по степени сложности.


D>>Остольную часть поста опускаю — без слёз не могу подобное читать.


>>А конрол я могу взять как TImage, но будет ли это рационально, я, к сожалелъю, не знаю...


VD>Извини, я не правильно понял задачу.


Самое сложное, это именно редактор... Тут нужно понять что ты от него хочеш, как вводить данные.
Можна например за основу взять редактор формул с Winword и делать по образу и подобию

А пропарсить формулу — это задачка со школьной олимпиады.
Я этих парсеров в своей жизни наверное с десяток понаписывал...
Re[5]: Редактор формул
От: Аноним  
Дата: 19.07.05 07:56
Оценка:
D>Самое сложное, это именно редактор... Тут нужно понять что ты от него хочеш, как вводить данные.
D>Можна например за основу взять редактор формул с Winword и делать по образу и подобию

А если использовать Microsoft Equation из офиса? Это вроде СOM.
Re[2]: Редактор формул
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 19.07.05 11:49
Оценка:
Hello VitaliyDoroshko, you wrote:

> Но есть и другой путь. Может не столь правильный, но гораздо более короткий.


Тогда уж лучше так:
program ClipCalc;

uses
   Windows, ComObj, Classes;

{$R *.RES}

var
   ScriptControl: OleVariant;
   S: WideString;

begin
    CoInitializeEx(nil, 0);
    ScriptControl:= CreateOleObject('MSScriptControl.ScriptControl');
    ScriptControl.Language := 'VBScript';
    S:= ScriptControl.Eval('2^4');
    MessageBoxW(0, PWideChar(S), '', MB_OK);
end.


--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re: Редактор формул
От: ZayatsZ Россия  
Дата: 20.07.05 11:12
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


Если знакомы с C++, то вот здесь лежит статья про написание этого редактора формул, причем с полным исходным кодом и демонстрационным проектом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Редактор формул
От: Сергей  
Дата: 20.07.05 14:20
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM> Какой базовый контрол лучше выбрать?


TPaintBox
Re[2]: Редактор формул
От: TheOldMen  
Дата: 24.07.05 15:17
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, TheOldMen, Вы писали:


TOM>> Какой базовый контрол лучше выбрать?


С>TPaintBox


Почему имменно его?
суть в простоте, а простота в сути
Re[6]: Редактор формул
От: TheOldMen  
Дата: 24.07.05 15:20
Оценка:
Здравствуйте, Аноним, Вы писали:

D>>Самое сложное, это именно редактор... Тут нужно понять что ты от него хочеш, как вводить данные.

D>>Можна например за основу взять редактор формул с Winword и делать по образу и подобию

А>А если использовать Microsoft Equation из офиса? Это вроде СOM.



Нет. К сожаленью не могу использовать его. Редактор формул будет содержать спецефические символы, которые в обычной жизни редко можно встретить
суть в простоте, а простота в сути
Re[3]: Редактор формул
От: Сергей  
Дата: 24.07.05 16:34
Оценка: 1 (1)
Здравствуйте, TheOldMen, Вы писали:

TOM>Здравствуйте, Сергей, Вы писали:

С>>Здравствуйте, TheOldMen, Вы писали:
TOM>>> Какой базовый контрол лучше выбрать?
С>>TPaintBox
TOM>Почему имменно его?

TImage, к примеру, хранит все изображение в памяти. В принципе, TPaintBox — это тот компонент VCL, который "необходим и достаточен" для ваших целей. То есть кладем TPaintBox на форму и пишем обработчик OnPaint — где и рисуем формулу.
Re[7]: Редактор формул
От: Oleg A. Bachin Украина  
Дата: 25.07.05 14:57
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM>Здравствуйте, Аноним, Вы писали:


D>>>Самое сложное, это именно редактор... Тут нужно понять что ты от него хочеш, как вводить данные.

D>>>Можна например за основу взять редактор формул с Winword и делать по образу и подобию

А>>А если использовать Microsoft Equation из офиса? Это вроде СOM.



TOM>Нет. К сожаленью не могу использовать его. Редактор формул будет содержать спецефические символы, которые в обычной жизни редко можно встретить


да то у тебя просто хорошего SQL сервера нет! бери Informix! на него знаешь какие есть комерческие датаблейды — все посчитают и раскрасяи и назад в хтмл завернут! ))
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re: Редактор формул
От: alive Россия  
Дата: 21.08.05 05:51
Оценка:
Здравствуйте, TheOldMen, Вы писали:

TOM>Вот, нада написать редактор формул. Что можете посоветовать? Какой бозовый контрол ллучше выбрать? Общии концепции написания редактора? Общие советы? Спасибо.


Если еще актуально
В свое время я скачивал с Королевства Delphi модули для отображения математических формул ExprDraw и ExprMake Антона Григорьева.
К сожалению ссылку потерял а сами файлы остались. Если нужно могу переслать.
...<< RSDN@Home 1.1.4 beta 7 rev. 500>>
...Foobar {Владимир Кузьмин и группа "Динамик" — [Возьми с собой #13] Огонь (Обойдет сто
Keep yourself alive
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.