Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Юникод в DBGrid [D7, XP]


mefodiy ©   (2010-10-31 19:47:00) 

Возникла необходимость переделать программу, написанную  в  Delphi 7 в Юникод. Решил использовать компоненты TMS. Все нормально мигрировалось кроме DBGrid. Компонента TTntDBGrids никак не хочет воспринимать юникод символы. Например, следующая команда
FieldByName('MyField').AsString := WideChar($0259)
Вместо предусмотренного знака WideChar($0259) в поле 'MyField' дает знак вороса "?".
Что делаю не так?
Заранее благодарен.


Anatoly Podgoretsky   (2010-11-02 11:16:00) [1]


> А можно ли создать DBF таблицу с utf-8.

Можно, но только для хранения и то придется применять разного рода методы, чтобы не преобразовалось во что то другое.


sniknik   (2010-11-02 10:32:00) [2]

> А можно ли создать DBF таблицу с utf-8.
utf-8 это юникод основанный на ansi...
http://ru.wikipedia.org/wiki/Utf-8

т.е. писать как есть, читать как есть, преобразовывать только при показе. и естественно не возможны будут запросы с условиями по этому полю/индексы "собьются"/и размер поля должен быть больше чем есть символов (с ограничением у dbf на 254 символа, тяжко придется...)


clickmaker   (2010-11-02 10:30:00) [3]


> А можно ли создать DBF таблицу с utf-8.

нет
но в поле типа blob можно все что угодно хранить


mefodiy   (2010-11-02 10:19:00) [4]


> тогда уж utf-8... проще

А можно ли создать DBF таблицу с utf-8.
В самом Database Desktop (Delphi 7) есть только варианты ANSI и национальные cp...


sniknik   (2010-11-01 19:11:00) [5]

> но только в таком виде $0259$0260$0261
тогда уж utf-8... проще.


clickmaker   (2010-11-01 19:01:00) [6]

можно и в дбф хранить уникод.
но только в таком виде $0259$0260$0261 или %u0431%u043e%u0431%u0440%u0443%u0439%u0441%u043a, как некоторые браузеры урлы кодируют )


Anatoly Podgoretsky   (2010-11-01 18:38:00) [7]


> Это обычные DBF таблицы.

О каком Юникоде тогда речь.


sniknik   (2010-11-01 17:37:00) [8]

> Это обычные DBF таблицы.
опля...

если они обычные, то юникода там нет. а если "чуток" еще устарели, то даже кодовой страницы нет.


mefodiy   (2010-11-01 17:29:00) [9]


> sniknik ©

Это обычные DBF таблицы.


sniknik   (2010-11-01 17:21:00) [10]

а теперь нужно смотреть типы в базе, и чем/как открыто, т.к. преобразовывать может не только дельфи...


Anatoly Podgoretsky   (2010-11-01 16:50:00) [11]

Я никогда не использую литералы, а всегда параметры, вот реальный рабочий код
CommonCommand.Parameters.ParamByName('FirstName').Value := FirstNameEdit.Text;


Anatoly Podgoretsky   (2010-11-01 16:45:00) [12]

> mefodiy  (01.11.2010 16:43:08)  [8]

AsString это ANSI


mefodiy   (2010-11-01 16:43:00) [13]

Проверил оба варианта:
TWideStringField(FieldByName('MyField')).AsString := WideChar($0259);
TWideStringField(FieldByName('MyField')).Value := WideChar($0259);
В первом случае опять появляется знак вопроса, а во втором - вообще ничего не записывается (пустое поле).


Anatoly Podgoretsky   (2010-11-01 14:47:00) [14]

> mefodiy  (01.11.2010 14:14:05)  [5]

На мой взгляд, никакие .AS использовать не надо, есть же Value


sniknik   (2010-11-01 14:20:00) [15]

TWideStringField(FieldByName('MyField')).As.... должно быть что то вайдстринговое.


mefodiy   (2010-11-01 14:14:00) [16]

>>use TWideStringField, Luke!
Подскажите, как это использовать


Игорь Шевченко   (2010-10-31 22:05:00) [17]

use TWideStringField, Luke!


mefodiy   (2010-10-31 22:00:00) [18]

>>AsWideString
такого метода у TFields нет
>>WideChar(#$0259) или #$0259
результат тот же (?)


sniknik   (2010-10-31 21:35:00) [19]

> := WideChar($0259)
приведение числа к строке? и что должно получится?
может так*
:= WideChar(#$0259)
?
или, еще лучше  
:= #$0259
так


Anatoly Podgoretsky   (2010-10-31 20:02:00) [20]

> mefodiy  (31.10.2010 19:47:00)  [0]

А не AsWideString


Наверх

Титульная страница Поиск, карта сайта Написать письмо