Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Всем привет, с наступающим! firebird 2, Delphi 5 создал в табличке поле: aaaa varchar(250) CHARACTER SET UNICODE_FSS и через stream+параметр записываю в него widestring. потом хочу его прочитать: bsz := IBQueryW.FieldByName('aaaa').DataSize; setlength(bu,bsz); IBQueryW.FieldByName('aaaa').GetData(bu); ws := buff2ws(@bu); а DataSize мне всегда возвращает 251. :) хотя в буфере вижу свой widestring. что я не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 01:51 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
ну ладно, допустим, до нуля прочитаю, остальное проигнорирую. а вот попытался искать по нему: IBQ.SQL.Add('select * from zzzz where aaaa = :xxx'); IBQ.Params.Clear; IBQ.Params.CreateParam(ftWideString,'xxx',ptInput); IBQ.Params[0].Value := mywidestring; IBQ.Prepare; IBQ.Open; получаю: exception class EIBClientError with message 'unsupported feature' как победить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 03:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
UNICODE_FSS - это не widestring. Отсюда гениальная идея: нужно сконвертировать widestring в UNICODE_FSS и затем уже скармливать полученную строку TIBQuery самым обычным способом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 07:55 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertUNICODE_FSS - это не widestring. Отсюда гениальная идея: нужно сконвертировать widestring в UNICODE_FSS и затем уже скармливать полученную строку TIBQuery самым обычным способом. А где списать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 08:23 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
хоть бы намек какой, во что конвертить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 08:32 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoхоть бы намек какой, во что конвертить? В UNICODE_FSS, который есть не что иное, как ущербная версия UTF8. А поскольку в FB 2 есть нормальный UTF8, то про UNICODE_FSS нужно забыть и использовать UTF8. И, соответственно, конвертировать widestring в UTF8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:34 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoсоздал в табличке поле: aaaa varchar(250) CHARACTER SET UNICODE_FSS да что ж такое... ну какой еще unicode_fss! http://www.ibase.ru/unicode_faq.htm и с Delphi 5 вам практически не светит. если только вы не ошиблись, и у вас XE5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:48 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:48 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
kdvи с Delphi 5 вам практически не светит. Всё там светит и теоретически, и практически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 09:52 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertВсё там светит и теоретически, и практически. только это будет весьма геморройно. прозрачно с юникодом работает Delphi 2009 и выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 10:13 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Спасибо, теперь стало понятнее... но не совсем. :) И вот, что именно не понятно: Есть тип WideString, существует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString. А в базе при этом что, UTF8?... не стыкуется как-то... :) или для ftWideString надо в таблице создавать поле какого-то другого типа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoсуществует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString Вот только это предположение разбивается о реальность того, что ftWideString не используется ни одним набором компонент доступа к данным и у TField нет свойства, позволяющего скормить ему собственно WideString. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:34 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino, в базе UTF8, если в коннекте UTF8, то IBX и другие компоненты доступа должны сами преобразовывать UTF8 в строку нужного типа. Вот я смотрю в IBX от Delphi 2007, которая не юникодная. И вижу, что там в IBCustomDataSet.pas в DefaulFieldClasses элементам ftWideString, ftFixedWideChar, ftWideMemo и проч сопоставлен nil. Таким образом, с сервера такой тип столбца не получить. Если выставить его прямо в IBX, на клиенте, то получится пшик. Потому что такой тип никак не обрабатывается. В юникодных Дельфи, в IBX, для ftWideString есть соответствие, это TIBStringField (который унаследован от TWideStringField), который используется для любых строк. В общем, вы же указанный мной FAQ не прочитали, а там написано, что компоненты доступа к БД должны поддерживать юникод. И дальше все, чем вы работаете с этими данными, тоже должно поддерживать юникод (как минимум грид, поля ввода, и прочее). В до-юникодных Дельфи есть компоненты, поддерживающие юникод, но они все сторонние (типа TMS, и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 12:37 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratinoСпасибо, теперь стало понятнее... но не совсем. :) И вот, что именно не понятно: Есть тип WideString, существует TFieldType равный ftWideString. Логично предположить, что ftWideString как раз для WideString. А в базе при этом что, UTF8?... не стыкуется как-то... :) или для ftWideString надо в таблице создавать поле какого-то другого типа? Юникод в FB (UTF8) и юникод в винде (UTF16) - это две большие разницы. UTF8 прекрасно себе живет в ftString. От сервера ты получаешь строки в UTF8, конвертируешь их в widestring, затем уже с широкими строками делаешь то, что тебе нужно. И наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:06 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
На компонентах, вроде, StringGrid, DBGrid и прочих, все прекрасно отрисовывается при помощи Windows.TextOutW. Редактировать можно в TRichEdit, если не полениться отпарсить rtf, чтобы получить обратно свой widestring. И в blob полях все нормально сохранется, и вынимается оттуда. Осталось научиться искать. ftWideString для какого типа данных был сделан? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:10 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpert , переменной utf8 у меня нет, я могу просто конвертануть widestring в array of byte. после этого IQuery.Params.CreateParam с каким типом создавать, чтобы через LoadFromStream его залить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:16 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino, интересно, зачем это все надо, если в D2009 и выше работа с юникодом не требует ни доп. компонент, ни одной дополнительной строки кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:17 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
зачем ездить на старом велосипеде, когда можно купить новый, с мотором? :) не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
booratino IBExpert , переменной utf8 у меня нет, я могу просто конвертануть widestring в array of byte. после этого IQuery.Params.CreateParam с каким типом создавать, чтобы через LoadFromStream его залить? Ты эта... ознакомиться бы с самими кодировками - как да что. Сразу полегчает. Для utf8 не нужны переменные особых типов, utf8 прекрасно живет в ansistring. Посему AsString для работы с ней вполне достаточно. Для конвертации UTF8 в widestring нужны соответствующие функции. Их есть, например, здесь: http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:40 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
kdvbooratino, интересно, зачем это все надо, если в D2009 и выше работа с юникодом не требует ни доп. компонент, ни одной дополнительной строки кода? А чо стоит это щастье? Можно не отвечать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:42 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
IBExpertА чо стоит это щастье? Можно не отвечать минимально оно стоит $569, это если обновиться до Delphi XE7 Prof, при этом получая все предыдущие версии (кроме 2006) до 7. Просто если человек мастрячит новый проект на Д5, с юникодом, то это мазохизм, однозначно. Д5 сколько лет? Какие для нее есть компоненты с поддержкой юникода? Ну да, древние TNT, еще что-то. booratinoзачем ездить на старом велосипеде, когда можно купить новый, с мотором? :) не знаю. я не уговариваю купить. я предлагаю оценить разницу в количестве усилий для реализации одной и той же задачи. На Дельфи 5 это N, а на Delphi 2009-XE7 - ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 13:53 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Hello, Kdv! You wrote on 29 декабря 2014 г. 14:02:22: Kdv> я предлагаю оценить разницу в количестве усилий для реализации одной и > той же задачи. На Дельфи 5 это N, а на Delphi 2009-XE7 - ноль. теоретический маркетинг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:03 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийтеоретический маркетинг. ничего теоретического не вижу. человеку надо юникод записать в базу, и считать его. Вот как он со строками обычными работал в Д5, так же прозрачно будет и в ХЕ7 работать, даже не думая, что это юникод. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:20 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
Hello, Kdv! You wrote on 29 декабря 2014 г. 14:22:45: Kdv> ничего теоретического не вижу. > человеку надо юникод записать в базу, и считать его. Вот как он со > строками обычными работал в Д5, так же прозрачно будет и в ХЕ7 работать, > даже не думая, что это юникод. теоретически, ога. если он пишет задачу с нуля. и освоил нововведения всей линейки версий от D6 до ХЕ7. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:27 |
|
||
|
как писать widestring в firebird в D5?
|
|||
|---|---|---|---|
|
#18+
В Unified Interbase заявлена поддержка delphi 5, возможно через TNT Правда, чутьё подсказывает, что в реaльности эту поддержку никто уже лет 5 не проверял. Но это не фатально, я когда писал на пятёрке поддерживал совместимость JediVCL с D5 и это вполне реально было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2014, 14:32 |
|
||
|
|

start [/forum/topic.php?fid=40&startmsg=38845124&tid=1563091]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
218ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 345ms |

| 0 / 0 |
