Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.01.23;
Скачать: CL | DM;

Вниз

Юникод в DBGrid   Найти похожие ветки 

 
mefodiy   (2010-10-31 19:47) [0]

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


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

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

А не AsWideString


 
sniknik ©   (2010-10-31 21:35) [2]

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


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

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


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

use TWideStringField, Luke!


 
mefodiy   (2010-11-01 14:14) [5]

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


 
sniknik ©   (2010-11-01 14:20) [6]

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


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

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

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


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

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


 
Anatoly Podgoretsky ©   (2010-11-01 16:45) [9]

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

AsString это ANSI


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

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


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

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


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


> sniknik ©

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


 
sniknik ©   (2010-11-01 17:37) [13]

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

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


 
Anatoly Podgoretsky ©   (2010-11-01 18:38) [14]


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

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


 
clickmaker ©   (2010-11-01 19:01) [15]

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


 
sniknik ©   (2010-11-01 19:11) [16]

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


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


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

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


 
clickmaker ©   (2010-11-02 10:30) [18]


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

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


 
sniknik ©   (2010-11-02 10:32) [19]

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

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


 
Anatoly Podgoretsky ©   (2010-11-02 11:16) [20]


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

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



Страницы: 1 вся ветка

Текущий архив: 2011.01.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.006 c
2-1288154961
Делфиец
2010-10-27 08:49
2011.01.23
Чем преобразовать UTF-8 в Windows-1251


15-1286438207
delphi  php
2010-10-07 11:56
2011.01.23
Формирование запроса и получение страницы


2-1288332436
Abcdef123
2010-10-29 10:07
2011.01.23
Есть ли компонент MessageDlg с дополнительным чекбоксом на форме?


2-1288624179
cyber-pilot
2010-11-01 18:09
2011.01.23
Как перехватить вставку из буфера в комбобокс?


2-1288388349
Германн
2010-10-30 01:39
2011.01.23
Запрет запуска второго экземпляра приложения