Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMemo в UNICODE / 12 сообщений из 12, страница 1 из 1
19.03.2019, 09:47
    #39788193
AndrewP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
Embarcadero 10.2
Пишу в TMemo содержимое поля из БД Access:

авторMemo1.Text=fdqSqlQueryQUERY->AsString;

Memo1 - из Standart палитры компонентов TMemo;

fdqSqlQueryQUERY - поле из таблицы БД Access (mdb файл) типа ftWideMemo.

В Memo1 появляется только 1-й символ из содержимого поля.

Я так понимаю, что 2-й байт двухбайтного символа в UNICODE кодировки содержит 0, что для TMemo
является концом строки.

По их заявлениям в Embarcadero 10.2 все компоненты по умолчанию должны поддерживать UNICODE кодировку.

Как заставить TMemo принимать строки в UNICODE кодировке в Embarcadero 10.2?
...
Рейтинг: 0 / 0
19.03.2019, 09:55
    #39788197
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
Компонент поля тип TWideStringField? AsWideString что дает?
...
Рейтинг: 0 / 0
19.03.2019, 10:37
    #39788228
AndrewP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
wadmanКомпонент поля тип TWideStringField? AsWideString что дает?

AsWideString также как и AsString возвращают UnicodeString.

Причем в TDBGridEh это поле отражается правильно, но в TMemo никак не передать содержимое UnicodeString.
...
Рейтинг: 0 / 0
19.03.2019, 11:33
    #39788278
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
AndrewP_,

Memo1.Lines.Text := ... ?
...
Рейтинг: 0 / 0
19.03.2019, 11:57
    #39788299
AndrewP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
AriochMemo1.Lines.Text := ... ?
Memo1.Lines.Text := fdqSqlQueryQUERY->AsString;
дает такой же эффект как и
Memo1.Text := fdqSqlQueryQUERY->AsString;

то есть выводится только 1-й символ.
...
Рейтинг: 0 / 0
19.03.2019, 12:35
    #39788335
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
AndrewP_,

В Memo.Font.CharSet ничего не накручено? Если сделать ShowMessage(Query.AsWideString) - текст виден?
...
Рейтинг: 0 / 0
19.03.2019, 12:35
    #39788336
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
AndrewP_,

Посмотри в отладке, какие данные возвращают свойства AsBytes и AsAnsiString, по-байтово.

http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DB.TField.AsAnsiString
http://docwiki.embarcadero.com/Libraries/Tokyo/en/Data.DB.TField.AsBytes

Либо у тебя проблема в чтении из БД, либо в передаче корректной строки в Memo

Я оооочень сомневаюсь, что поломали TMemo - поэтому думаю что-то не так с настройкой доступа к БД, но надо проверять.

Кстати TMemo у тебя VCL или FMX ?
...
Рейтинг: 0 / 0
19.03.2019, 12:35
    #39788337
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
И ещё, на всякий пожарный, а в Delphi ты это можешь проверить ?
...
Рейтинг: 0 / 0
19.03.2019, 12:40
    #39788343
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
DarkMasterВ Memo.Font.CharSet

Для UTF-16 (т.е. Windows API xxxxxW) это поле вообще использоваться не должно
...
Рейтинг: 0 / 0
19.03.2019, 13:39
    #39788401
AndrewP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
DarkMasterВ Memo.Font.CharSet ничего не накручено? Если сделать ShowMessage(Query.AsWideString) - текст виден?
В Memo.Font.CharSet стоит DEFAULT_CHARSET.
В ShowMessage() выводится также только 1-й символ.

Если написать:
String sss="Это WideString строка";
ShowMessage(sss);

то вывод нормальный.

Значит проблема не TMemo, а в представлении поля fdqSqlQueryQUERY.AsString типа ftWideMemo
из БД Access, хотя в DBGridEh это поле выводится нормально.

fdqSqlQueryQUERY.AsString возвращает строку UnocodeString.
...
Рейтинг: 0 / 0
19.03.2019, 14:41
    #39788471
s62
s62
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
AndrewP_,

может посмотреть эту строку в HEX-редакторе, насчет BOM? BOM вещь необязательная, но может быть с этим проблема как-то связана.
...
Рейтинг: 0 / 0
19.03.2019, 21:50
    #39788676
AndrewP_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TMemo в UNICODE
Проблема решилась.

Было неправильно создано поле TWideMemoField (скопировал его со старого проекта).
Я удалил его и пересоздал заново из подключенной БД Access. Все заработало.

Всем спасибо за участие.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMemo в UNICODE / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]