powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMemo в UNICODE
12 сообщений из 12, страница 1 из 1
TMemo в UNICODE
    #39788193
AndrewP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TMemo в UNICODE
    #39788197
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компонент поля тип TWideStringField? AsWideString что дает?
...
Рейтинг: 0 / 0
TMemo в UNICODE
    #39788228
AndrewP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanКомпонент поля тип TWideStringField? AsWideString что дает?

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

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

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

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

В Memo.Font.CharSet ничего не накручено? Если сделать ShowMessage(Query.AsWideString) - текст виден?
...
Рейтинг: 0 / 0
TMemo в UNICODE
    #39788336
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TMemo в UNICODE
    #39788337
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё, на всякий пожарный, а в Delphi ты это можешь проверить ?
...
Рейтинг: 0 / 0
TMemo в UNICODE
    #39788343
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterВ Memo.Font.CharSet

Для UTF-16 (т.е. Windows API xxxxxW) это поле вообще использоваться не должно
...
Рейтинг: 0 / 0
TMemo в UNICODE
    #39788401
AndrewP_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
TMemo в UNICODE
    #39788471
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewP_,

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

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

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


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