Форум: "Начинающим";
Текущий архив: 2011.01.23;
Скачать: [xml.tar.bz2];
ВнизЮникод в 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c