Показать сообщение отдельно
  #12  
Старый 13.07.2012, 19:38
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Попробовал использовать для склонения фамилий Padeg.dll. Работает склонение если нет инициалов. Если выбираю в комбобоксе "Иванов" в едите выдает "Иванову". Проблема в том что не хочет склонять если с фамилией идут инициалы (Иванов И.И.).
У меня padeg.dll в папке с программой.
Код:
  public
    { Public declarations }
  end;

var

  DllHandle : HMODULE;
  GetFIOPadeg   : function (pLastName, pFirstName, pMiddleName: PChar;
                           bSex: Boolean; nPadeg: LongInt; pResult: PChar;
                           var nLen: LongInt): Integer; stdcall;


  Form2: TForm2;
  Sex:boolean;
  nLen:LongInt;
  pResult:PChar;
  pVar:integer;
  FPadeg:Boolean;
  Fio,nName,SName:string;

implementation

procedure TForm2.ComboBox2Chenge(Sender: TObject);
begin
    Fio:=ComboBox2.Text;

    Sex:=True;
    if Assigned(GetFIOPadeg) then
      begin
        nLen := Length(FIO)+10;
        pResult:=StrAlloc(nLen);
        try
           pVar:=GetFIOPadeg(PChar(Fio),'','',Sex,3, pResult, nLen);
           Edit3.Text:=pResult;
        finally
           StrDispose(pResult);
    end;
   end;
  end;procedure TForm12.ComboBox2Chenge(Sender: TObject);
begin
    Fio:=ComboBox2.Text;

    Sex:=True;
    if Assigned(GetFIOPadeg) then
      begin
        nLen := Length(FIO)+10;
        pResult:=StrAlloc(nLen);
        try
           pVar:=GetFIOPadeg(PChar(Fio),'','',Sex,3, pResult, nLen);
           Edit3.Text:=pResult;
        finally
           StrDispose(pResult);
    end;
   end;
  end;


initialization
   DllHandle := LoadLibrary('padeg.dll');
   FPadeg:=True;
   if DllHandle <> 0 then
     Begin
       @GetFIOPadeg := GetProcAddress(DllHandle, 'GetFIOPadeg');
     end
   else
     FPadeg:=False;
finalization
   FreeLibrary(DllHandle);
end.
Вот в таком варианте без инициалов склонение происходит. Взял отсюда вроде все правильно сделал а не работает.
Ответить с цитированием