Пытаюсь пользоваться функциями из библиотеки padegUC.dll (4 версия с поддержкой юникода).
Объявление и использование беру прямо из их руководства
- Код: Выделить всё
function GetFIOPadegFSAS(pFIO: PChar; nPadeg: longint; pResult: PChar;
var nLen: longint): integer; stdcall; external
'PadegUC.dll' Name 'GetFIOPadegFSAS';
function GetAppointmentPadeg(pAppointment: PChar; nPadeg: longint;
pResult: PChar; var nLen: longint): integer;
stdcall; external 'PadegUC.dll' Name 'GetAppointmentPadeg';
=============================
function TForm1.MakeCase(const ATargetStr: string; ACase: integer;
IsAppointment: boolean): string;
var
tmpS: PChar;
nLen: longint;
RetVal: integer;
begin
Result := '';
nLen := Length(ATargetStr) + 10;
tmpS := StrAlloc(nLen);
try
if IsAppointment then
RetVal := GetAppointmentPadeg(PChar(ATargetStr), ACase, tmpS, nLen)
else
RetVal := GetFIOPadegFSAS(PChar(ATargetStr), ACase, tmpS, nLen);
if RetVal = 0 then Result := StrPas(tmpS);
finally
StrDispose(tmpS);
end;
end;
Функция сама вызывается, но не работает. В возвращаемой строке идет первоначальная строка без какого-либо склонения по падежам, хоть ФИО, хоть должность.
Если кто-то пользовался и получилось - поделитесь, пожалуйста (может работает нормально старая версия, но как с юникодом поступили?)