![]() |
|
#12
|
||||
|
||||
![]() Попробовал использовать для склонения фамилий 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. Последний раз редактировалось fofka, 18.07.2012 в 11:43. |