udf x64 - урезает строку

sydenis
Дата: 10.08.2012 14:44:47
Есть udf честно прослужившая много лет на win32 (писалась на delphi 7).
Перекомпилировал её под x64 на delphi xe2 для работы с fb2.5 x64.
Вроде работает - не ругается, но вместо выходных строк выдаёт только первый символ.
В чём проблема: в x64 или в дельфийском юникоде?

вот простой примерчик
function MyFunc: PChar; cdecl; export;
var
  s: string;
begin
  s := IntToStr(100 + Random(1000));

  Result := ib_util_malloc(Length(s) + 1);
  StrPCopy(Result, s)
end;


DECLARE EXTERNAL FUNCTION MYFUNC
RETURNS CSTRING(128) FREE_IT
ENTRY_POINT 'MyFunc' MODULE_NAME 'MY_UDF.DLL' 
Dimitry Sibiryakov
Дата: 10.08.2012 14:54:42

sydenis
В чём проблема: в x64 или в дельфийском юникоде?

В уникоде. Но не "дельфийском", а вообще. Ты просто не врубаешься что это такое - уникод,
а конкретно - UTF-16.

Posted via ActualForum NNTP Server 1.5

Симонов Денис
Дата: 10.08.2012 15:42:58
Попробуй
s: string; заменить на s: ansistring;
function MyFunc: PChar на function MyFunc: PAnsiChar
sydenis
Дата: 10.08.2012 16:11:19
Симонов Денис
Попробуй заменить на ansistring; PAnsiChar

Спасибо заработало :)

Dimitry Sibiryakov
Ты просто не врубаешься что это такое - уникод

Ну так поясни, добрый человек, чего затаился?
Dimitry Sibiryakov
Дата: 10.08.2012 16:21:21

sydenis
Ну так поясни, добрый человек, чего затаился?

Что? Цитировать тебе весь www.unicode.org?.. Оно мне надо?..

Posted via ActualForum NNTP Server 1.5

Basil A. Sidorov
Дата: 10.08.2012 16:25:43
Dimitry Sibiryakov
Цитировать тебе весь www.unicode.org?..
... и еще про null-terminated строки ;)
sydenis
Дата: 10.08.2012 18:03:50
Basil A. Sidorov
Dimitry Sibiryakov
Цитировать тебе весь www.unicode.org?..
... и еще про null-terminated строки ;) .. Оно мне надо?.

дык коль не надо - так знай проходи мимо тихо - другие помогут
а широко пальцы развести - я и сам умею
Dimitry Sibiryakov
Дата: 10.08.2012 18:51:35

sydenis
широко пальцы развести - я и сам умею

Лучше б ты учиться умел...

Posted via ActualForum NNTP Server 1.5

kdv
Дата: 10.08.2012 21:12:52
sydenis
вот простой примерчик
function MyFunc: PChar; cdecl; export;

примерчик жуткий, потому что правильный примерчик - тут
http://www.ibase.ru/unicode_faq.html#udf

:-)
kdv
Дата: 10.08.2012 21:16:19
sydenis
Ну так поясни, добрый человек, чего затаился?

Денис, ты просто сиганул на XE2, не прочитав, что с 2009 PChar уже не тот PChar, и так далее.
http://edn.embarcadero.com/article/38703