C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
RichEdit
** xxx
  Отправлено: 24.10.2005, 10:38


Не зарегистрирован







Как в компонент RichEdit ввести арабский текст а потом получить коды введённых символов.
olegenty
Отправлено: 24.10.2005, 10:57


Ветеран

Группа: Модератор
Сообщений: 2412



так же, как ввёл бы русский.
** xxx
  Отправлено: 24.10.2005, 11:07


Не зарегистрирован







А как насчёт ответа на второй вопрос. Как узнать коды символов арабского алфавита.
AVC
Отправлено: 24.10.2005, 11:35


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Диапазон   Описание                             Коды UTF-8
600 — 6FF Arabic Арабское письмо        D8 80 — DB BF
700 — 74F Syriac Сирийское письмо      DC 80 — DD 8F



User Attached Image Скачать файл
Unicode.doc


** xxx
  Отправлено: 24.10.2005, 11:37


Не зарегистрирован







Спасибо с этим теперь понятно.
А как теперь эти коды читать из RichEdit. У меня получается что все символы одинаковые.
AVC
Отправлено: 24.10.2005, 12:07


Ветеран

Группа: Модератор
Сообщений: 1583



CODE

char a [1000];
TGetTextEx te;
te.cb = sizeof(a);
te.flags = GT_DEFAULT;
te.lpDefaultChar = NULL;
te.lpUsedDefChar = NULL;

int tlen = SendMessage(RichEdit1->Handle, EM_GETTEXTEX, long(&te), long(a));

Из а считываем пары байт.

Еще посмотрите в группе "String Manipulation Functions"

Отредактировано AVC — 24/10/2005, 11:10
** xxx
  Отправлено: 25.10.2005, 12:14


Не зарегистрирован







У меня ещё вопрос как в RichEdit открыть файл *.rtf с арабским текстом что бы текст отображался корректно.
avc*
Отправлено: 27.10.2005, 07:54


Не зарегистрирован







А так пробовали?
REdit1->PlainText = false;
REdit1->Lines->LoadFromFile(file_name);
** xxx
  Отправлено: 28.10.2005, 09:19


Не зарегистрирован







Да так проповал загружает всякую ерунду. Точнее сказать загружает не данные а весь файл со служебкой
avc*
Отправлено: 28.10.2005, 11:45


Не зарегистрирован







Пришлите файл — посмотрю
** xxx
  Отправлено: 28.10.2005, 12:55


Не зарегистрирован







куда выслать файл
AVC
Отправлено: 28.10.2005, 14:03


Ветеран

Группа: Модератор
Сообщений: 1583



Зарегистрируйтесь и все станет просто. smile.gif
Можно прикрепить файл к сообщению, а можно посмотреть как со мной связаться.
xxx2
  Отправлено: 28.10.2005, 14:13


Ученик-кочегар

Группа: Участник
Сообщений: 5



Вот файл. Мне его надо открыть в RichEdit и найти определённое слово и подсветить его другим цветом.
AVC
Отправлено: 28.10.2005, 17:14


Ветеран

Группа: Модератор
Сообщений: 1583



Посмотрел test.rtf.
На форме кнопка, за кнопкой код
REdit1->PlainText = false;
REdit1->LoadFromFile(file_name);
Результат на картинке. Ни каких настроек системы я не проводил.
user posted image

Как ввести в Tedit текст для поиска я не знаю, так как сходу подключить арабский не получилось а курочить систему не очень хочется. Думаю, что если суметь ввести слово и преобразовать его в unicod то можно будет и найти его в rich’е.
xxx2
  Отправлено: 31.10.2005, 10:14


Ученик-кочегар

Группа: Участник
Сообщений: 5



Спасибо с вводом текста всё получилось. Буду дальше думать.
xxx2
  Отправлено: 31.10.2005, 17:32


Ученик-кочегар

Группа: Участник
Сообщений: 5



QUOTE (AVC @ 24/10/2005, 12:07)
CODE

char a [1000];
TGetTextEx te;
te.cb = sizeof(a);
te.flags = GT_DEFAULT;
te.lpDefaultChar = NULL;
te.lpUsedDefChar = NULL;



Из а считываем пары байт.

Еще посмотрите в группе "String Manipulation Functions"

что то функция int tlen = SendMessage(RichEdit1->Handle, EM_GETTEXTEX, long(&te), long(a));
возвращает значение равное нулю и в масив ничего не загружает. Кто небудь работал с типами WideString.Поможет мне это в решении моих проблемм.
xxx2
  Отправлено: 31.10.2005, 17:57


Ученик-кочегар

Группа: Участник
Сообщений: 5



Я могу загрузить арабский текст из RichEdit. Как мне его теперь выгрузить обратно в RichEdit. И как мне сним обращаться.
AVC
Отправлено: 01.11.2005, 09:52


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (xxx2 @ 31/10/2005, 16:32)

что то функция int tlen = SendMessage(RichEdit1->Handle, EM_GETTEXTEX, long(&te), long(a));
возвращает значение равное нулю и в масив ничего не загружает.

Как-то вам не очень везет smile.gif . В том приложении от которого картинка добавил кнопку и написал обработчик
CODE

void __fastcall TFMain::Bt_GetTextExClick(TObject *Sender)
{
char a [1000];
TGetTextEx te;

te.cb            = sizeof(a);
te.flags         = GT_DEFAULT;
te.codepage      = 1200;
te.lpDefaultChar = NULL;
te.lpUsedDefChar = NULL;

int tlen = SendMessage(REdit1->Handle, EM_GETTEXTEX, long(&te), long(a));
Memo2->Text = tlen;
for (int i=0; i < 20; i++)
 Memo2->Lines->Add (
   IntToHex(int(a[i*2]   & 0xFF),2)             + " "  +
   IntToHex(int(a[i*2+1] & 0xFF),2)             + "  " +
   AnsiString(REdit1->Lines->Text[i+1])         + " "  +
   IntToHex(REdit1->Lines->Text[i+1] & 0xFF, 2) + " "  +
   ""
 );

}

Результат
499
28 06  ? 3F
3A 06  ? 3F
2F 06  ? 3F
27 06  ? 3F
2F 06  ? 3F
20 00    20
0C 06  ? 3F
20 00    20
...


Для ввода арабского текста с клавиатуры я таки настроил систему (потребовала перезагрузки). Ввел в окно RichEdit’a qwerty, увидел на экране вязь и нажал новую кнопку. Результат:
6
36 06 ? 3F
35 06 ? 3F
2B 06 ? 3F
42 06 ? 3F
41 06 ? 3F
3A 06 ? 3F
00 00 0D
Нажал кнопку сохранить. И вот результат в rtf
CODE

{\rtf1\fbidis\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fcharset178 Tahoma;}{\f1\fnil MS Sans Serif;}}
\viewkind4\uc1\pard\ltrpar\lang3073\f0\rtlch\fs16\'d6\'d5\'cb\'de\'dd\'db\lang1049\f1\ltrch
\par }


QUOTE

как мне сним обращаться.

Честно скажу, обращаться с правосторонним текстом без привычки крайне тяжело. Даже сходу не сообразишь что будет после нажатия Del smile.gif
xxx2
  Отправлено: 01.11.2005, 10:49


Ученик-кочегар

Группа: Участник
Сообщений: 5



Разобрался. Спасибо большое. Работаю сос трокой WideString.
Всё нормально.

Вернуться в Вопросы программирования в C++Builder