Привет всем.
Есть интересная ситуация с передачей unicode строки в UDF и получения
такой же строки обратно. Есть пробная UDF с таким текстом
library wstrudf;
{$R *.res}
uses Windows, SysUtils;
threadvar
W: PWideChar;
function TestWideChar(Input: PWideChar): PWideChar; cdecl; export;
begin
W := Input;
Result := W;
end;
exports
TestWideChar name 'TestWideChar';
begin
System.IsMultiThread := True;
end.
В базе объявлена как
DECLARE EXTERNAL FUNCTION TWC
VARCHAR(20) CHARACTER SET UNICODE_FSS
RETURNS VARCHAR(20) CHARACTER SET UNICODE_FSS FREE_IT
ENTRY_POINT 'TestWideChar' MODULE_NAME 'wstrudf'
Вся база тоже в UNICODE_FSS.
Запрос
select TWC('ява') from rdb$database
вернёт 'ÿâa'
Как решить эту проблему.