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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.07.2012, 10:08
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Склонение фамилий

В комбобокс грузится список фамилий с инициалами, скажем Иванов П.П. Сидоров А.С. и т.д.. Подскажите как сделать так, если я выбрал в комбобоксе Иванов П.П. то в едит1 будет Иванову П.П., соответсвенно если выбран Сидоров А.С. то Сидорову А.С..
Ответить с цитированием
  #2  
Старый 13.07.2012, 10:24
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

а что должно быть с "Куценко"?) "Куценкоу" или "Куценку"
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 13.07.2012, 10:26
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Цитата:
Сообщение от NumLock
а что должно быть с "Куценко"?) "Куценкоу" или "Куценку"
Нда. Чет я про такой вариант не подумал Получается если фамилия заканчивается на "О" то можно не исправлять...
Ответить с цитированием
  #4  
Старый 13.07.2012, 10:37
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

еще фамилии женщин "Сидорова" - "Сидоровой"...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 13.07.2012, 10:38
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Цитата:
Сообщение от NumLock
еще фамилии женщин "Сидорова"...
Ну тут проще. Женщин точно не будет. Только мужчины.
Ответить с цитированием
  #6  
Старый 13.07.2012, 10:41
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

смотрю базу абонентов:
СИНГУР, МАРУЩАК, ДУДАРЬ
думаю они тоже не склоняются
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 13.07.2012, 10:43
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Вконтакт вроде по оконцанию фамилии анализирует, потом склоняет.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #8  
Старый 13.07.2012, 10:45
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Чуть подумал, и понял что с наскока не получится. Но попробовать стоит.
Ответить с цитированием
  #9  
Старый 13.07.2012, 10:49
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

в Королевстве:
On-line тестирование библиотеки склонений
Склонение фамилий, имен и отчеств по падежам Библиотека функций
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #10  
Старый 13.07.2012, 11:48
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Когда дело касается Русских фамилий, с некоторыми исключениями, можно вычислить правильные падежи, а вот когда вы столкнетесь с фамилиями из той-же грузии, армении, казахстана и т.д. вот тут начнется проблема. Еще хуже дело обстоит с отчествами, где приставки могут обозначать сразу и пол и статус родственный и черте что еще.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #11  
Старый 13.07.2012, 12:40
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Радость

Велик и Могуч Русский Язык
sorry for offtop
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #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, время: 00:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter