Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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.
Вот в таком варианте без инициалов склонение происходит. Взял отсюда вроде все правильно сделал а не работает.

Последний раз редактировалось fofka, 18.07.2012 в 11:43.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025