Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2013, 14:15   #1
overlookerz
 
Регистрация: 20.04.2009
Сообщений: 8
По умолчанию Надстрочные/подстрочные символы/индексы. Степени. Формулы.

Необходимо записать в базу данных Mysql следующую формулу.

123.bmp

Могут быть еще сложней. Это как вариант, который я нашел. Пока я остановился на таком варианте: Данные вводятся в RichEdit затем запросом добавляются в базу. Поле типа Blob. Уже на данном этапе проблема так как текст в базе уже без надстрочного символа, пишется в ряд. Хотя плюс минус записался. Т.е. потерялось форматирование. Дальше хуже при выборке из базы, делаю запрос и вношу в RichEdit, выводится абракадабра
Цитата:
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil \fcharset204 Arial Unicode MS;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\l ang1049\f0\fs16 RichEdit1\par
Два вопроса:
1. Как занести данные в базу с сохранением форматирования (верхний индекс/надстрочный символ).
2. Как вывести данные из базы, чтоб сохранилось форматирование.

Код:
 procedure TForm1.Button3Click(Sender: TObject);
   begin
    ZQuery1.Close;
    ZQuery1.SQL.Text:=' INSERT INTO test (text) VALUES (:prm1)';
    ZQuery1.ParamByName('prm1').value:=Richedit1.Text;
    ZQuery1.ExecSQL;
  End;

 procedure TForm1.Button4Click(Sender: TObject);
   begin
     ZQuery1.Close;
     ZQuery1.SQL.Text:='Select text FROM test limit 0,1';
     ZQuery1.Open;
     RichEdit1.Text:=ZQuery1.FieldByName('text').AsString;
   end;
Может есть еще варианты добавления надстрочных символов, но полазив по интернету пришел к тому что описано выше, так как посчитал этот вариант, проще.
Подскажите, что не так!

Дополнено:
Абракадабра почему то исчезла.
Данные вводятся и выводятся, но без форматирования.
overlookerz вне форума Ответить с цитированием
Старый 11.01.2013, 14:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для записи в базу из RichEdit выгружать в MemoryStream. Обычно у параметра есть метод LoadFromStream - им и загружать. Обратная операция аналогично - из MemoField-a писать в стреам, а оттуда в RichEdit
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.01.2013, 17:54   #3
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Ну, какие-то простые формулы можно и чисто Юникодом вводить, только я не представляю, как это сделать без встроенного аналога таблицы символов. Например, формула выше будет выглядеть так: ±5*10⁻⁷ f.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 11.01.2013, 23:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Просто, как вариант. хранить в виде TEX - выражения.
для отображения формул использовать, например, эту библиотеку
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.01.2013, 01:00   #5
overlookerz
 
Регистрация: 20.04.2009
Сообщений: 8
По умолчанию

Уже подумывал, что завтра буду клянчить код, а нет сам догнал) исходников в принципе много в инете, с каждого по ниточки вот что получилось:

Код:
.....
Uses dbtables;
var stm:TBlobStream;
.....
procedure TForm1.Button7Click(Sender: TObject);

begin
  ZTable1.Active:=true;
  ZTable1.Edit;
  stm:=ZTable1.CreateBlobStream(ZTable1.FieldByName('text'), bmReadWrite);
   try
      Richedit1.Lines.SaveToStream(stm);
   finally
      stm.Free;
   end;
 ZTable1.Post;
end;

procedure TForm1.Button8Click(Sender: TObject);

begin
 ZTable1.Active:=true;
 stm:=ZTable1.CreateBlobStream(ZTable1.FieldByName('text'), bmReadWrite);
 stm.Position:=0;
 RichEdit1.Lines.LoadFromStream(stm);
end;
Исходник работает) а что еще нужно! Всем спасибо! И удачи)
overlookerz вне форума Ответить с цитированием
Старый 20.01.2013, 16:20   #6
overlookerz
 
Регистрация: 20.04.2009
Сообщений: 8
По умолчанию

Не знаю может необходимо было создавать новую тему?! Застрял сейчас на перебрасывании этих же данных в Excel.
Все замечательно перебрасывается, но опять эти степени меня убивают.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  BlobStream2: TStream;
  Excel:Variant;
begin

ZQuery1.Close;
ZQuery1.SQL.Text:='Select * From test limit 3,1';
ZQuery1.Open;
BlobStream2:=ZQuery1.CreateBlobStream(ZQuery1.FieldByName('text'), bmReadWrite);
RichEdit1.Lines.LoadFromStream(BlobStream2);
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;

Excel:=CreateOleObject('Excel.Application');
Excel.Workbooks.Add;
Excel.Cells[1,2].Select;
Excel.ActiveSheet.Paste;
Excel.Visible:=true;
Текст отображается в RichEdit1 "как надо", текст, который передан в Excel, отображается в ячейке 1,2, но форматирование пропало.

Подскажите как передать текст из RichEdit1 в Excel.Cells[1,2] без потери форматирования?

Дополнительно:
Сейчас попробовал передать тоже самое ворду, все передается, т.е. дело в excel'e (не программным, простым копированием/вставкой)

Последний раз редактировалось overlookerz; 20.01.2013 в 16:41.
overlookerz вне форума Ответить с цитированием
Старый 21.01.2013, 22:45   #7
overlookerz
 
Регистрация: 20.04.2009
Сообщений: 8
По умолчанию

Проблема не решена( Все по-прежнему
-из RichEdit копируется в word с сохранением форматирование
-из RichEdit в excel отказывается, форматирование теряется
-хотя из word в excel форматирование сохраняется.

Пробовал проверять, что храниться в буфере обмена. если копировать из RichEdit, то просто CF_TEXT. А вот если копировать из word то сразу CF_TEXT, CF_METAFILEPICT, CF_PICTURE (копировал только текст ±5*10-7 f)

Подскажите, пожалуйста), как передать текст из RichEdit в Excel с сохранением форматирования?!
overlookerz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Adobe dreamweaver cs5 подстрочные знаки sergeant.coolagin HTML и CSS 2 30.04.2012 20:44
Даны натуральное число n и символы s1,...,sn. Получите все символы, расположенные до первого двоеточия (Pascal) Татьана Помощь студентам 16 22.09.2011 15:05
Надстрочные и подстрочные символы( Delphi) CAMOBAP Помощь студентам 2 08.03.2011 15:08
Надстрочные индексы в RichEdit Serega_P Общие вопросы Delphi 4 20.06.2008 11:34
Надстрочные символы в Label Almaas Общие вопросы Delphi 6 09.01.2008 15:05