Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.01.2014, 22:29
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию Юникод в RichEdit Delphi 7

Собственно возможно ли сделать чтобы RichEdit в делфи 7 поддерживал юникод? Иногда есть скопированный текст с веб-странички и при вставке отображаются вопросительные знаки.
Ответить с цитированием
  #2  
Старый 10.01.2014, 05:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Посмотри на RichView, кажется у них была редакция, поддерживающая юникод под Д7. Нативный компонент такого не может.

ЗЫ. Если действительно нужен юникод, то проще перейти на нужную версию Дельфей.
ЗЗЫ. Да, еще были такие компоненты TNTControls, они с поддержкой юникода, но не уверен, что у них есть RichEdit, но Memo у них точно есть.
ЗЗЗЫ. Есть еще такая штука, SynEdit, у него тоже есть редакция с поддержкой юникода. Все это надо смотреть с учетом задачи.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Speech (10.01.2014)
  #3  
Старый 10.01.2014, 08:25
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

а в чем проблема чуточку руками кода написать?)

Код:
var
  f: THandle;
  buf: array [0..$ffff] of Byte;
  dummy: Cardinal;
begin
  f:=CreateFile('Unit1.txt', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
  try
    if not ReadFile(f, buf, $fffe, dummy, nil) then raise Exception.Create('!ReadFile');
    if dummy<2 then raise Exception.Create('!null');
    buf[dummy]:=$00;
    buf[dummy+1]:=$00;
    if (buf[0]<>$ff) or (buf[1]<>$fe) then raise Exception.Create('!Oops');
    SendMessageW(RichEdit1.Handle, WM_SETTEXT, 0, Integer(PChar(@buf[2])));
  finally
    CloseHandle(f);
  end;
end;

http://zalil.ru/34890307
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Speech (10.01.2014)
  #4  
Старый 10.01.2014, 15:48
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию

lmikle, дело в том что проект написан в Delphi 7. Я знаю что последующие версии поддерживают юникод, потому и уточнил в какой версии проект у меня.

NumLock спасибо Я кстати также делал, только вручную и через блокнот ))) Но надоело это делать и решил спросить о решении проблемы с юникодом.
Ответить с цитированием
  #5  
Старый 10.01.2014, 16:16
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

я не совсем понял, что ты делал также, только вручную
я к тому, что и в Delphi 7 с RichEdit (и пр.) можно нормально работать с Unicode через SendMessageW.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter