![]() |
|
|
#1
|
||||
|
||||
|
В комбобокс грузится список фамилий с инициалами, скажем Иванов П.П. Сидоров А.С. и т.д.. Подскажите как сделать так, если я выбрал в комбобоксе Иванов П.П. то в едит1 будет Иванову П.П., соответсвенно если выбран Сидоров А.С. то Сидорову А.С..
|
|
#2
|
||||
|
||||
|
а что должно быть с "Куценко"?) "Куценкоу" или "Куценку"
![]() |
|
#3
|
||||
|
||||
|
Цитата:
Получается если фамилия заканчивается на "О" то можно не исправлять... |
|
#4
|
||||
|
||||
|
еще фамилии женщин "Сидорова" - "Сидоровой"...
|
|
#5
|
||||
|
||||
|
Цитата:
|
|
#6
|
||||
|
||||
|
смотрю базу абонентов:
СИНГУР, МАРУЩАК, ДУДАРЬ думаю они тоже не склоняются |
|
#7
|
||||
|
||||
|
Вконтакт вроде по оконцанию фамилии анализирует, потом склоняет.
|
|
#8
|
||||
|
||||
|
Чуть подумал, и понял что с наскока не получится. Но попробовать стоит.
|
|
#9
|
||||
|
||||
|
|
|
#10
|
||||
|
||||
|
Когда дело касается Русских фамилий, с некоторыми исключениями, можно вычислить правильные падежи, а вот когда вы столкнетесь с фамилиями из той-же грузии, армении, казахстана и т.д. вот тут начнется проблема. Еще хуже дело обстоит с отчествами, где приставки могут обозначать сразу и пол и статус родственный и черте что еще.
|
|
#11
|
||||
|
||||
|
Велик и Могуч Русский Язык
sorry for offtop |
|
#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. |