Вот именно. Там много написано всякого, кроме того, насколько это будет совместимо. И в чём будет выражаться данная совместимость? В получении данных из API, без чего мы, в большинстве своём, проживём и дальше, или в чём-то полезном?Игорь Столяров писал(а): 12 Январь 2026, 16:10 И это - правда. Только полноценный UTF-16, а не 2-х байтовый упрощённый вариант.
Clarion 11-12
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Губин Игорь
- Шубуршун
- Сообщения: 2731
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 9 раз
- Поблагодарили: 30 раз
Clarion 11-12
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5696
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 20 раз
- Поблагодарили: 82 раза
Clarion 11-12
Не совсем понял, чем отличается utf-16 от "упрощенного 2-х байтного варианта"? Utf-16 и есть 2-х байтный вариант представления юникода.
C6/C12, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3382
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Clarion 11-12
Вот я тоже не понимаю. Единственное, что приходит в голову, это функции типа LEN(uString) могут возвращать неверную длину строки, если в ней суррогатные (4-хбайтные) символы.finsoftrz писал(а): 12 Январь 2026, 16:58 Не совсем понял, чем отличается utf-16 от "упрощенного 2-х байтного варианта"?
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5696
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 20 раз
- Поблагодарили: 82 раза
Clarion 11-12
Будет зависеть от реализации len. Если учитывать суррогатные пары, то надо будет перебирать все содержимое строки, что приведет к снижению скорости работы. Как я понял, в настоящее время суррогатные пары не поддерживаются, это покрывает потребность в кодировании символов всех распространенных языков. А фраза RZ по поводу суррогатных пар означает, что при необходимости (если многим надо будет) они реализуют это.
Я тут подумал, а может вообще нет никакого ustring, это только roadmap. А мы кинулись обсуждать.
Я тут подумал, а может вообще нет никакого ustring, это только roadmap. А мы кинулись обсуждать.
C6/C12, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8385
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 35 раз
- Поблагодарили: 114 раз
Clarion 11-12
Ну это меньшее из возможных зол.Дед Пахом писал(а): 12 Январь 2026, 17:01 Единственное, что приходит в голову, это функции типа LEN(uString) могут возвращать неверную длину строки, если в ней суррогатные (4-хбайтные) символы
Получив из внешней функции (WinAPI) данные с 4-х байтными символами - Clarion в USTRING их интерпретирует как мусор.
Мне вообще не нравится, что USTRING имеет размер. Это просто очередное натягивание совы на глобус ...
За теми, кто отстал, не возвращаться !
Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3382
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Clarion 11-12
WinAPI либо возвращают указатель на 2-хбайтовый массив, оканчивающийся на <0,0>, либо, если передать NULL в качестве указателя на массив, то возвращают длину, которую можно зарезервировать и в повторном вызове уже прочитать этот массив целиком. Не вижу проблем с реализацией USTRING.Игорь Столяров писал(а): 12 Январь 2026, 19:27 Получив из внешней функции (WinAPI) данные с 4-х байтными символами - Clarion в USTRING их интерпретирует как мусор.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 8385
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 35 раз
- Поблагодарили: 114 раз
Clarion 11-12
WIDE функции WinAPI возвращают указатель на строку в UTF-16.
Абсолютно нет никаких проблем получить размер ответа и принять результат - что в общем-то сейчас и делается.
Но если мы будем сразу принимать ответ UTF-16 в строку USTRING - то могут быть проблемы.
За теми, кто отстал, не возвращаться !
Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3382
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Clarion 11-12
если ANSI-вариант SomeApiProcA возвращает указатель на строку, оканчивающуюся нулём, то мы передаём в неё ссылку на CSTRING:
То же самое должно быть и для USTRING:
Код: Выделить всё
MAP
SomeApiProcA(*CSTRING pStr),RAW,PASCAL
END
sRef &CSTRING
s CSTRING)21)
CODE
SomeApiProcA(sRef) ! а не SomeApiProcA(s)
Код: Выделить всё
MAP
SomeApiProcW(*USTRING pStr),RAW,PASCAL
END
sRef &USTRING
s USTRING)21)
CODE
SomeApiProcW(sRef) ! а не SomeApiProcW(s)
С уважением, ДП
- Губин Игорь
- Шубуршун
- Сообщения: 2731
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 9 раз
- Поблагодарили: 30 раз
Clarion 11-12
А вот теперь объясните, оно всего этого геморроя стоило?!
Это я только кажусь дураком! На самом деле я полный идиот!
- Дед Пахом
- Старичок
- Сообщения: 3382
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Clarion 11-12
Для WinAPI конечно нет. А вот если файловые драйвера будут поддерживать, это другоеГубин Игорь писал(а): 12 Январь 2026, 21:42 А вот теперь объясните, оно всего этого геморроя стоило?!
С уважением, ДП
- Губин Игорь
- Шубуршун
- Сообщения: 2731
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 9 раз
- Поблагодарили: 30 раз
Clarion 11-12
Пока не знаю нафига мне это...Дед Пахом писал(а): 12 Январь 2026, 21:52 А вот если файловые драйвера будут поддерживать, это другое
Это я только кажусь дураком! На самом деле я полный идиот!
-
kreator
- ✯ Ветеран ✯
- Сообщения: 5265
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 27 раз
Clarion 11-12
Зачем вы обсуждаете какие-то суррогатные пары? У меня более приземлённый вопрос - какая БД поддерживает UTF-16? SQLite поддерживает! Как пишут - не совсем полноценно, но у SQLite всё так (шутка).
We are hard at work… for you. 
- Дед Пахом
- Старичок
- Сообщения: 3382
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 20 раз
- Поблагодарили: 56 раз
- Контактная информация:
Clarion 11-12
Драйвер (в теории) должен преобразовывать строку UTF-16 в UTF-8 на лету, прозрачно для нас. То есть к примеру есть таблица
то ADD(MyFile) должен корректно передать юникод на сервер, в нужной кодировке.
Код: Выделить всё
MyFile FILE, DRIVER...
Record RECORD
Id LONG
Name USTRING
END
С уважением, ДП
