** 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
|
|
|
** 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
|
Зарегистрируйтесь и все станет просто.
Можно прикрепить файл к сообщению, а можно посмотреть как со мной связаться. |
|
xxx2 |
Отправлено: 28.10.2005, 14:13 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Вот файл. Мне его надо открыть в RichEdit и найти определённое слово и подсветить его другим цветом. |
|
AVC |
Отправлено: 28.10.2005, 17:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Посмотрел test.rtf.
На форме кнопка, за кнопкой код
REdit1->PlainText = false;
REdit1->LoadFromFile(file_name);
Результат на картинке. Ни каких настроек системы я не проводил.
Как ввести в 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));
возвращает значение равное нулю и в масив ничего не загружает.
|
Как-то вам не очень везет . В том приложении от которого картинка добавил кнопку и написал обработчик
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 |
|
xxx2 |
Отправлено: 01.11.2005, 10:49 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Разобрался. Спасибо большое. Работаю сос трокой WideString.
Всё нормально. |
|