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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2011, 16:26   #1
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию Unicode и Delphi 7

Всем привет.

Дано:
На форме расположены компоненты Edit и RichEdit. Заполняя эти компоненты пользователь сохраняет их в массив записи, предположим такую:

Код:
Type
  TPr = Record 
    A : String; 
    B : TStrings;
  End;
и переходит к следующей записи. Тоесть по сути происходит редактирование массива записей TPr. Постоянно идёт сохранение в массив (Edit и RichEdit -> Tpr[i]) а также загрузка из массива (Tpr[i] -> Edit и RichEdit).

Задача:
Нужно (как минимум в RichEdit) вводить спецсимволы (плюсминус, градус, знак диаметра и может ещё чтото).

Проблема:
Лишь RichEdit может работать с этими спецсимволами, но из за того что происходит сохранение (Edit и RichEdit -> Tpr[i]) а также загрузка из массива (Tpr[i] -> Edit и RichEdit), то происходит потеря этих спецсимволов (из за того что есть TStrings).

Тобишь получается что нужно искать компоненты и типы переменых, которые моглиб работать с Unicode. Но судя повсему Delphi 7 такими вещами не располагает.

Вообщем мне нужно както научить своё приложение работать с спецсимволами. В Delphi 9 как с Unicode обстоят дела? Может в ней все компоненты могут работать с Unicode.
И вообще в юникоде ли дело....

Спасибо.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 05.05.2011, 17:24   #2
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
Попробуйте это
Код:
function GetRTFAsString(rEd : TRichEdit):string;
var
  tmpStr : string;
  MemoryStream: TMemoryStream;
begin
  MemoryStream := TMemoryStream.Create;
  rEd.Lines.SaveToStream(MemoryStream);
  SetLength(tmpStr, MemoryStream.Size);
  MemoryStream.Seek(0, soFromBeginning);
  MemoryStream.ReadBuffer(Pointer(tmpStr)^, MemoryStream.Size);
  Result := tmpStr;
  MemoryStream.Free;
end;
Чтобы обратно записать - думаю, сами доделаете
Код:
...
  MemoryStream.WriteBuffer(Pointer(tmpStr)^, Length(tmpStr));
  MemoryStream.Seek(0, soFromBeginning);
  rEd.Lines.LoadFromStream(MemoryStream);

...
До свидания
OlegVE вне форума Ответить с цитированием
Старый 05.05.2011, 18:53   #3
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Спасибо.

Я просто думаю что реализация данного вопроса будет выглядить большим программным костылём, который в итоге застопорит дальнейшее развитие программы. Хотелось бы обойтись без костылей.

Как вариант я намерен буду установить Delphi 9 (ибо давно пора) и просто пока программа не разраслась функционалом, переписать туды её в стадии зародыша.

У меня программа использует компоненты ListBox, Memo, RichEdit, Edit... Это всё будет поддерживать Юникод в 9 версии Delphi?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 05.05.2011, 19:57   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

дадададада
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопроцессорность в Delphi и работа с файлами в Unicode 3D Hunter Общие вопросы Delphi 12 26.09.2009 15:40
Delphi 2009. Unicode. BOBAH13 Общие вопросы Delphi 8 19.06.2009 05:17
Delphi 7 - скрытые возможности Unicode (WideString) BOBAH13 Общие вопросы Delphi 7 13.03.2009 08:40
Unicode в Delphi Fedorovich БД в Delphi 2 31.10.2008 21:34
Unicode и Delphi BOBAH13 Общие вопросы Delphi 3 27.09.2008 13:08