Падежные окончания ....ААА горю... | |
---|---|
Niki Сообщений: 208 Откуда: Великий Новгород Дата регистрации: 13.05.2001 |
АААА, Братцыыыы.... горю.....завтра тему сдавать.....30% сделано, работы куча, помогайте....
Задачка простая, не торорясь написал бы сам, но нет времени...... В базе есть имя, фамилия, отчество Петров Иван Иванович - иминительный падеж... Пупкина Любовь Петровна.....Пак Борис Петрович.....Сат Юрий Эйзирикпеевич...и т.д. Нужно получить дательный - Петрову Ивану Ивановичу .....и т.д. У кого может быть есть готовый модуль чтобы мне особо мозгами не приседать..... Я пока основную тему попишу...... С меня море пива при встрече [i][small][color=Gray]Отредактировано (23.10.03 20:10) ------------------ Со всем уважением к Вам, Niki |
Re: Падежные окончания ....ААА горю... | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Года два назад нашел чудную вещь:
www.delphikingdom.ru Склоняет прекрасно во все падежи, только есть момент - если отчество задано полностью, то больше ничего не надо, а если только имя или фамилия и имя, то нужно указать пол. Есть настройка для всяких исключений в виде ini-файла, но за два года работы (таблица порядка 6 тысяч человек) ошибок не замечал... Библиотека сделана на дельфи в виде DLL вызывается из фокса без проблем. [i][small][color=Gray]Отредактировано (24.10.03 04:48) ------------------ |
Re: Падежные окончания ....ААА горю... | |
---|---|
ivan_kg Сообщений: 152 Откуда: Москва Дата регистрации: 22.11.2001 |
Хорошо, когда русские фамилии, да имена....
Пападись вам как у нас в киргизстане какой нибудь Нурбек уулу Болот или Нургуль кызы Трахторбек |
Re: Падежные окончания ....ААА горю... | |
---|---|
Niki Сообщений: 208 Откуда: Великий Новгород Дата регистрации: 13.05.2001 |
matod !Спасибо !А примерчик использования не чиркнешь?
PS. Спасибо Михаилу Савину, то-же мне прислал, хорошую функцию.... Наверное теперь успею , хотя клава уже дымиться, и спать охота.... вечерком по [i][small][color=Gray]Отредактировано (24.10.03 09:17) ------------------ Со всем уважением к Вам, Niki |
Re: Падежные окончания ....ААА горю... | |
---|---|
Gliph Автор Сообщений: 554 Откуда: Сумы - Украина Дата регистрации: 31.10.2002 |
Пишу - пишу, все инет вылетает.
Мож код большой....... Если не выйдет - отправлю на мыло |
Re: Падежные окончания ....ААА горю... | |
---|---|
Gliph Автор Сообщений: 554 Откуда: Сумы - Украина Дата регистрации: 31.10.2002 |
*********************************************************
* Функция преобразования фамилии, имя, отчества * в форму нужного падежа * * Аргументы: * mFamily - фамилия * mName - имя * mSoName - отчество * Pol - пол (допустимые значения "м", "ж") * Padeg - падеж (допустимые значения 1..6) * && 1-именительный * && 2-родительный * && 3-дательный * && 4-винительный * && 5-творительный * && 6-предложный ********************************************************* Function FIO Parameter mFamily, mName, mSoName, Pol, Padeg mFamily=AllTrim(mFamily) mName=AllTrim(mName) mSoName=AllTrim(mSoName) If Between(Padeg, 1, 6) Pol=Lower(Pol) Do Case Case Pol="м" mFio=Fam_m(mFamily, padeg) && преобразуем фамилию mFio=mFio + " " + Name_m(mName, padeg) && преобразуем имя mFio=mFio + " " + SoName_m(mSoName, padeg) && преобразуем отчество Case Pol="ж" mFio=Fam_w(mFamily, padeg) && преобразуем фамилию mFio=mFio + " " + Name_w(mName, padeg) && преобразуем имя mFio=mFio + " " + SoName_w(mSoName, padeg) && преобразуем отчество OtherWise && если не указан пол, выдаем сообщение об ощибке mFio="Hеверно указан пол !" EndCase ELSE mFio="Hедопустимое значение падежа !" EndIf Return mFio ******************************************** * Преобразование мужской фамилии ******************************************** Function Fam_m Parameter Fam, Pad && параметры фамилия в именит. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki Fam_m="" Fam=Proper(Fam) Len=Len(Fam) && определяем количество букв в фамилии Ok=Substr(Fam, Len-2, 3) && берем последние 3 буквы фамилии If Ok="кий" .OR. Ok="ний"; && если окончание такое Fam=Substr(Fam, 1, len-2) && то формируем фамилию Do Case Case Ok="кий" Oki[1]="ий" Oki[2]="ого" Oki[3]="ому" Oki[4]="ого" Oki[5]="им" Oki[6]="ом" Case Ok="кий" Oki[1]="ий" Oki[2]="его" Oki[3]="ему" Oki[4]="его" Oki[5]="им" Oki[6]="ем" EndCase Fam_m=Fam+Oki[Pad] && добавляем к фамилии окончание Return Fam_m && возвращем результат EndIf ***** перебираем другие окончания Ok=Substr(Fam, Len-1, 2) && берем последние две буквы If Ok="ий" Fam=Substr(Fam, 1, Len-1) && формируем фамилию Oki[1]="й" Oki[2]="я" Oki[3]="ю" Oki[4]="я" Oki[5]="ём" Oki[6]="е" Fam_m=Fam+Oki[Pad] && добавляем к фамилии окончание Return Fam_m && возвращем результат EndIf Do Case Case Ok="ын" .OR. Ok="ин" .OR. Ok="ев" .OR. Ok="ёв" .OR. Ok="ов" Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ым" Oki[6]="е" Case Ok="ян" .OR. Ok="ан" .OR. Ok="он" .OR. Ok="ук" ; .OR. Ok="юк" .OR. Ok="яр" Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ом" Oki[6]="е" Case Ok="ок" If Pad>1 Fam=Substr(Fam, 1 , len-2)+"к" EndIf Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ом" Oki[6]="е" Case Ok="ый" .OR. Ok="ой" Fam=Substr(Fam, 1, Len-2) Oki[1]="" Oki[2]="ого" Oki[3]="ому" Oki[4]="ого" Oki[5]="ым" Oki[6]="ом" Case Ok="ич" Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ем" Oki[6]="е" EndCase Fam_m=Fam+Oki[Pad] Return Fam_m ******************************************** * Преобразование женской фамилии ******************************************** Function Fam_w Parameter Fam, Pad && параметры фамилия в имен. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki Fam_m="" Fam=Proper(Fam) Len=Len(Fam) && определяем количество букв в фамилии Ok=Substr(Fam, Len-1, 2) && берем посление 3 буквы фамилии If Ok="ая" .OR. Ok="яя"; && если окончание такое Fam=Substr(Fam, 1, len-2) && то формируем фамилию Do Case Case Ok="ая" Oki[1]="ая" Oki[2]="ой" Oki[3]="ой" Oki[4]="ую" Oki[5]="ой" Oki[6]="ой" Case Ok="яя" Oki[1]="яя" Oki[2]="ей" Oki[3]="ей" Oki[4]="юю" Oki[5]="ей" Oki[6]="ей" EndCase Fam_m=Fam+Oki[Pad] && добавляем к фамилии окончание Return Fam_m && возвращем результат EndIf ***** перебираем другие окончания Ok=Substr(Fam, Len-2, 3) && берем последние две буквы If Ok="ова" .OR. Ok="ева" .OR. Ok="ёва" .OR. Ok="ина" Fam=Substr(Fam, 1, Len-1) && формируем фамилию Oki[1]=Ok Oki[2]="ой" Oki[3]="ой" Oki[4]="у" Oki[5]="ой" Oki[6]="ой" EndIf Fam_m=Fam+Oki[Pad] Return Fam_m ************************************************** * Функция преобразования мужского имени * * ************************************************** Function Name_m Parameter Name, Pad && параметры: имя в имен. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki Name=Proper(Name) Len=Len(Name) Ok=Substr(Name, Len, 1) && смотрим окончание Do Case Case Ok="й" Oki[1]="" Oki[2]="я" Oki[3]="ю" Oki[4]="я" Oki[5]="ем" Oki[6]="е" Name=Substr(Name, 1, Len-1) OtherWise Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ом" Oki[6]="е" EndCase Name_m=Name+Oki[Pad] Return Name_m ************************************************** * Функция преобразования женского имени * * ************************************************** Function Name_w Parameter Name, Pad && параметры: имя в имен. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki Name=Proper(Name) Len=Len(Name) Ok=Substr(Name, Len, 1) && смотрим окончание Do Case Case Ok="а" Oki[1]="" Oki[2]="ы" Oki[3]="е" Oki[4]="у" Oki[5]="ой" Oki[6]="е" Name=Substr(Name, 1, Len-1) Case Ok="я" Oki[1]="" Oki[2]="и" Oki[3]="е" Oki[4]="ю" Oki[5]="ей" Oki[6]="и" Name=Substr(Name, 1, Len-1) EndCase Name_m=Name+Oki[Pad] Return Name_m ************************************************** * Функция преобразования мужского отчества * * ************************************************** Function SoName_m Parameter SoName, Pad && параметры: имя в имен. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki SoName=Proper(SoName) Len=Len(SoName) Oki[1]="" Oki[2]="а" Oki[3]="у" Oki[4]="а" Oki[5]="ем" Oki[6]="е" SoName_m=SoName+Oki[Pad] Return SoName_m ************************************************** * Функция преобразования женского отчества * * ************************************************** Function SoName_w Parameter SoName, Pad && параметры: имя в имен. падеже && и требуемый падеж && 1-именительный && 2-родительный && 3-дательный && 4-винительный && 5-творительный && 6-предложный Declare Oki(6) && определяем массив окончаний Store "" to Oki SoName=Proper(SoName) Len=Len(SoName) Ok=Substr(SoName, Len, 1) && смотрим окончание If Ok="а" Oki[1]="а" Oki[2]="ы" Oki[3]="е" Oki[4]="у" Oki[5]="ой" Oki[6]="е" SoName=Substr(SoName, 1, Len-1) EndIf SoName_w=SoName+Oki[Pad] Return SoName_w |
Re: Падежные окончания ....ААА горю... | |
---|---|
Niki Сообщений: 208 Откуда: Великий Новгород Дата регистрации: 13.05.2001 |
Ну, завалили решениями, ну спасибо !
Вот чего мне у нас нравиться (хоть нас все и хают) так это скорая помощь....которую не встретишь на других языках..... Это наверное потому что наш фоксяра от Мфох+ да Рбэйсов (коммунистических времен) далеко не ушел, чувствуется воспитание.... А вообще эту тему в решения надо положить, чтоб не париться кому то лишний раз. Ладно, работать всем. Всем спасибо, все свободны.... ------------------ Со всем уважением к Вам, Niki |
Re: Падежные окончания ....ААА горю... | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Пример использования padeg.dll. Эта самое простое применение этой библиотеки. Предполагается, что ФИО задано полностью и надо получить родительный падеж.
function RODFIO
|
Re: Падежные окончания ....ААА горю... | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
А вот интересно действительно, будет эта библиотека на таких фамилиях правильно работать? Вообще в доке к ней написано, что по крайней мере Кызы и Оглы она понимает правильно .
|
© 2000-2024 Fox Club  |