|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Добрый день. Делал по аналогии, как где нашел. Код: sql 1. 2. 3. 4. 5. 6.
Код: sql 1. 2. 3. 4. 5. 6. 7.
Строчки, в которых цифры и англ. буквы - возвращаются запросом, если в строке русские буквы - malformed string. Подскажите, пожалуйста, что исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 15:28 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Hello, Devillio! You wrote on 31 августа 2016 г. 15:32:03: Devillio> MainUnit.MyINIReadString возвращает String в сильно разных дельфях этот самый "стринг" сильно разный. иди к дельфятникам. зы: тут Delphi никто не знает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 15:33 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Delphi XE2. А тему пересоздать или переместят? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 15:39 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Devillioчто исправить? Практически всё. Начиная с работы с памятью и кончая преобразованием к utf-8. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 15:46 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
DevillioПодскажите, пожалуйста, что исправить? 16518686 пример в floattochar, и не забывай про free_it. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 15:59 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, спасибо! без преобразований, вот так заработало ))) procedure INIReadString(AStrSection, AStrParam, AINIData: PAnsiChar; DefaultParam: PAnsiChar); cdecl; export; begin StrPCopy(DefaultParam, AnsiString(MainUnit.MyINIReadString(AStrSection, AStrParam, AINIData, DefaultParam))); end; DECLARE EXTERNAL FUNCTION INIREADSTRING CSTRING(128), CSTRING(128), CSTRING(1024), CSTRING(512) RETURNS PARAMETER 4 ENTRY_POINT 'INIReadString' MODULE_NAME 'levdis.dll'; подскажите, так "с памятью" нормально или что-то еще надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:01 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Devillio, http://www.ibase.ru/unicode_faq/ в самом конце, последний пункт про udf. Но тут не надо забывать, что в udf передаются строки в чарсете данных или чарсете коннекта. Если ты явно не объявляешь чарсет параметров udf, то чарсет будет как "по умолчанию у БД". И если у базы win1251, то параметры будут win1251, и соответственно, возникнет преобразование из чарсета коннекта в чарсет параметра udf. А если параметры явно в utf8 объявлены, то тогда внутри udf преобразование бессмыслено. В последнем твоем варианте MyINIReadString должно понимать параметры в utf8. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:09 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Devillioтак "с памятью" нормально или что-то еще надо? С памятью так нормально, но с остальным, как уже сказали, работает до первого дятла. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:15 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в моем примере может быть не совсем понятно, с какого рожна входные строки PAnsiString. Хотя первое же преобразование типа (UTF8String(p1)) как бы намекает, что к чему. Впрочем, надо будет наваять вообще чистую utf8 udf... Хотя вроде там и ваять-то нечего. объявляем параметры с чарсетом utf8, получаем utf8string, возвращаем utf8string. По идее, так и должно быть. Но надо проверить... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:23 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 31 августа 2016 г. 16:27:37: Kdv> надо проверить...в статье добавь указание версии делфи. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:29 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
kdv, А позвольте глупый вопрос? А если БД создавать с UTF8 кодировкой - она будет универсальной для всех языков? Просто сейчас попробовал - создал с charset UDF8, соединяюсь с таким же, вроде бы русский язык работает, эта функция UDF - тоже. Где здесь грабли будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:34 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
DevillioА если БД создавать с UTF8 кодировкой - она будет универсальной для всех языков? кодировка у базы - это не кодировка базы, а ШАБЛОН чарсета, который будет использоваться для строковых (и текстовых блобов) типов данных при создании объектов - таблиц, процедур, функций, view, если у них чарсет явно не указан . Например. Создаем базу "в win1251". Пишем create table a (name varchar(30); столбец name будет иметь чарсет win1251. пишем в этой же базе create table a (name varchar(30) character set utf8; столбец name будет иметь чарсет utf8. И т.д. Собственно, у базы указывается DEFAULT character set, а не просто character set. Так что, у одной таблицы разные столбцы могут иметь разные чарсеты, отличные от default, если их указать явно. А вот дальше уже будет работать преобразование "чарсет коннекта" -> "чарсет столбца/параметра". ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:44 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Огромная благодарность за разъяснения! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:47 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
DevillioОгромная благодарность за разъяснения! Я-ж говорю, сайт ibase нафиг не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:52 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
....и выкопаю стюардессу! Как на интерпретацию CSTRING и особенно его "размера" в скобках влияют: 1) connection charset ? 2) database default charset ? Я к тому, что вот тут - http://freeadhocudf.org/documentation_english/dok_eng_blob.html - у функций идут параметры CSTRING(32760) - причем и в UTF-8 версиях и в неюникодных, один чёрт. А вот тут на FB 2.5.5 пытаются объявить CSTRING(32660) - и выпадают на implementation limit exceeded https://stackoverflow.com/questions/49547235/firebird-errors-when-using-symmetricds ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 13:13 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
....и ещё раз выкопаю. Посмотрел лангреф и девгайд IB6, лангрефы FB2.5 (Eng&Rus) - везде говорится, что предел размера CSTRING указан в байтах, а не в буквах. Про кодировку же самих букв не говорится вообще ни в одной доке... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 13:15 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Так же как и у любого другого поля/параметра чарсет параметров UDF наследуется от умолчательного чарсета БД если не указан явно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 13:25 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТак же как и у любого другого поля/параметра здесь ты неявно отсылаешь "к любому другому" SQL-типу данных но CSTRING - он если смотреть синтаксические диаграммы в доках вовсе не стандартный тип данных, а особый исключительный случай, а для него кодировки не прописаны https://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-ddl-extfunc.html а предел длины и вовсе явно прописан в байтах, а не буквах.... -------- хотя смотрю я в ib_udf2.sql и вижу там DECLARE EXTERNAL FUNCTION strlen STRING(32767) CHARACTER SET NONE то есть, можно, нло в документации пропустили а вот для сравнения в ib_udf.sql кодировки нет - DECLARE EXTERNAL FUNCTION strlen СSTRING(32767) RETURNS .... в fbudf.sql нету вообще CSTRING ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 14:01 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
AriochКак на интерпретацию CSTRING и особенно его "размера" в скобках влияют: 1) connection charset ? 2) database default charset ? на втором вопросе я скоро язву заработаю - дефолтный чарсет базы, это чарсет, который используется для строковых столбцов или переменных, если у них никакой чарсет не указан. При создании метаданных - таблиц, процедур, триггеров. Больше "дефолтный чарсет" ни для чего не используется. Так что, если метаданные УЖЕ существуют, про дефолтный чарсет можно забыть. Чарсет коннекта - определяет перекодирование или его отсутствие, если чарсет данных не совпадает с чарсетом коннекта. При чем тут "размер cstring в скобках"??? Он если и относится, то ко второму вопросу. И то, если чарсет не указан явно. авторпредел размера CSTRING указан в байтах, а не в буквах. Про кодировку же самих букв не говорится вообще ни в одной доке... не надо ля-ля, про "не говорится". Написано в руководстве по языку, например по ФБ 2.5 - страница 34. " для более экзотических алфавитов, рекомендуется работать с набором символов UTF8. При этом следует иметь в виду, что на один символ в данном наборе приходится до 4 байт. Следовательно, максимальный размер символов в символьных полях составит 32676/4 (8192) байта на символ. При этом следует обратить внимание, что фактически значение параметра «байт на символ» зависит от диапазона, к которому принадлежит символ: английские буквы занимают 1 байт, русские буквы кодировки WIN1251 — 2 байта, остальные символы — могут занимать до 4-х байт. " А насчет CSTRING - все те же правила по длине и кодировкам, что и для CHAR/VARCHAR. CSTRING просто 0-терминируемая строка, специфическая для udf. Ты, собственно, чего хочешь - чтобы в документации дописали пару предложений? Или чтобы ... что? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 16:18 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
kdv, Чтобы выяснили как реально обстоят дела и чётко отразили в обеих документациях, ENG/RUS > например по ФБ 2.5 - страница 34. Открываю официальный сайт, https://www.firebirdsql.org/en/reference-manuals/ Открываю официальное руководство Firebird 2.5 Language Reference (Russian) "6 сентября 2015 — v.0336-1 для Firebird 2.5.4", страница 34, "Подтипы BLOB" и "Особенности BLOB" BLOB <> CSTRING Делаю полнотекстовый поиск, твой кусок нахожу на страницах 29/30 Символьные типы данных В СУБД Firebird для работы с символьными данными есть тип данных фиксированной длины CHAR и строковый тип данных VARCHAR переменной длины. {VAR}CHAR <> CSTRING > Так что, если метаданные УЖЕ существуют ....и у эти метаданных есть чарсет - то да. А если нет? По документации у CSTRING никакого чарсета нет! > Чарсет коннекта - определяет перекодирование или его отсутствие А если у БД нет своего коннекта, например NONE ? А если коннект используется для создания БД на сервере, а не к уже существующей БД. Исходная ситуация: есть БД, она пересоздается и переливаются данные, в процессе этого вылезает превышение implementation limit, которого 1) на исходной БД нет; 2) не должно быть по докам; 3) не должно быть по прецеденту fbUDF (тот еще прецедентик, но какой есть, ПОСЛЕ облома с документацией). Понимаешь, в тот момент когда сервер ведёт себя не по документации - под сомнение ставится всё. Причина ошибки ищется в любом возможном месте. Потому что, если ошибка возникает в "правильном" и очевидном месте - он решается не приходя в сознание и на форумы никто не лезет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 17:49 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Arioch, потому что CSTRING это не тип данных Firebird и за пределами DECLARE EXTERNAL FUNCTION не используется. При возврате из функции он скорее всего приводится к CHAR или VARCHAR (точно не скажу). Возможно проблема в этом самом приведении. У меня тоже нет сведений как это работает. CSTRING(<size>) прямо отображается на AnsiChar[<size>] поэтому непосредственного чарсета у этого "типа" быть не может ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 18:07 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисПри возврате из функции он скорее всего приводится к CHAR или VARCHAR (точно не скажу). Возможно проблема в этом самом приведении. У меня тоже нет сведений как это работает. Лично я не осилил, что ты пытался сказать. Приведение делается к типу объекта "присвоения" - т.е. "переменная слева", cast, поле и пр. Включая чарсет, разумеется, если они разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 18:30 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисCSTRING(<size>) прямо отображается на AnsiChar[<size>] поэтому непосредственного чарсета у этого "типа" быть не можетЭто чушь, ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 18:30 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, почему же чушь. Как оно будет внутри UDF выглядить? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 20:05 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов Денис> Как оно будет внутри UDF выглядить? Не понял вопроса. Внутри UDF будет выглядеть как-то (как запрограммируют), в каком-то чарсете. Снаружи - как будет нужно снаружи, т.е. в т.ч. вдруг чарсете. Тут UDF, в т.ч. CSTRING, от любых других строк и литералов ничем не отличается - чарсеты приводятся совершенно прозрачно и автоматически. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 20:49 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Ну и догадаться внутри UDF в каком оно там чарсете прислано практически не возможно для любого из типов. У самого CSTRING чарсета указать нельзя, впрочем для остальных типов тоже. Так что ты наверное прав ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 21:00 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисНу и догадаться внутри UDF в каком оно там чарсете прислано практически не возможно для любого из типов. При передаче by descriptor в нём есть и чарсет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 22:04 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, мда уж. Давненько я в UDF не залазил, пора освежить память. Замолкаю ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2018, 22:34 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов Дениспочему же чушь. Как оно будет внутри UDF выглядеть? ответственно заявляю - чарсеты одинаково выглядят и конвертируются для char, varchar и cstring. Да, cstring существует только для UDF, но это не меняет отношения к чарсетам. Как внутри udf выглядит cstring, никого не колышет, главное чтобы оно - имело корректный чарсет - завершалось нулем, как положено. Если прописать внутри udf в строке какую-нибудь хрень, а на выходе это должно быть cstring character set utf8, то на выходе и получим тоже хрень. Этого избежать никак нельзя. Да, udf должна уметь обрабатывать данные внутри в зависимости от чарсета входящих строк. То есть, udf должна ЗАРАНЕЕ знать об обрабатываемом входном и выходном чарсете. Это, как бы, логическое следствие того, что явно чарсет строк в UDF никак не передается. Про это я писал тут, в конце: http://www.ibase.ru/unicode_faq/ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 02:00 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, еще бы кто-то этот by descriptor использовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 02:01 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов ДенисНу и догадаться внутри UDF в каком оно там чарсете прислано практически не возможно для любого из типов. При передаче by descriptor в нём есть и чарсет. kdvDimitry Sibiryakov, еще бы кто-то этот by descriptor использовал. Раз вы оба за то что при передаче by descriptor передаётся чарсет, значит он действительно передаётся. Только в каком поле? Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 09:21 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Hommer, вот много чего написано про UDF, в том числе и про BY DESCRIPTOR. И там упоминается что мол можно получить charset, но я нигде не увидел примера как это сделать. http://www.ibphoenix.com/files/Writing-External-Functions.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 09:37 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов Денис, спасибо. the sub_type (represents the blob's subtype and for string types, it is the charset plus the collation, encoded) Один байт - чарсет, другой - collation. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 10:13 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Hommer, ну и хорошо. Я в свою очередь обновлю в документации по SQL описание BY DESCRIPTOR и всего того, что касается языковых конструкций SQL для EXTERNAL FUNCTION согласно этому документу на выходных. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 10:23 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
HommerСимонов Денис, спасибо. the sub_type (represents the blob's subtype and for string types, it is the charset plus the collation, encoded) Один байт - чарсет, другой - collation. Только входные данные не преобразуются к чарсету параметра. Т.е. если функция объявлена как: Код: sql 1. 2. 3. 4.
и подключиться с чарсетом win1251, то при Код: sql 1.
внутри udf будет dsc_sub_type = 52 А если подключиться с чарсетом utf8, то при Код: sql 1.
внутри udf будет dsc_sub_type = 1028. Причём collate во втором случае похоже равен collate БД (у меня он 4). Собственно в документации и написано что туда можно передать всё что угодно, хоть число, и оно не будет преобразовано к варчару: We will see later that with this mechanism, the engine does not bother to check that the UDF's declared type for the param is the same as the value that will be passed. Use it only if you know what you're doing. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 11:21 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Hommer, я пока не вчитывался. От использования UDF отказался ещё при переходе 1.5 -> 2.5. А сейчас вообще на 3.0 сижу ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 11:23 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
HommerТолько входные данные не преобразуются к чарсету параметра. и это вряд ли будет правится. UDF в 4.0 признаны устаревшими, теперь надо писать UDR. Там возможностей намного больше, но и писать их несколько сложнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 11:39 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
HommerТолько входные данные не преобразуются к чарсету параметра. Собственно в документации и написано что туда можно передать всё что угодно, хоть число, и оно не будет преобразовано к варчару: Вот именно: при передаче дескриптора описание параметра игнорируется целиком, включая тип и чарсет, разумеется. Просто кому-то было лень перекраивать синтаксис параметров при его вводе, поэтому там и осталась такая вот грязь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 12:25 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, его перекраили для новых PSQL функций и UDR ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 12:45 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
HommerТолько входные данные не преобразуются к чарсету параметра. гм, интересно. значит я был неправ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 14:57 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
AriochА вот тут на FB 2.5.5 пытаются объявить CSTRING(32660) - и выпадают на implementation limit exceeded https://stackoverflow.com/questions/49547235/firebird-errors-when-using-symmetricds Подброшу. Попросил человека посмотреть кодировки старой и новой БД. I executed this SELECT RDB$CHARACTER_SET_NAME FROM RDB$DATABASE, the old DB return UNICODE_FSS, and new DB return NONE То есть каким-то странным образом (может ли это зависеть от диалекта, от ODS???) у него CSTRING(32660) срабатывало на многобайтовой (хотя и устаревшей) UNICODE_FSS, но не срабатывает на 1-байтовой NONE Странно это.... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 16:59 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисУ меня тоже нет сведений как это работает. я догадывался. Вот именно поэтому я это и поместил не в ветку о документации, а в общем разделе, пускай гуру посмотрят потестируют и сами поймут ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:00 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов ДенисCSTRING(<size>) прямо отображается на AnsiChar[<size>] поэтому непосредственного чарсета у этого "типа" быть не может Извините - но ANSIchar и ANSIstring как раз оооочень lf;имеют кодировку. Это у юникода кодировки нет, есть только Transport Format. А вот у ANSI есть Win1250, Win1252, oem850, oem866, KOI8-R, KOI8-U, KOI8-RU - на сайта Майкрософта несколько дестяков кодовых страниц, включая разные EBCDIC ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:02 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
HommerСимонов Денис, спасибо. the sub_type (represents the blob's subtype and for string types, it is the charset plus the collation, encoded) Один байт - чарсет, другой - collation. Нуц а для блобов subtype имеет свое значение, там видимо надо добираться до Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:06 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Ariochне срабатывает на 1-байтовой NONE NONE - не однобайтовая. Это вообще затычка для "передавай строки как есть, тупым массивом байт". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:07 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
kdvHommerТолько входные данные не преобразуются к чарсету параметра. гм, интересно. значит я был неправ. Это только в случае BY DESCRIPTOR, про это явно написан ов русской документации (я вроде даже цитировал) и это по своему логично - если ты хочешь получить сырые не испорченные преобразованиями данные с низкоуровневым нативным файрбёрдовским описанием их - вот оно тебе пожалуйста. Другой вопрос зачем при этом тип указывать? так и писали бы ,что такой-то параметр UDFки имеет тип "дескриптор" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:10 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochне срабатывает на 1-байтовой NONE NONE - не однобайтовая. Это вообще затычка для "передавай строки как есть, тупым массивом байт". Угу, а размер элемента "тупого массива байт" внезапно 1 байт, как я и сказал. Откуда же implementation limit exceeded ? Самый безумный вариант, они слишком давно commit не делали и на стопиццотом DDL сервер сломался, а то что при этом создавалас UDF - просто совпадение. Могло такое быть ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:12 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Arioch, да какая разница теперь зачем? Всё UDF развивать больше не будут, а в новом типе функций всё по другому ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:14 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Симонов Денис, что именно "зачем" ? функционал есть, унаследованных программ - много. люди на грабли натыкаются, по факту. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:18 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
AriochСамый безумный вариант, они слишком давно commit не делали и на стопиццотом DDL сервер сломался, а то что при этом создавалас UDF - просто совпадение. Могло такое быть ? а вообще - нет, он же там на одной этой команде в IBExpert получает ту же ошибку.... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:28 |
|
Помогите передать Ansi строчку из UDF
|
|||
---|---|---|---|
#18+
Arioch, я про AriochДругой вопрос зачем при этом тип указывать? для обратной совместимости оставят как есть. Баги мелкие править будут, но развивать UDF больше не будут. В 4.0 даже fbudf переписали как UDR ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2018, 17:36 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561187]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 307ms |
total: | 449ms |
0 / 0 |