Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Janex

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.
Немношко напильником пришлось, а то под Дельфу 2009 ето, и
в место Length(S) прописал Length(S) * 2 и всё заработало.

Если кому интересно и надо то вот:

function WideStringToUTF8(const S: string): string;
begin
  SetLength(Result, WideCharToMultiByte(CP_UTF8, 0, @S[1], Length(S) * 2 div 
SizeOf(WCHAR), nil, 0, nil, nil));
  WideCharToMultiByte(CP_UTF8, 0, @S[1], Length(S) * 2 div SizeOf(WCHAR),  
@Result[1], Length(Result) * 2, nil, nil);
end;


Function dbMessage(AIndex: Integer; ALanguage: PChar): PChar; Cdecl; Export;
Var ReturnString :PChar;
lsResult :WideString;
Begin
  ReturnString  := ib_util_malloc(1024);
  lsResult  := 'Jānis Briška, Янис Бришка, English text';
  StrCopy(ReturnString, Pchar( WideStringToUTF8(lsResult)));
  Result := ReturnString;
End;


Regards
Janex



Re: Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Alexey Popov



Janex wrote:

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.


А чем стандартная WideCharToMultiByte не угодила?




Re: Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Janex

On 27.01.2010 12:22, Alexey Popov wrote:



Janex wrote:

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.


А чем стандартная WideCharToMultiByte не угодила?




А чёрт его знает - 100 всяких вариантов испробовал, чтото неполучалось, наверно
чтото неправильно делал - етото вариант пошёл и дальше его трогать както 
нехочется :)

Regards
Janex