Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Полигон
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 10:35 Владимир Метальников
 10:32 Geo
 
 
Во Флориде и в Королевстве сейчас  10:45[Войти] | [Зарегистрироваться]

Обсуждение материала
Склонение фамилий, имен и отчеств по падежам Библиотека функций.
Полный текст материала


Другие публикации автора: Сергей Плахов
Другие публикации автора: Геннадий Покаташкин

Цитата или краткий комментарий:

«... Программный продукт предназначен для преобразования фамилии, имени, отчества (ФИО), заданных в именительном падеже, в форму любого падежа. При этом, ФИО может быть задано как одной строкой, так и тремя. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.




Смотрите также материалы по темам:
[Обработка текста]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 327

10-09-2017 14:44
Скажите, пожалуйста, возможно ли использовать эту библиотеку на c#?>>>
Сообщение не подписано


11-06-2017 23:55
Скачала последнюю версию библиотеки. Попробовала использовать функцию DeclCurrency для формирования суммы прописью для 2 разных валют, но наткнулась на такую проблему: сумма прописью выдается всегда в первой указанной валюте, а код второй валюты как бы не видит, хотя он явно задан. Вот и получается, что если мне надо сформировать пропись для рублей и, скажем, долларов, то в прописи всегда будут рубли. Если первые будут доллары, то обе суммы будут в долларах... Может кто-нибудь сталкивался с такой проблемой?



30-05-2017 00:57
Это сообщение к сообщению от 11-02-2017 03:17

После долгих мытарств нашел где грабли мои были. ))) Может кому еще пригодиться.

1. Чисто случайно увидел на google-диске, что PadegUC.dll изменен 31.12.2016 г., перезакачал, т.к. у меня была старее версия.
Начало "работать", но как раз уже с ошибками о которых писал уважаемый seer_true, т.е. "Без преобразования в/из юникод(а) на выходе получал урезанную строку ФИО в именительном падеже, что вполне объяснимо (библиотека возвращала не корректное значение nLen)." Хоть немного, но это был уже прогресс.
2. После этого долго бился над всевозможными изменениями кодировок, чего только не перепробовал, и так, и сяк, и на перекосяк... Нихт арбайтен и все тут.

Как итог - ларчик просто открывался:
При объявлении надо обязательно указать атрибут Unicode и все заработает как надо, т.к. по умолчанию преобразует все строки в значения ANSI, т.е. надо так и все заработает:

Private Declare Unicode Function GetPadeg Lib "PadegUC.dll" Alias "GetFIOPadegFSAS" (ByVal pFIO As String, ByVal nPadeg As Integer, ByVal pResult As String, ByRef nLen As Integer) As Integer




07-04-2017 09:43
сообщение от автора материала
Напоминаю, что есть группа вконтакте посвященная библиотеке
https://vk.com/public93917660
 Seer


07-04-2017 05:29
2YAV
Как можно исправить ситуацию, во многих местах используется именно GetFIOPadegFS, и не факт что только для такой ФАМИЛИИ теряется ОТЧЕСТВО.

Здесь дело не в фамилии, как таковой, а в том, что она составная и записана не через дефис. Попробуйте заменить пробел в фамилии на дефис. Если это критично в результате, то придется выполнить обратное преобразование после склонения.

Может как то использовать словарь исключений, только я не понял в какую секцию тогда вписать исключение.
Не думаю, что словарь как-то поможет в такой ситуации.


07-04-2017 01:29
Подскажите пожалуйста
Есть человек с Фам = АБУ ХАЗИМ, Им = МАРИАННА, От = СЕРГЕЕВНА
Если использовать GetFIOPadegFS, то теряется ОТЧЕСТВО
Если использовать GetFIOPadeg, то ОТЧЕСТВО остается

Как можно исправить ситуацию, во многих местах используется именно GetFIOPadegFS, и не факт что только для такой ФАМИЛИИ теряется ОТЧЕСТВО.
Может как то использовать словарь исключений, только я не понял в какую секцию тогда вписать исключение.


12-03-2017 14:38
а в MS Office 2007/2010 эта библиотека работает?


11-02-2017 03:17
День добрый.
Используя в VB (Visaul Studio 2015, целевая платформа .NET Framework 4) старую версию библиотеки Padeg.dll с ниже приведенным кодом все работает нормально, склонение идет, никаких ошибок.
[Code=Библиотека Padeg.dll]
Private Declare Function GetPadeg Lib "Padeg.dll" Alias "GetFIOPadegFSAS" (ByVal pFIO As String, ByVal nPadeg As Integer, ByVal pResult As String, ByRef nLen As Integer) As Integer
    Public Function MakePadeg(ByVal cFIO As String, ByVal nPadeg As Long) As String
        Dim nLen As Long = 255
        Dim tmpS As String = StrDup(255, Chr(0))
        Dim RetVal As Integer
        If Len(cFIO) = 1 Then
            MakePadeg = -2
            Exit Function
        End If
        RetVal = GetPadeg(cFIO, nPadeg, tmpS, nLen)
        '    MsgBox(tmpS)
        If RetVal = -1 Then MsgBox("Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение ФИО")
        MakePadeg = Mid(tmpS, 1, nLen)
    End Function


Попытался использовать новую версию библиотеки PadegUC.dll с ниже приведенным кодом получаю "ошибку", склонение не происходит, программа просто завершает работу.
Также пробовал по аналогии с примером приведенным в Readme переводить в Unicode и обратно, результат тот же. (Но, имхо, если я правильно понимаю, переводить в Unicode в принципе не надо, т.к. данные для склонения берутся из TextBox, а текст TextBox'a в VS 2015 итак хранится в Unicode).
[Code=Библиотека PadegUC.dll]
Private Declare Function GetPadeg Lib "PadegUC.dll" Alias "GetFIOPadegFSAS" (ByVal pFIO As String, ByVal nPadeg As Integer, ByVal pResult As String, ByRef nLen As Integer) As Integer
    Public Function MakePadeg(ByVal cFIO As String, ByVal nPadeg As Long) As String
        Dim nLen As Long = 255
        Dim tmpS As String = StrDup(255, Chr(0))
        Dim RetVal As Integer
        If Len(cFIO) = 1 Then
            MakePadeg = -2
            Exit Function
        End If
        RetVal = GetPadeg(cFIO, nPadeg, tmpS, nLen)
        '    MsgBox(tmpS)
        If RetVal = -1 Then MsgBox("Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение ФИО")
        MakePadeg = Mid(tmpS, 1, nLen)
    End Function

Подскажите, пожалуйста, где и в чем ошибка, сам понять не могу. Заранее спасибо.


18-10-2016 14:52
сообщение от автора материала
Федорив Александр Сергеевич

Родительный (кого/чего нет): Федорива Александра Сергеевича
Дательный (кому/чему дать): Федориву Александру Сергеевичу
Винительный (кого/что вижу): Федорива Александра Сергеевича
Творительный (кем/чем горжусь): Федоривым Александром Сергеевичем
Предложный (о ком/о чем мечтаю): Федориве Александре Сергеевиче

Это верный результат?
 Seer


28-07-2016 22:04
Нашлась ещё одна неправильно склоняемая фамилия: Федорива
Она должна склоняться по аналогии с фамилией Федорова.


30-05-2016 22:05
А под linux портировали уже? В обсуждении пару раз проскакивали вопросы и ответы в духе "что хотим, но попозже".


01-03-2016 00:10
В принципе, я уже разобралась с вызовом из C#...

Есть маленькое предложение по программе - так как со справочником валют можно склонять любые единицы измерения, возможно ли сделать ещё одно отображение без расшифровки числительного типа: 11 попугаев.


29-02-2016 06:28
Здравствуйте!

Скажите, пожалуйста, может быть кто-нибудь знает как правильно вызывать из C# функцию DeclCurrency (так как в нем отсутствует тип Currency)?


04-12-2015 03:39
to Seer
Конечно, библиотека оказалась не причем, как и моя программка.
При запуске программа регистрируется в базе данных, проверяет допуски и т.д. Регистратор в терминальном режиме неправильно кодирует пользовательский пароль, выдавая в нем в некоторых случаях недопустимый (в контексте декодирования) символ. Как оказалось, и раньше люди сталкивались с траблом (юниту порядка десяти лет), который обычно решали заменой пароля :)

Сорри за офтоп.


10-11-2015 03:44
сообщение от автора материала
> Формально правильно, но противоречит моему жизненному опыту

Я рад, что все таки правильно, хоть и формально.
Мой жизненный опыт говорит мне что солнце вокруг, а не земля, но учебники утверждают обратно.
Все таки согласитесь, что реализация неких алгоритмов основывается на некоторых формах (правилах), а уж никак не на "жизненных опытах", тем более что все они у всех неоднозначные.
 Seer


19-10-2015 17:43
>О! Помнится здесь эта тема уже возникала. Но не все так однозначно. Мы следовали вот такому подходу.

Спасибо за развёрнутый ответ. Формально правильно, но противоречит моему жизненному опыту :)


18-10-2015 22:16
сообщение от автора материала
2Олесь: О! Помнится здесь эта тема уже возникала. Но не все так однозначно. Мы следовали вот такому подходу.

Мужские фамилии восточнославянского происхождения, имеющие беглую гласную при склонении, могут склоняться двояким образом - с потерей и без потери гласной при склонении: Заяц - Заяца - Заяцем и Зайца - Зайцем.
Учитывая юридическую функцию, выполняемую фамилиями, предпочтение следует отдавать склонению без выпадения гласного.

http://www.bgunb.ru/bgunb/professional/bgb/2002/3/article8.html Основы делового общения

————-

По правилам мужские фамилии восточнославянского происхождения, имеющие беглую гласную при склонении, могут склоняться двояким образом - с потерей и без потери гласной при склонении: Заяц - Заяца - Заяцем и Зайца - Зайцем. По мнению специалистов языковедов, предпочтение следует отдавать склонению без выпадения гласного (т.е. Кравец - Кравеца).

http://uloblsud.ru/index.php?option=com_content&task=view&id=332 Поговорим о фамилиях

————-

При склонении мужских фамилий с беглой гласной принято оставлять беглую гласную (Иван Заяц - с Иваном Заяцем, об Иване Заяце).

http://www.hacklife.ru/?q=node/372 Как склонять фамилии?
 PGL


18-10-2015 14:43
Тестовые данные
Заяц Валерий Петрович

Не выпадает гласная
Р: Заяца Валерия Петровича
Д: Заяцу Валерию Петровичу
В: Заяца Валерия Петровича
Т: Заяцем Валерием Петровичем
П: Заяце Валерии Петровиче

На всех версиях. На днях поймал :)


08-10-2015 01:06

Что за ошибка-то?
Может стоит подключить коллективный разум?


Да кто же его знает-то...
Она происходит между инициализацией приложения и входом в DataModuleCreate, которая у меня создается первой.
Коллективный разум интернета ничего не дает, только то, что exception генерится дельфийской библиотекой, для обсуждения в КД пока мало данных. Коллективный разум предприятия высказался за создание стенда. Создаем.

Вопрос этот обрисовался только из-за гипотетической несовместимости вашей библиотеки 3.3 с 64-битной системой, но когда выяснилось, что этим страдает и 32-битная семерка, причем в терминальном режиме, что же ее обсуждать в этой теме? Будет больше пищи, будет другая тема. КС большой.
Спасибо.


05-10-2015 04:33
сообщение от автора материала
Что за ошибка-то?
Может стоит подключить коллективный разум?

По вконтакте, как говорится "на вкус и цвет все фломастеры разные". Я вот не дух не переношу яндекс с его жуткоммерческой рожей, что не мешает пользоваться его услугами.
К сожалению Королевство слишком заточен на Delphi, а потенциальное к-во пользователей б-ки все таки не только дельфисты.
Потому и хочется расширить зону.
 Seer


05-10-2015 01:45
Мой вопрос снят. Ошибка возникает на Windows 7 вне зависимости от рязрядности, один случай на 32-битной, второй на 64-битной, но оба раза на семерке. ("И всегда только двое их"). Что самое противное, ошибка вылезает на экран до того, как я успеваю подключить лог.


05-10-2015 00:32
Сергей

Если бы мне только не нравилась идеология этого прямо скажем дурного сайта, я бы свое имхо не озвучивал. Дело в том, что большое количество предприятий ограничивает доступ к социальным сетям, а к вконтакте и ютубу в первую очередь.

Я все-таки не увидел прямого ответа: совместима ли 3.3 с 64-битной версией так, что может вызвать ошибку не при обращении к ее функции, а при запуске приложения?


04-10-2015 11:24
сообщение от автора материала
64 бита есть толко в 4 версии.
Чем плох вконтаке?
С Королевства все равно не уйдем.
 Seer


02-10-2015 03:30
Выражаю благодарность Сергею, Геннадию и другим активным участникам обсуждения. Проект продолжает развиваться. 15-летний юбилей не за горами :) Одна просьба - не уходите вконтакт.

Скачал библиотеку в дремучем 2007 году (версия 3.3 от 01.11.2007) чисто для ознакомления. И вот только в этом году с новыми инициативами (пилотными проектами) ФСС потребовалось прикрутить на предприятии определение родительного падежа. Можно я пока останусь в рамках физлица? :) Во всяком случае пока не потребуется склонение должностей, подразделений, или не случится массовая миграция на x64 (тогда уж через кассу).

Кстати, вопрос есть: версия 3.3 на 64-битной винде работает? Не могу пока определить источник 0x0eefade на этой ОС.


08-06-2015 17:25
Спасибо большое за ответ!


03-06-2015 00:03
сообщение от автора материала
Ссылка
http://vk.com/public93917660
без точки вконце
 Seer


03-06-2015 00:01
сообщение от автора материала
Коллеги, приглашаю в группу вконтакте http://vk.com/public93917660.
Есть предложение обсуждения продолжать там
 Seer


02-06-2015 13:34
сообщение от автора материала
А это в PadegFIO.pas  функция определения рода
Заметьте, параметром в эту функцию передается pMiddleName, т.е. отчество. Расшифруйте, что такое А. из Воробьева В.А. (Александровна, Андреевна и т.д.)  и тогда функция вернет верное значение рода.

Я вот и спрашиваю, можно ли как-то иным образом указать род.
Боюсь, средствами библиотеки, нет. Только получить из других источников.
 PGL


02-06-2015 13:15
А это в PadegFIO.pas  функция определения рода

function GetSex(pMiddleName: String): Integer; stdcall;
var pGetSex: TGetSex;
begin
  LoadPadeg;
  Result:=1;
  pGetSex:=GetProcAddress(LibPadeg, 'GetSex');
  if not Assigned(pGetSex) then
    raise Exception.Create('Функция ''GetSex'' в библиотеке PADEG.DLL не найдена');
  Result:=pGetSex(PChar(pMiddleName));
end;


02-06-2015 13:14
Я вот и спрашиваю, можно ли как-то иным образом указать род.



function GetFIOPadegFS(pFIO: PChar; bSex: Boolean; nPadeg: LongInt; pResult: PChar; var
                         nLen: LongInt):Integer; stdcall; external
                         'C:\Users\Администратор\Desktop\Склонение\padeg.dll' Name 'GetFIOPadegFS';

function GetFIOPadegFSAS(pFIO: PChar; nPadeg: LongInt; pResult: PChar; var
                         nLen: LongInt):Integer; stdcall; external
                         'C:\Users\Администратор\Desktop\Склонение\padeg.dll' Name 'GetFIOPadegFSAS';

function GetFIOPadegAS(pLastName,  pFirstName,  pMiddleName: PChar; nPadeg: LongInt; pResult: PChar; var
                         nLen: LongInt):Integer; stdcall; external
                         'C:\Users\Администратор\Desktop\Склонение\padeg.dll' Name 'GetFIOPadegAS';
function GetIFPadeg(pFirstName, pLastName: PChar;
                    nPadeg: LongInt; pResult: PChar;
                    var nLen: LongInt): Integer; stdcall; external
                    'C:\Users\Администратор\Desktop\Склонение\padeg.dll' Name 'GetIFPadeg';
procedure TForm1.btDoClick(Sender: TObject);

var
bSex: Boolean;
  nPadeg: Integer;
  PartsFIO: TFIOParts;
  s: String;
   FTrue, Ffalse, Template, NewTemplate, ItemIndex, T, D, DD, Replese_T, Find_T: OleVariant;
  Tbl, L, col, Tablwdline, con: OleVariant;
  i, ii, j: integer;
  TExtend: OleVariant;

  begin
  bSex := Boolean(PadegFIO.GetSex(edMiddle.Text));
  nPadeg := cbPadeg.ItemIndex + 1;


02-06-2015 05:20
Наталья, возможно, я влезу не в свою епархию, но...
Пусть у нас есть запись Дубина В.А. Скажите мне, какой это род?
Это с равным успехом может быть как Дубина Валентина Александровна, так и Дубина Виктор Андреевич. Не существует формального правила, позволяющего здесь по фамилии и инициалам определить род.
 Geo


01-06-2015 14:16
сообщение от автора материала
Вы указали фамилию с инициалами, т.к. окончания отчества мы не знаем, в этом случае должны явно указать род.
Какую функцию используете, как ее вызываете?
Вообще, желательно привести пример кода или файлик MS Office, если склоняете там.
 Seer


01-06-2015 14:03
Здравствуйте! Столкнулась с проблемой склонения женских фамилий с
инициалами с помощью библиотеки Padeg.dll. С мужскими фамилиями все
замечательно, но вот если ввожу,например, Воробьева В.А. выводит ерунду.
Написано, что определение падежа происходит по окончанию отчества. Как
этого избежать? Ведь с мужскими фамилиями работает все.. Спасибо!


22-05-2015 01:13
Благодарю за понимание )))
трехсотая попытка была успешна.

' Функция получения рода (пола) по отчетву
' Параметры: pMiddleName    - отчество
' Значение:  1 - мужской
'            0 - женский
'           -1 - невозможно определить

Private Declare Function GetSex Lib "PadegUC.dll" _
  (ByVal pMiddleName As String) As Integer



Public Function MakeSex(ByVal cMiddleName As String) As String
Dim tmpS As String
MakeSex = GetSex(StrConv(cMiddleName, vbUnicode)) ' с переводом ASC - Unicode
tmpS = StrConv(tmpS, vbFromUnicode) ' перевод в Unicode - ASC

End Function



22-05-2015 01:04
Здравствуйте, Сергей!

Понимаю что задал вопрос не совсем по адресу, т.к. он относится не к библиотеке как таковой а к VBA.

Если по аналогии изменить функцию по склонению должностей у меня получилось, то для получения значения пола у меня знаний не хватает - уже три дня читаю, но без результата.


21-05-2015 11:49
сообщение от автора материала
И читайте докумнтацию https://drive.google.com/open?id=0ByCjt0r9Y_FcY0h2b0o0eGtwRzg&authuser=0:
Так как версия 4 полностью поддерживает строки Unicode, то при передаче и воз-врате значений функций Библиотеки следует перед обращением преобразовать строки VBA в Unicode, что и показано в приведенном примере (функция StrConv()):
  RetVal = GetPadeg(StrConv(cFIO, vbUnicode), nPadeg, tmpS, nLen) ' с пере-водом ASC - Unicode
  tmpS = StrConv(tmpS, vbFromUnicode) ' перевод в Unicode - ASC
 Seer


21-05-2015 11:47
сообщение от автора материала
> Помогите пожалуйста.
> Всегда использовал следующий код...

Коллеги, смотрите мое сообщениеЖ о работе с 4-кой

03-01-2015 05:10
Разбирался с примерами VBA, как оказалось М$ опять впереди планеты всей.
Jпять Unicode.
После объявления Dim tmpS As String мы получим ASC строку.
Для того чтоб она стала UТF, необходимо явное преобразование, см. StrConv()

  RetVal = GetPadeg(StrConv(cFIO, vbUnicode), nPadeg, tmpS, nLen) ' с переводом ASC - Unicode
  tmpS = StrConv(tmpS, vbFromUnicode) ' перевод в Unicode - ASC

Вот так вот. При использовании 4-ки в VBA прошу помнить об этом.
 Seer


21-05-2015 10:01
Помогите пожалуйста.

Всегда использовал следующий код

Private Declare Function GetSex Lib "PadegUC.dll" _
  (ByVal pMiddleName As String) As Integer



Public Function MakeSex(ByVal pMiddleName As String) As String
  MakeSex = GetSex(pMiddleName)
End Function



Сейчас функция при любом исходном тексте выдает значение -1
Что сделать ума не приложу.



14-04-2015 14:32
сообщение от автора материала
Реализовано преобразование чисел в строку (сумма прописью) и склонение числительных и валют.
Есть желающие потестировать?
 Seer


05-03-2015 12:41
сообщение от автора материала
Библиотеку обновил.
https://drive.google.com/folderview?id=0ByCjt0r9Y_FcYnJ4NHp0Skx3c2s&usp=sharing
 Seer


04-03-2015 11:29
сообщение от автора материала
Интересное кино. Ошибка во всех версиях.
В любом случае исправил в 4-ке. Чуть позже выложу на Google Диск.

А позвольте полюбопытствовать, Ударение где? "Ярец или Яр"ец?
 Seer


04-03-2015 05:18
Здравствуйте!

неправильно склоняется фамилия Ярец в мужском роде: не выпадает гдасная -е, т.е. надо чтобы в родительном падеже было Ярца, а программа склоняет как Яреца.
Причем другие похожии фамилии склоняет вроде как правильно...


27-02-2015 07:09
Для тех, у кого возникают проблемы при использовании библиотеки с Qt. Переработанный код примера работает в Qt 4.8.6, по идее в 5+ тоже должен работать.


#include <QLibrary>
#include <QDebug>

typedef int (__stdcall *LPFNGetFIOPadegAS)(wchar_t *, wchar_t *, wchar_t *, int, wchar_t *, int &);
typedef int (__stdcall *LPFNGetAppointmentPadeg)(wchar_t *, int, wchar_t *, int &);

LPFNGetFIOPadegAS GetFIOPadegAS = 0;
LPFNGetAppointmentPadeg GetAppointmentPadeg = 0;

void loadLib()
{
    QLibrary myLib("PadegUC.dll");
    GetFIOPadegAS = (LPFNGetFIOPadegAS) myLib.resolve("GetFIOPadegAS");
    GetAppointmentPadeg = (LPFNGetAppointmentPadeg) myLib.resolve("GetAppointmentPadeg");
    if (!GetFIOPadegAS || !GetAppointmentPadeg) {
        qDebug() << __FILE__ << __LINE__ << myLib.isLoaded() << myLib.errorString();
        return;
    }

}

QString getFIOPadeg(QString lastName, QString firstName, QString middleName, int padeg)
{
    if (!GetFIOPadegAS)
        return QString();
    QString res;
    int errorCode;
    int resLength = lastName.length() + firstName.length() + middleName.length() + 100;
    wchar_t *wLastName = new wchar_t[lastName.length() + 1]; //для 0 в конце
    wchar_t *wFirstNameW = new wchar_t[firstName.length() + 1];
    wchar_t *wMiddleNameW = new wchar_t[middleName.length() + 1];
    wchar_t *wResult = new wchar_t[resLength];

    lastName.toWCharArray(wLastName);
    wLastName[lastName.length()] = 0; //если не поставить будут проблемы у GetFIOPadegAS

    firstName.toWCharArray(wFirstNameW);
    wFirstNameW[firstName.length()] = 0;

    middleName.toWCharArray(wMiddleNameW);
    wMiddleNameW[middleName.length()] = 0;

    errorCode = GetFIOPadegAS(wLastName,
                    wFirstNameW,
                    wMiddleNameW,
                    padeg,
                    wResult,
                    resLength);

    res = QString::fromWCharArray(wResult, resLength);
    delete[] wLastName;
    delete[] wFirstNameW;
    delete[] wMiddleNameW;
    delete[] wResult;
    return res;
}


int main(int, char**)
{
    loadLib();
    qDebug() << getFIOPadeg(QString::fromUtf8("Иванов"), QString::fromUtf8("Иван"), QString::fromUtf8("Иванович"), 5);  //если файлы исходников в UTF-8
    return 0;
}




30-01-2015 14:40
сообщение от автора материала
Сразу много новостей.
Запущен сервис склонения (REST)
Проверка доступности http://windev.asphltd.ru:18080/
Тест склонения: http://windev.asphltd.ru:18080/datasnap/rest/TServerMethodsDecl/GetFIOPadegFS/%D0%9F%D1%83%D1%88%D0%BA%D0%B8%D0%BD%20%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80%20%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B5%D0%B2%D0%B8%D1%87/1/5
Выложены исходники доступа к сервису на Delphi XE5 и Java https://drive.google.com/drive/#folders/0ByCjt0r9Y_FcYnJ4NHp0Skx3c2s/0ByCjt0r9Y_FcYWpKeTJybW4zTWc/0ByCjt0r9Y_FcYnZSczctVHpRcWc
Создано приложения под Android 4.0 https://drive.google.com/open?id=0ByCjt0r9Y_FceU14WEo1Zy1VOG8&authuser=0 с доступом к упомянутому сервису.
Желающие тестировать, обращайтесь за именами классов ко мне (seer.true@gmail.com).

Кто-то может написать пример на PHP для доступа к сервису?
 Seer


26-01-2015 03:40
PGL, спасибо за код и объяснение!


26-01-2015 01:52
2  Alesandr Nicalace

Попробуйте так

Type TMyPartsFIO
     pLastName As String
     pFirstName As String
     pMiddleName As String
     nLastName As Long
     nFirstName As Long
     nMiddleName As Long
End Type

Public Sub MakeGetFIOParts(ByVal cFIO As String, ByRef cLastName As String, ByRef cFirstName As String, ByRef cMiddleName As String)
Dim RetVal As Integer
Dim PartsFIO As TMyPartsFIO

   With PartsFIO
     ' устанавливаем размеры буферов (можно и другие значения
     ' главное, чтобы они были достаточными для результатов
     .nLastName = 50  
     .nFirstName = 50  
     .nMiddleName = 50
     ' выделяем память под строки
     .pLastName = String(.nLastName, 0)
     .pFirstName = String(.nFirstName, 0)
     .pMiddleName = String(.nMiddleName, 0)
   End With

   If Len(cFIO) = 1 Then Exit Sub

   RetVal = GetPartsFIO(cFIO, PartsFIO)

   If RetVal <> 0 Then MsgBox "ПарсингФИОнеудался "& "(" & RetVal & ")"

   cLastName = Mid(PartsFIO.pLastName, 1, PartsFIO.nLastName)
   cFirstName = Mid(PartsFIO.pFirstName, 1,  PartsFIO.nFirstName)
   cMiddleName = Mid(PartsFIO.pMiddleName, 1, PartsFIO.nMiddleName)
EndSub



26-01-2015 01:20
Здравствуйте !
В VBA новичок подскажите почему не работает код, функция GetPartsFIO возвращает -5

Type TMyPartsFIO
    pLastName As String
    pFirstName As String
    pMiddleName As String
    nLastName As Long
    nFirstName As Long
    nMiddleName As Long
End Type

Private Declare Function GetPartsFIO Lib "Padeg.dll" Alias "GetFIOParts" _
  (ByVal pFIO As String, ByRef pResult As TMyPartsFIO) As Integer

Public Sub MakeGetFIOParts(ByVal cFIO As String, ByRef cLastName As String, ByRef cFirstName As String, ByRef cMiddleName As String)
Dim RetVal As Integer
Dim PartsFIO As TMyPartsFIO

  If Len(cFIO) = 1 Then Exit Sub

  RetVal = GetPartsFIO(cFIO, PartsFIO)


  If RetVal <> 0 Then MsgBox "ПарсингФИОнеудался "& "(" & RetVal & ")"
  cLastName = Mid(PartsFIO.pLastName, 1, Len(PartsFIO.pLastName))
  cFirstName = Mid(PartsFIO.pFirstName, 1, Len(PartsFIO.pFirstName))
  cMiddleName = Mid(PartsFIO.pMiddleName, 1, Len(PartsFIO.pMiddleName))
EndSub

' Макросы преобразования выделенного ФИО в соответствующий падеж

Public Sub ФамИнициалы()
Dim F As String, I As String, O As String
Call MakeGetFIOParts(Selection, F, I, O)
Selection.TypeText (Selection)
EndSub



12-01-2015 18:20
> Что за проект, если не секрет?
Менеджер формирования отчетов https://github.com/jestonedev/ActivityManager/wiki/01.-%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE
Конкретно ваша библиотека там используется в части функционала плагина по преобразованию данных https://github.com/jestonedev/ActivityManager/wiki/08.-%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85


12-01-2015 12:12
сообщение от автора материала
На google выложен пример для MS SQL. Спасибо Илье Галкину.
 Seer


12-01-2015 11:57
сообщение от автора материала
> И влияют ли новые лицензионные требования на старые версии библиотеки?

В довесок.
Лицензионные условия всегда были одинаковыми, мы только цены скорректировали.
 Seer


12-01-2015 11:55
сообщение от автора материала
> А какие у Вас теперь лицензионные условия для OpenSource-проектов? И влияют ли новые лицензионные требования на старые версии библиотеки?

Как-то не думали об этом.
Во всяком случае если вы не извлекаете выгоды от своих проектов то пользуйтесь на здоровье.

Что за проект, если не секрет?
 Seer


12-01-2015 04:55
А какие у Вас теперь лицензионные условия для OpenSource-проектов? И влияют ли новые лицензионные требования на старые версии библиотеки?


11-01-2015 20:31
Я бы к примерам мог бы еще добавить реализацию данных функций в MS SQL 2005 и выше...


03-01-2015 12:08
сообщение от автора материала
Прошу обратить внимание. Сменились условия поставки, точнее цены.

Библиотека поставляется на условиях неисключительной бессрочной лицензии.
1. Для личного использования (лицензия физ. лица) - 0 р.
2. Для использования внутри организации (лицензия на юр. лицо) - 1000 р. + НДФЛ.
3. Для использования в коммерческих продуктах собственной разработки (лицензия разработчика) - 5000 р. + НДФЛ на один продукт без раскрытия исходного кода.
4. Исходники 20000 р. + НДФЛ. Приобретение исходников не освобождает от приобретения коммерческой лицензии (№ 2 или 3).

Лицензия включает подписку на годовую информационную поддержку.
Для оформления лицензии достаточно подписать с одним из авторов лицензионный договор и акт приема-передачи. Для получения типового договора обращайтесь по одному из указанных в конце адресов.
 Seer


03-01-2015 05:50
сообщение от автора материала
Наконец-то свершилось!
Доступна полная 4-я версия с примерами и обновленной документацией.

https://drive.google.com/folderview?id=0ByCjt0r9Y_FcYnJ4NHp0Skx3c2s&usp=sharing

Примеры будут дополняться...
 Seer


03-01-2015 05:16
сообщение от автора материала
> IDE Qt5. Столкнулся с проблемой, как понимаю проблема в самой библиотеке.

И тут проблема не в библиотеке в в типе передаваемой строки. Кто силен в Qt, попробуйте объявить:

    int iParam=lpfnGetFIOPadegAS((wchar_t *)cpLastName,
              (wchar_t *)cpFirstName,
              (wchar_t *)cpMiddleName,
              6,
              (wchar_t *)cResult,
              iLen);

Во всяком случае с C++ Builder такое прокатывает.
 Seer


03-01-2015 05:10
Разбирался с примерами VBA, как оказалось М$ опять впереди планеты всей.
Jпять Unicode.
После объявления Dim tmpS As String мы получим ASC строку.
Для того чтоб она стала UТF, необходимо явное преобразование, см. StrConv()

  RetVal = GetPadeg(StrConv(cFIO, vbUnicode), nPadeg, tmpS, nLen) ' с переводом ASC - Unicode
  tmpS = StrConv(tmpS, vbFromUnicode) ' перевод в Unicode - ASC

Вот так вот. При использовании 4-ки в VBA прошу помнить об этом.


Сообщение не подписано


28-12-2014 10:26
сообщение от автора материала
Улучшал работу с файлом исключений. На днях выложу на Goodle-диск полную сборку 4-ки.
 Seer


25-12-2014 19:27
Спасибо, Сергей, за помощь. Ваша последняя версия библиотеки убила двух зайцев одним махом. И словарь стал корректно подключаться и Unit-тест теперь корректно проходит. Не знаю уж чем она отличается от той, что лежит в папке х32 по этой ссылке https://drive.google.com/folderview?id=0ByCjt0r9Y_FcNlU1cHVrbHpGd3M&usp=sharing
Еще раз спасибо =)


25-12-2014 08:05
сообщение от автора материала
Коллеги, у кого-либо были проблемы с работой библиотеки в разных потоках, отпишитесь пож.
Есть прозрение. :-)

Завершаю актуализацию документации по 4-ке, теперь она и с COM-сервером, а также читает словарь исключений в любой кодировке.
К НГ на Google диск выложу.
В планах склонение числительных.
 Seer


24-12-2014 13:51
Отлично работает, для моих нужд подходит, но так как я в коде не очень (вообще ник) подскажите как сделать чтоб заработала в автоматическом режиме, чтоб было понятней опишу как я работаю.
в excel забивается список фамилий (ФИО) потом создаю кнопки и назначаю на них макрос, прохожу по строчке и нажимаю кнопку и так по всему списку, естественно было бы попроще если бы он работал для выделенных ячеек, и в этом то и вопрос подскажите а?) думаю это не сложно но поможете сильно.


24-12-2014 12:04
Также возникла проблема при подключении словаря. Подключаю словарь таким образом (C#):
string fileName = Path.Combine(new FileInfo(Assembly.GetExecutingAssembly().FullName).DirectoryName, "plugins" + Path.DirectorySeparatorChar + "Except.dic");
            if (File.Exists(fileName))
            {
                Declension.SetExceptionsDictionaryFileName(fileName);
                if (!Declension.UpdateExceptionsDictionary())
                {
                    ConvertException exception = new ConvertException("Не удалось подгрузить словарь {0}");
                    exception.Data.Add("{0}",fileName);
                    throw exception;
                }
            }
Метод UpdateExceptionsDictionary возвращает true, как я понимаю это значит, что словарь подключился. Перед вызовом склонения пробую проверить словарь, возвращается корректный путь до словаря, но в результате словарь не используется. К примеру, "Иванова Альфия Ивановна" в дательном падеже становится "Ивановой Альфии Ивановне", вместо "Ивановой Альфие Ивановне".
Использую словарь по умолчанию


24-12-2014 11:08
Здравствуйте. Столкнулся с проблемой использования библиотеки PadegUC.dll в .Net. Ошибка возникает только во время NUnit-теста и не возникает во время работы приложения.
Подробная ошибка описана здесь:
http://www.sql.ru/forum/1134309/accessviolationexception-v-unit-teste

Не могу найти причину... Есть подозрения на проблему при сравнении Unicode0строк в Native-коде, но проверить я это никак не могу:
1) http://blog.stevienova.com/2007/01/30/vs2005-c-unit-tests-systemaccessviolationexception-attempted-to-read-or-write-protected-memory/
2) https://software.intel.com/en-us/forums/topic/500874

Был бы рад любой помощи по вопросу


02-12-2014 08:38
Мой косяк, словарь не подключил. Осталось туда добавить еще имя Асия


02-12-2014 07:04
Имя Альфия неправильно склоняется в дательном и предложном падежах
Ориентируюсь на http://ru.wiktionary.org/wiki/%D0%90%D0%BB%D1%8C%D1%84%D0%B8%D1%8F


20-11-2014 15:03
Наконец-то дошли руки до COM сервера для UniCode (4 версия библиотеки).
Есть желающие потестить COM сервер (в виде DLL)\? Пишите seer.true@gmail.com
Реализованы след. функции:
  //function GetFIOPadeg(const cLastName, cFirstName, cMiddleName, cSex: WideString; nPadeg: Integer): WideString; safecall;
  //function GetFIOPadegFS(const cFIO, cSex: WideString; nPadeg: Integer): WideString; safecall;
  //function GetIFPadeg(const cFirstName, cLastName, cSex: WideString; nPadeg: Integer): WideString; safecall;
  //function GetIFPadegFS(const cIF, cSex: WideString; nPadeg: Integer): WideString; safecall;
  //function GetNominativePadeg(const cFIO: WideString): WideString; safecall;
  //function GetAppointmentPadeg(const cAppointment: WideString; nPadeg: Integer): WideString; safecall;
  //function GetOfficePadeg(const cOffice: WideString; nPadeg: Integer;): WideString; safecall;
  //function GetFullAppointmentPadeg(const cAppointment, cOffice: WideString; nPadeg: Integer): WideString; safecall;
  //function GetSex(const cMiddleName: WideString): Integer; safecall;
  //procedure SeparateFIO(const cFIO: WideString; var cLastName, cFirstName, cMiddleName: WideString); safecall;

Описания есть в readme.doc 3-ей версии.

P.S. редактор RIDL в XE чудовищно глючный и не удобный!


20-11-2014 12:15
Здравствуйте!
Пытаемся установить библиотеку но возникает ошибка "Модуль ... загружен но точка входа DLLRegisterServer не найдена..."
Устанавливаем на Windows 8 - возможно в этом причина - под 8-ку не идет?


21-10-2014 12:13
Спасибо!


21-10-2014 09:01
сообщение от автора материала
> Зациклила на "Ву Тхань Хыонг", именительный падеж, мужской пол

Это уже было исправлено. сборки там же, в т.ч. файл DeclensionBLL.cs, который является .NET оберткой для библиотеки
https://drive.google.com/folderview?id=0ByCjt0r9Y_FcNlU1cHVrbHpGd3M&usp=sharing

 Seer


21-10-2014 06:07
Использую библиотеку PadegUC.dll от 23 ?декабря ?2013 ?г., ??23:15:30

Зациклила на "Ву Тхань Хыонг", именительный падеж, мужской пол


17-09-2014 18:21
А эту версию удалось подружить с .Net? Я попытался в Declension1251 просто заменить Padeg.dll на PadegUC.dll + замена библиотеки, но после отработки функции строка в первоначальном виде остается
kuzkok, советую посмотреть архив с кодом, который я выкладывал для CLR библиотеки MSSQL. Там все доработано именно для .NET.

PS. Прошу авторов добавить или заменить в основном архиве файл DeclensionBLL.cs, который является .NET оберткой для библиотеки PadegUC.dll


25-08-2014 04:02
сообщение от автора материала
> А эту версию удалось подружить с .Net?

В версии 4 есть поддержка unicode. Касательно .Net и поддержки любой другой технологии.
Попробуйте, дерзните "и история вас не забудет". :-)

> закон, уведомление, протокол, акт...

Это работает тоже.
 Seer


25-08-2014 03:19
>Все справедливо для версии 4.
А эту версию удалось подружить с .Net? Я попытался в Declension1251 просто заменить Padeg.dll на PadegUC.dll + замена библиотеки, но после отработки функции строка в первоначальном виде остается
в предыдущем обсуждении нашел что уже пытались но там остановились на
>>В C# нет
>>Microsoft.VisualBasic.Strings.StrConv(cFIO, Microsoft.VisualBasic.VbStrConv.vbUnicode)
>>а строки  всегда UNICODE

С 3.3 тоже работает, по крайней мере с теми же "постановлениями" и "решениями"

>Какие еще примеры названий документов придумаете на вскидку?
закон, уведомление, протокол, акт...



25-08-2014 02:28
сообщение от автора материала
> Возможно ли склонять наименования документов?

А попробуйте воспользоваться склонение должностей и подразделений. Во всяком случае если испрользовать
"постановление" - как должность, а совет министров как подразделение, тот склоняет правильно:
Р: постановления совета министров
Д: постановлению совета министров
В: постановление совета министров
Т: постановлением совета министров
П: постановлении совета министров

Слова "решение", "приказ", "график", "заказ", "счет", "план" ф-ция склонения должности тоже склоняет правильно.
Все справедливо для версии 4.

Какие еще примеры названий документов придумаете на вскидку?
 Seer


25-08-2014 01:58
Возможно ли склонять наименования документов? Или возможно ли добавить такую фичу. Например в базе есть документы "постановление...", "решение ..." и т.д. А надо выводить фразу "утверждено постановлением ...".


07-04-2014 23:10
IDE Qt5. Столкнулся с проблемой, как понимаю проблема в самой библиотеке

typedef int (__stdcall *LPFNGetFIOPadegAS)
      (unsigned char *,unsigned char *, unsigned char *, int, unsigned char *, int &);
    LPFNGetFIOPadegAS lpfnGetFIOPadegAS;

    QLibrary lib("PadegUC32.dll");
    lpfnGetFIOPadegAS = (LPFNGetFIOPadegAS) lib.resolve("GetFIOPadegAS");
    // и для примера возьмем известного русского
    char *cpLastName, *cpFirstName, *cpMiddleName;
    char cResult[200]; // буфер для результата
    cpLastName="Иванов";
    cpFirstName="Иван";
    cpMiddleName="Иванович";
    int iLen=200;
    // указываем фамилию, имя, отчество, падеж и куда поместить результат
    int iParam=lpfnGetFIOPadegAS((unsigned char *)cpLastName,
              (unsigned char *)cpFirstName,
              (unsigned char *)cpMiddleName,
              6,
              (unsigned char *)cResult,
              iLen);

    qDebug() << cResult;
    qDebug() << iParam;


Немного переделал пример из описания под Qt (подгрузка dll)
Функция работает, но не склоняет
Вывод:

Иванов
0



27-03-2014 23:29
Просто не работал особо в студии, не могу найти как создать проект SQL Server Library. Что для этого должно стоять?
Иван, для этого должна стоять Visual Studio 2008 или более новая, любой редакции кроме Express


27-03-2014 05:12
Иван, в сообщении от 24.12.2013 мною было подробно описано что нужно делать с данными исходниками. Выложить готовую DLL и скрипт для ее установки и создания всех функций конечно можно, но я бы посоветовал все-таки разобраться с процессом создания проектов, компиляции и установки функций
Просто не работал особо в студии, не могу найти как создать проект SQL Server Library. Что для этого должно стоять?


26-03-2014 18:39
Я сделал Dll для MSSQl2008R2 64bit. Подключил. Теперь периодически она твешает сервер наглух  что никак не снять, только перегрузкой сервера. а он рабочий . там еще база 1C круктится - так что стремно. Харкрерно что это происходи лишь при одновременном обращении к фукциям нескольких юзеров. Она у меня вызывается из Report Service для формирования приказов.
Очень странно, у меня такого поведения замечено не было за 3 месяца использования... Правда базы у меня крутятся на MSSQL 2005. Надо смотреть почему это может происходить...


25-03-2014 02:46
Я сделал Dll для MSSQl2008R2 64bit. Подключил. Теперь периодически она твешает сервер наглух  что никак не снять, только перегрузкой сервера. а он рабочий . там еще база 1C круктится - так что стремно. Харкрерно что это происходи лишь при одновременном обращении к фукциям нескольких юзеров. Она у меня вызывается из Report Service для формирования приказов.



24-03-2014 19:28
Здравствуйте! Скачал обертку для mssql с google диска. Подскажите как эти файлы скомпилить в dll. Может у кого уже есть готовые либы для x64 Сервера. Поделитесь пожалуйста!

Иван, в сообщении от 24.12.2013 мною было подробно описано что нужно делать с данными исходниками. Выложить готовую DLL и скрипт для ее установки и создания всех функций конечно можно, но я бы посоветовал все-таки разобраться с процессом создания проектов, компиляции и установки функций.


21-03-2014 07:29
Здравствуйте! Скачал обертку для mssql с google диска. Подскажите как эти файлы скомпилить в dll. Может у кого уже есть готовые либы для x64 Сервера. Поделитесь пожалуйста!


20-03-2014 02:59
хотя если использовать любой другой знак: _ или / или + то склоняет нормально
а можно что бы это работало независимо от наличия дефиса как в on-line форме?
заранее спасибо


20-03-2014 02:52
спасибо, попробовал теперь пишет "инженерно" is not a valid integer value


19-03-2014 23:52
сообщение от автора материала
в Edit1.Text пишется допустим название факультета: инженерно технологический факультет

Попробуйте написать: инженерно-технологический факультет
 PGL


19-03-2014 14:15
помогите пожалуйста разобраться почему не работает ниже приведенный код
в Edit1.Text пишется допустим название факультета: инженерно технологический факультет
но склоняется только первое слово инженерно, это видно если заменить инженерно на инженер тогда склонят в дательном падеже инженеру технологический факультет


19-03-2014 14:11
function GetOfficePadeg(pOffice: PWideChar; nPadeg: Integer; pResult: PWideChar;
  var nLen: Integer): Integer; stdcall;
  external 'padegUC.dll' Name 'GetOfficePadeg';

procedure TForm8.Button2Click(Sender: TObject);
var
  tmpS: PWideChar;
  nLen: LongInt;
  wideChars   : array[0..150] of WideChar;
begin
  nLen := Length(Edit1.Text) + 10;
  tmpS := StrAlloc(nLen);
  try
  StringToWideChar(Edit1.Text,WideChars,150);
   GetOfficePadeg(WideChars, 3, tmpS, nLen);
    Label1.Caption:= Copy(tmpS, 1, nLen);
  finally
    StrDispose(tmpS);
  end;

end;


07-03-2014 23:53
Решил, выкладываю может кому-то пригодится:


                  Type PPartsFIO
                       pLastName As String
                       pFirstName As String
                       pMiddleName As String
                       nLastName As Long
                       nFirstName As Long
                       nMiddleName As Long
                  End Type
    
     Private Declare Function GetFIOParts Lib "j:\!!!!!!!!Excel\CreateWordDocuments2\CreateWordDocuments\x32\PadegUC.dll" _
         (ByVal pFIO As String, Parts As PPartsFIO) As Integer

Public Function GetFIOParts_My(ByVal cFIO As String, ByVal Num As Integer) As String
    Dim PartsFIO As PPartsFIO
    Dim RetVal As Integer
    PartsFIO.pLastName = String(10000, 0)
    PartsFIO.pFirstName = String(10000, 0)
    PartsFIO.pMiddleName = String(10000, 0)
    PartsFIO.nLastName = 10000
    PartsFIO.nFirstName = 10000
    PartsFIO.nMiddleName = 10000
  
    RetVal = GetFIOParts(StrConv(cFIO, vbUnicode), PartsFIO)
    Dim tmpS As String
    Select Case Num
        Case 1
            tmpS = PartsFIO.pLastName
        Case 2
            tmpS = PartsFIO.pFirstName
        Case 3
            tmpS = PartsFIO.pMiddleName
        Case 4
            tmpS = PartsFIO.nLastName
        Case 5
            tmpS = PartsFIO.nFirstName
        Case 6
            tmpS = PartsFIO.nMiddleName
        Case Else
            tmpS = StrConv(cFIO, vbUnicode)
   End Select
      
   GetFIOParts_My = Left(StrConv(tmpS, vbFromUnicode), 10000)
    
End Function




Seer, возможно ли добавить в словарь исключений концевую часть фамилии/имени, или лучше добавить возможность задать маску (регекс) для словаря исключений?


07-03-2014 10:59
Попытался использовать в Excel, но одну функцию не получается вызвать:
вот что cделал:


                  Type PPartsFIO
                      pLastName As String
                      pFirstName As String
                      pMiddleName As String
                      nLastName As Long
                      nFirstName As Long
                      nMiddleName As Long
                  End Type

     Private Declare Function GetFIOParts Lib "PadegUC.dll" _
         (ByVal pFIO As String, Parts As PPartsFIO) As Integer



Public Function MakePadegGetFIOParts(ByVal cFIO As String) As String
   Dim aaaa As PPartsFIO
   Dim aa As Integer
   aa = GetFIOParts(cFIO, aaaa)
   MakePadegGetFIOParts = aaaa
End Function


Не получается, что я делаю не так и как нужно правильно использовать данную функцию?




18-02-2014 05:50
Добрый день.
Использую padeg_ua.
Слово "довіреність" склоняет как "довіреністя".
Есть ли возможность внести его в словарь, так что бы склоняло правильно "довіреності"?


21-01-2014 11:43
Здравствуйте хотелось бы получить исправленную версию склоняющую звено, узел, поле и т.п. для работы на VBA


25-12-2013 01:46
сообщение от автора материала
Для ссылки
https://drive.google.com/folderview?id=0ByCjt0r9Y_FcNlU1cHVrbHpGd3M&usp=sharing
аккаунт google не нужен.
 Seer


25-12-2013 01:21
> обертку над библиотекой PadegUC.dll в виде CLR функций для MS SQL

Продублировал архив в общей библиотеке
  https://drive.google.com/?usp=folder&authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M


24-12-2013 01:17
Здравствуйте! Поздравляю всех с наступающим Новым Годом! И в качестве подарка выкладываю то? что все так просили - исходный код позволяющий сделать обертку над библиотекой PadegUC.dll в виде CLR функций для MS SQL, которая реально работает. Прикладываю архив, в котором 2 файла: один - это непосредственно враппер библиотеки, второй - реализация  CLR функций. Если вы все это скомпилите в VS в проекте SQL SERVER Library, то получите так желанную многими библиотеку. Сразу скажу, что сборка требует для себя разрешения типа UNSAFE. А так же, для ее работы необходимо положить библиотеку PadegUC.dll нужной разрядности в каталог на сервере, который прописан в системной переменной среды PATH, например C:\Windows\system32.

Ну а вот и ссылка :)
https://docs.google.com/file/d/0BwgSDWxKYvogNE9uSXoxaW1URTA/edit?pli=1


23-12-2013 14:15
сообщение от автора материала
Ну или так https://drive.google.com/?usp=folder&authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M
 Seer


23-12-2013 14:12
Наконец-то руки дошли
https://drive.google.com/folderview?id=0ByCjt0r9Y_FcNlU1cHVrbHpGd3M&usp=sharing
пароль 123

1. cdecl, исправил на stdcall, кроме PadegFB
2. "тестовая программа SamplesFIO.exe 32-битная при попытке выполнить какое-то действие молча вылетает. Это происходит на 64-битной Windows 7 при любых параметрах запуска. То же самое - на Windows XP 32 бита." исправил. Причины до конца не понятны, однако работает.

Гена сейчас как раз мучается с COM сервером, может есть желающие помочь? Пока советом.
Сообщение не подписано


19-12-2013 08:14
Товарищи, а может все таки есть умельцы, которые соорудили CLR для MS SQL Server 2005-2012?

> А что не так с 64 бит MSSQL 2008?
> Для 64-х бит можно пересобрать пример в файле pd_Sample.zip

Просто хочется использовать не ввиде хранимых процедур, а в виде функций!


30-11-2013 14:15
Замечательная библиотека, огромное спасибо.
Только пару уточнений (возможно, кому-то пригодится).
1. PadegUC.dll, 32-битная версия, точно так же не содержит COM-сервера, как и 64-битная (это было не очень ясно с самого начала, возможно, я где-то что-то пропустил). Поэтому ни regsvr32.exe, ни СоздатьОбъект работать не будут.
2. Попытки использовать библиотеку в VBA6 (Excel, Word) через Declare тоже работать не будут, так как экспортируемые функции объявлены как cdecl, а не stdcall. Такие функции VBA (без дополнительных ухищрений) вызывать не умеет.
3. Ровно так же в C++ примеры с typedef'ом stdcall выдают ошибку.
(Кстати, тестовая программа SamplesFIO.exe 32-битная при попытке выполнить какое-то действие молча вылетает. Это происходит на 64-битной Windows 7 при любых параметрах запуска. То же самое - на Windows XP 32 бита. Причины не понятны. 64-битная версия на 64-битной Windows работает благополучно.)
Хорошие новости.
1. После замены в C++ stdcall на cdecl и unsigned char нв wchar_t все отработало на ура.
2. Таки можно заставить Excel VBA работать с библиотекой. Класс для вызова cdecl функций, найденный в интернете; Сhr(0), подклеенный к аргументам; массивы байт, принимающие в себя строки; VarPtr; строки, принимающие значения из массива байт - и все в итоге великолепно. Можно, конечно, еще поиграться с tlb или с С++ обертками (cdecl -> stdcall), но для моих целей это лишнее.
Так что имейте в виду.
А автору еще раз спасибо.





18-11-2013 20:09
спасибо!! этого не заметил


15-11-2013 12:28
сообщение от автора материала
В 1С использую библиотеку padeg.dll при вызове процедуры GetFIOPadegFSAS, выдаёт ошибку —- ( Метод объекта не обнаружен (GetFIOPadegFSAS) ) —-, в инструкции такая процедура описана.
Вы ошибаетесь, у COM-сервера нет такого метода (см.п.8.1). Да он и не нужен, т.к. для автоматического определения рода достаточно указать параметром рода пустую строку в методе GetFIOPadegFS(). Собственно, в примерах использования в п.8.2.3 именно это и приведено.
 PGL


14-11-2013 22:05
В 1С использую библиотеку padeg.dll при вызове процедуры GetFIOPadegFSAS, выдаёт ошибку —- ( Метод объекта не обнаружен (GetFIOPadegFSAS) ) —-, в инструкции такая процедура описана.


13-11-2013 11:03
сообщение от автора материала
Склонение "звено", "веретено" и прочие "ено" исправлено
 Seer


12-11-2013 15:21
сообщение от автора материала
Работаю над "звеном". :-)
 Seer


12-11-2013 15:18
сообщение от автора материала
Други, рад сообщить вам новость исправил скдонение звена, а за одно котла и промысла -)
Файлы все по тому же адресу https://drive.google.com/?authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M
Облегченна (но полноценная) версия для FB там же, в соответствующих архивах для 32 и 64. Пароль "123".
 Seer


11-11-2013 22:18
Спасибо!!!


11-11-2013 05:24
Евгений, здравствуйте!
17-10-2013 Seer дал ссылку на Google Drive. Для того чтобы скачать файлы, надо иметь доступ к учётной записи Google, т.е. быть зарегистрированным на GMail.
При работе с PadegUC.dll, в отличие от ранних версий padeg.dll, код функций надо поменять, иначе они будут работать с ошибками. Примерно вот так:


#If VBA7 Then
    Private Declare PtrSafe Function GetFIOPadegFSAS Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

    Private Declare PtrSafe Function GetNominativePadeg Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal pResult As String, ByRef nLen As Long) As Integer
  
    Private Declare PtrSafe Function GetAppointmentPadeg Lib "PadegUC.dll" _
        (ByVal pAppointment As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer
#Else
    Private Declare Function GetFIOPadegFSAS Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

    Private Declare Function GetNominativePadeg Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal pResult As String, ByRef nLen As Long) As Integer
  
    Private Declare Function GetAppointmentPadeg Lib "PadegUC.dll" _
        (ByVal pAppointment As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer
#End If

' Функция преобразования cFIO в падеж nPadeg
Public Function MakePadeg(ByVal cFIO As String, ByVal nPadeg As Long) As String
Dim tmpS As String
Dim nLen As Long
Dim RetVal As Integer
  If Len(cFIO) = 1 Then Exit Function
  nLen = 255
  tmpS = String(nLen, 0)
  RetVal = GetFIOPadegFSAS(StrConv(cFIO, vbUnicode), nPadeg, tmpS, nLen)
  'If RetVal = -1 Then MsgBox "Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение ФИО"
  MakePadeg = Left(StrConv(tmpS, vbFromUnicode), nLen)
End Function

' Функция преобразования sAppointment в падеж nPadeg
Public Function MakeAppointment(ByVal sAppointment As String, ByVal nPadeg As Long) As String
Dim tmpS As String
Dim nLen As Long
Dim RetVal As Integer
  If Len(sAppointment) < 3 Then Exit Function
  nLen = 10000
  tmpS = String(nLen, 0)
  RetVal = GetAppointmentPadeg(StrConv(sAppointment, vbUnicode), nPadeg, tmpS, nLen)
  If RetVal = -1 Then MsgBox "Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение должности"
  MakeAppointment = Left(StrConv(tmpS, vbFromUnicode), nLen)
End Function



08-11-2013 04:33
Добрый день! Пользуюсь Вашей библиотекой очень давно. На работе поменяли компы, и поставили новую ОС x64. Перенес. Не работает. Прочитал, что для x64 нужна новая библиотека padegUC. Не могу найти ее здесь. Дайте пожалуйста ссылку.


31-10-2013 12:39
Здравствуйте, заметил несколько слов которые склоняются не верно, как их исправить не могу взять в толк: Должность - Начальник узла, подразделение - Узел связи, результат - Начальник узла узела связи; Должность - Командир звена, подразделение - вертолетное звено, результат - Командир звена вертолетного звено. Буду благодарен за ответ.


30-10-2013 20:20
Подскажите пожалуйста как можно подключить библиотеку padeg.dll не регистрируя её через (regsvr32)?
В модуле подключаю таким образом:

Попытка
  ЗагрузитьВнешнююКомпоненту("C:\Program Files (x86)\1cv82\Padeg.dll");
  КомпонентаСклонения = Новый COMОбъект("Padeg.Declension");

Исключение
  Сообщить("Не удалось подключить внешнюю компоненту Padeg.dll !");
КонецПопытки;

КомпонентаСклонения.Dictionary.FileName = "C:\Program Files (x86)\1cv82\Except.dic";

Не подключается, уходит в исключение ("Не удалось подключить внешнюю компоненту Padeg.dll!")


29-10-2013 02:07
сообщение от автора материала
С тире проблему исправим.
Что касается N-спальный должностей (как имена испанских грандов) тут в лоб проблема не решается но что-нить попробуем придумать.
И потом такие должности встречаются достаточно редки и явно не в общих списках.
Каcательно склонения "генерал-майор", склонение построено по общему правилу деловой переписки (наша любимая книжка: Розенталь Д.Э., Теленкова М.А. Словарь трудностей русского языка, изд. 3-е. М., 1984, с. 108, 239.)
Порядок  склонения составных слов:

1) установить, сколько частей слова склоняется;

2) если склоняются обе части, определить грамматический род по первому слову (платье-костюм — у меня нет платья-костюма — у нее появилось новое платье-костюм);

3) если склоняется только вторая часть, грамматический род определяется по второму слову (кафе-мороженое открыто).

Для воинских званий с несклоняемой первой частью необходимо использовать словарь исключений.
 Seer


28-10-2013 23:55
Seer, я выслал Вам файл с примерами. Посмотрите, пожалуйста, почту.
Хотел бы ещё попросить Вас, если есть возможность, поменять заголовок темы и содержание. Всё же, программа склоняет и должности.


28-10-2013 01:05
сообщение от автора материала
> Печально, никто не любит 64 бит MSSQL 2008

А что не так с 64 бит MSSQL 2008?
Для 64-х бит можно пересобрать пример в файле pd_Sample.zip
 Seer


25-10-2013 17:56
сообщение от автора материала
> Выяснил, что должность "и.о. ректора" склоняется так, как будто слово "ректора" - женского рода.

  У вас не загружен файл исключений!

> Кроме того, если в должности есть тире (не дефис, который ставится кнопкой "минус"), то вторая часть должности тоже склоняется неверно.

  сохраните пример с "не дефисом" в ворде и пришлите пож. на мою почту.

> "заместитель директора – начальник отдела" склоняется так,

  Да, это особенность, как-то "двуспальные" должности не рассматривали.
 Seer


23-10-2013 01:09
Печально, никто не любит 64 бит MSSQL 2008


22-10-2013 08:54
Прошу прощения, ошибся, вот такой вариант предлагается программой: "заместителю директора – начальник отдела".


22-10-2013 08:49
Здравствуй, уважаемый автор программы!
Протестировал сегодня 32-разрядную библиотеку на нескольких примерах. Спасибо за хорошее оформление программы.
Выяснил, что должность "и.о. ректора" склоняется так, как будто слово "ректора" - женского рода.
Кроме того, если в должности есть тире (не дефис, который ставится кнопкой "минус"), то вторая часть должности тоже склоняется неверно. Например, "заместитель директора – начальник отдела" склоняется так, что вторая часть (начальник отдела) не меняется ("заместителю директора - начальнику отдела"). Если заменить тире на дефис, то ошибка исчезает.


17-10-2013 12:47
сообщение от автора материала
Уточню ссылку https://drive.google.com/?authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M
 Seer


17-10-2013 12:43
сообщение от автора материала
Пересобрал библиотеку для Firebird (32 и 64) попутно избавился от паразитных параметров, типа длинна возвращаемого результата.
Ссылка для скачивания https://docs.google.com/file/d/0ByCjt0r9Y_FcUEFtMTJmd3h0eDA/edit?usp=sharing
Скрипт подключения в архиве.
Не требуется лицензирования.

Реализованы след. ф-ции:
GETAPPOINTMENTPADEG 'Склонение должности. Параметры должность, падеж.';
GETDICTIONARY 'Получение полного имени словаря исключений. Без входных параметров.';
GETFIOPADEGFS 'Функция склонения фамилии, имени, отчества, записанных одной строкой, из именительного падежа в любой другой падеж. Входные параметры: ФИО в именительном падеже, пол(1 - мужчина, 0 - женщина), падеж.';
GETFIOPADEGFSAS 'Склонение ФИО с автоматическим определением рода (пола). Параметры ФИО, падеж';
GETFIPADEGFS 'Склонение фамилии и имени(см. GETIFPADEGFS, там имени и фамилии), записанных одной строкой. Параметры ФИ, род (1 - мужчина, 0 - женщина), падеж.';
GETFULLAPPOINTMENTPADEG 'Склонение наименования должности (1-й параметр) и подразделения (2-й параметр) в падеже заданным третьим параметром.';
GETIFPADEGFS 'Склонение имени и фамилии (см. GETFIPADEGFS, там фамилии и имени), записанных одной строкой. Параметры ИФ, род (1 - мужчина, 0 - женщина), падеж.';
GETNOMINATIVEPADEG 'Функция восстановления именительного падежа. Входной параметр ФИО в склонении, выход: ФИО в именительном падеже';
GETOFFICEPADEG 'Склонение подразделения. Параметры подразделение, падеж';
GET_SEX 'Определение пола по ФИО (отчеству). Параметры ФИО. Возвращает 1 - "М", 0 - "Ж"';
SETDICTIONARY 'Установка и загрузка нового словаря исключений. Входной параметр полное имя словаря исключений. Возвращает успех - 1, неудача - 0.';
UPDATEEXCEPTIONS 'Выполняет перезагрузку словаря исключений. Возвращает значения: 1 - успешное, 0 - ошибка.';
 Seer


16-10-2013 20:06
библиотеку с помощью regsvr32 зарегистрировал, в ключе реестра путь указал HKLM\SOFTWARE\Padeg, автоматом не подключается.
Через КомпонентаСклонения.Dictionary.FileName = C:\Program Files (x86)\1cv82\Except.dic подключился, склоняет как надо, большое спасибо за помощь, очень оперативно.


16-10-2013 07:09
сообщение от автора материала
В сообщении пусто, видимо не подключены исключения, а как его подключить?

Если библиотека зарегистрирована в системе с помощью regsvr32 и файл исключений находится по адресу, указанному в ключе реестра HKLM\SOFTWARE\Padeg "ExceptionDicDir", то исключения должны подключаться автоматом.

Но можно и непосредственно указать расположение файла после создания компоненты:

КомпонентаСклонения.Dictionary.FileName = путь_к_файлу/Except.dic
 PGL


15-10-2013 23:06
В 1с должность "заведующий мастерским участком" склоняет в "заведующему мастерскиму участком",
Проверьте подключение словаря исключений:
Сообщить(""Текущий словарь: ""+КомпонентаСклонения.Dictionary.FileName);
А если он подключен, то наличие слова "заведующий" в секции [NonAdjective]

В сообщении пусто, видимо не подключены исключения, а как его подключить?


15-10-2013 07:54
Использовал эклевский макрос на VBA. В первом столбце перечислены ФИО в иминительном падеже, во второй назначил функцию для преобразования в Творительный падеж.
При первом запуске и добавлении макроса в файл все отлично переделал.
После сохранения и перезапуска этого же файла макрос отказался работать-пишет в ячейке #ЗНАЧ!. Переназначение функции в ячейке не помогает, в коде макроса ничего не менял.
В чем может заключаться проблема?


14-10-2013 05:43
В on-line тестировании http://www.delphikingdom.com/padeg_online.asp склоняет правильно.
Должность: заведующему мастерским участком.
Сообщение не подписано


13-10-2013 22:17
сообщение от автора материала
В 1с должность "заведующий мастерским участком" склоняет в "заведующему мастерскиму участком",

Проверьте подключение словаря исключений:

Сообщить(""Текущий словарь: ""+КомпонентаСклонения.Dictionary.FileName);

А если он подключен, то наличие слова "заведующий" в секции [NonAdjective]
 PGL


11-10-2013 01:46
В 1с должность "заведующий мастерским участком" склоняет в "заведующему мастерскиму участком",

а должно быть "заведующему мастерским участком".

пример кода:
КомпонентаСклонения = Новый COMОбъект("Padeg.Declension");
ДолжностьПадеж = КомпонентаСклонения.GetAppointmentPadeg(Должность, 3);


07-10-2013 10:59
сообщение от автора материала
Желающие потестировать библиотеку PadegFB.dll для Firebird (32 и 64 бита) милости прошу написать seer.true@gmail.com. В теме укажите "PadegFB XX-бита".
Новое в версии: изменена ветка реестра для хранения настроек на HKEY_CURRENT_CONFIG.
Исправлена ошибка восстановления именительного падежа ("а" после шипящих).
и прочие незначительные улучшения.
 Seer


07-10-2013 05:10
Пытаюсь связать библиотеку PadegUC.dll с Firebird'ом следующими способом:


  DECLARE EXTERNAL FUNCTION GET_FIO_PADEG_FSAS
  CSTRING(100),
  INTEGER
  RETURNS CSTRING(100)
  ENTRY_POINT 'GetFIOPadegFSAS'
  MODULE_NAME 'PadegUC';



Проверяю работоспособность в IBExpert'е:


  select p.name, get_fio_padeg_fsas(p.name, 2)
  from person where p.id = 1000



В результате вылетает exception и служба Firebird падает.

Отзовитесь, у кого получилось подключить данную библиотеку!


07-10-2013 05:10
Пытаюсь связать библиотеку с Firebird'ом следующими командами:


  DECLARE EXTERNAL FUNCTION GET_FIO_PADEG_FSAS
  CSTRING(100),
  INTEGER
  RETURNS CSTRING(100)
  ENTRY_POINT 'GetFIOPadegFSAS'
  MODULE_NAME 'Padeg';



Проверяю работоспособность в IBExpert'е:


  select p.name, get_fio_padeg_fsas(p.name, 2)
  from person where p.id = 1000



В результате вылетает exception и служба Firebird падает.

Отзовитесь, у кого получилось подключить данную библиотеку!


20-09-2013 06:52
Здравствуйте ! Использую обертку xp_padej.dll v3.0 вместе с MS SQL SERVER 2008 работает, но при единовременном обращении неск. пользователей сервер останавливает соед. Возникает ошибка, вот лог
2013-09-20 13:30:19.61 spid53      Ошибка: 18002, серьезность: 20, состояние: 1.
2013-09-20 13:30:19.61 spid53      Exception happened when running extended stored procedure 'GetOfficePadeg' in the library 'xp_padeg.dll'. SQL Server is terminating process 53. Exception type: Win32 exception; Exception code: 0xc0000005.
Есть ли где-то обертка для х64 ?


01-09-2013 12:00
сообщение от автора материала
> Удалось ли кому-нибудь подключить библиотеку padeg.dll в firebird? или это невозможно?

К счастью возможно, только мне надо сделать новую сборку, обратитесь в личку seer.true@gmail.com.
 Seer


30-08-2013 06:43
Удалось ли кому-нибудь подключить библиотеку padeg.dll в firebird? или это невозможно?


19-07-2013 11:33
сообщение от автора материала
... но исчез. :-)
 Seer


19-07-2013 11:31
сообщение от автора материала
> Есть ли эта чудесная библиотека для работы под Linux (Ubuntu)? Очень нужна!

Пока нет, но есть планах. Был один желающий портировать, но исче
 Seer


16-07-2013 07:56
Есть ли эта чудесная библиотека для работы под Linux (Ubuntu)? Очень нужна!
Заранее спасибо!


14-05-2013 02:27
Добрый день!

Приношу извинения за сознательное сообщение о не существующей ошибке при склонении в предложном падеже, обратил внимание на древние даты библиотеки и решил проверить таким способом жив ли сайт.
И только после заметил активную жизнь в разделе "обсуждение материала"

С уважением,
Игорь


12-05-2013 11:15
сообщение от автора материала
> получаю Access violation если попытаюсь склонять Ыва Ыва Ыва

Странно, я АV повторить не смог. Какую ф-цию используете? Ну и давайте пример кода.
 Seer


08-05-2013 06:31
Проблема с PadegUC.dll дело в том, что получаю Access violation если попытаюсь склонять Ыва Ыва Ыва


06-03-2013 03:24
Не знаю почему .
Просто выдает без склонения.
Я просто менял Padeg.dll на PadegUC.dll (соответственно и ссылки)
В C# нет
Microsoft.VisualBasic.Strings.StrConv(cFIO, Microsoft.VisualBasic.VbStrConv.vbUnicode)
а строки  всегда UNICODE
Поэтому я и удивлен что не юникод работает а юникод нет.


05-03-2013 21:23
А можно просто скомпилить Padeg.dll 64-bit без Unicod'a  как было , а то у меня на C# не склоняет (но работает)
Александр Филипов


А такое не работает в C# ? на данном языке не пишу, ну просто попробовать по аналогии стоит думаю...
преобразование к ансистринг.
Microsoft.VisualBasic.Strings.StrConv(cFIO, Microsoft.VisualBasic.VbStrConv.vbUnicode)
и обратное преобразование.
Microsoft.VisualBasic.Strings.StrConv(cFIO, Microsoft.VisualBasic.VbStrConv.vbFromUnicode)



Кстати макросы под ексель на 64-битном офисе проверил. все работает отлично. для универсальности можно сразу прописать объявление функций следующим образом:
#If VBA7 Then
    Private Declare PtrSafe Function GetFIOPadegFSAS Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

    Private Declare PtrSafe Function GetNominativePadeg Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal pResult As String, ByRef nLen As Long) As Integer
  
    Private Declare PtrSafe Function GetAppointmentPadeg Lib "PadegUC.dll" _
        (ByVal pAppointment As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer
#Else
    Private Declare Function GetFIOPadegFSAS Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer

    Private Declare Function GetNominativePadeg Lib "PadegUC.dll" _
        (ByVal pFIO As String, ByVal pResult As String, ByRef nLen As Long) As Integer
  
    Private Declare Function GetAppointmentPadeg Lib "PadegUC.dll" _
        (ByVal pAppointment As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer
#End If
остается дело за малым положить нужную версию padegUC.dll в программу с офисом.


05-03-2013 04:01
А можно просто скомпилить Padeg.dll 64-bit без Unicod'a  как было , а то у меня на C# не склоняет (но работает)


28-02-2013 22:12
Добрый день. в общем, сам мучался долго и поэтому выкладываю решение как подключить библиотечки PadegUC.dll к макросам в экселе или ворде.

первонаперво ложите padegUC.dll и Except.dic в папку куда установлен Офис у вас у меня к примеру:
C:\Program Files\Microsoft Office\Office14

далее не забудьте в объявлении фунции экспорта dll указать все таки padegUC.dll

Ну и последнее при отправке и получении переменной типа String не забудьте сделать преобразование через функцию StrConv. Приведу пример из функции преобразования фамилий

  RetVal = GetFIOPadegFSAS(StrConv(cFIO, vbUnicode), nPadeg, tmpS, nLen)
  If RetVal = -1 Then MsgBox "Недопустимое значение падежа - " & "(" & nPadeg & ")", , "Склонение ФИО"
  MakePadeg = Mid(StrConv(tmpS, vbFromUnicode), 1, nLen)

Проверено на библиотечке под 32-битный офис.
Автору Огромное СПАСИБО за его труды!!!


20-02-2013 00:53
Уважаемый автор программы!
Большое спасибо за ответ. Приятно пользоваться вашей программой.
Наверное, я отстал от жизни, но не знаю, как пользоваться dll без использования COM (в Word).
Регистрировал я её уже просто от того, что Word выдавал ошибку "File not found: 'PadegUC.dll'", думал, хоть через regsvr32 сможет найти.


19-02-2013 12:55
сообщение от автора материала
> но с появлением Windows 7 x64 появились проблемы.

Господа, коллеги, други...
Читайте внимательно версия x64 тестовая без COM-сервера.
Зачем вы ее регистрируете и пытаетесь использовать как COM-сервер?
 Seer


19-02-2013 00:41
Здравствуйте!
Подскажите, пожалуйста, как мне быть с 64-разрядной Windows и PadegUC.dll?
Несколько лет использую отличную библиотеку Padeg.dll, но с появлением Windows 7 x64 появились проблемы. На форуме здесь где-то едва нашёл библиотеку PadegUC.dll, долго с ней пытался "подружиться". Копировал в Windows\System32, Windows\SysWoW64, пытался регистрировать её через regsvr32 (тоже обеими версиями из обеих папок). Однако выдавались разные ошибки типа "Не найдена точка входа" и "Не удалось зарегистрировать".
В самом проекте в Word тоже не всё ладно. Попытки описать вызов функции через


Private Declare Function GetPadeg Lib "PadegUC.dll" Alias "GetFIOPadegFSAS" _
  (ByVal pFIO As String, ByVal nPadeg As Long, ByVal pResult As String, ByRef nLen As Long) As Integer


подсвечиваются в редакторе красным цветом.
Ставлю директиву #If Win64 Then, заменяю Long на LongLong, после Declare пишу слово PtrSafe, немного меняю код функции, захожу в Debug, пытаюсь поглядеть результат, вижу сообщение об ошибке типа:
Run-time error '48': File not found 'PadegUC.dll'.
Попытки зарегистрировать его способом, указанным выше, привели к другим ошибкам.
Подскажите, как быть.


16-02-2013 06:19
На 2008 надо делать CLR функцию , тем паче что 2000 64-bit нет. Но те кто могут молчат , а у меня не вышло


14-02-2013 19:33
А как обстоят дела с подключением новой версии х32 и х64 к MS SQL server 2008? попытался просто переименовать библиотеки и скормить - не получилось. и библиотека xp_padeg.dll не работает на 2008 сервере...


01-02-2013 12:57
сообщение от автора материала
На Google ссылки целые.
https://drive.google.com/?tab=mo&authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M
 Seer


31-01-2013 03:53
Все ссылки на 64битную версию битые, выложите, пожалуйста!


14-01-2013 06:16
Не знаю но PadegUC не хочет склонять на C#, хотя Padeg.dll в том же проекте работает (вообще то мне надо 64 - bit для MSSQL CLR)


27-12-2012 06:46
Здравствуйте !!!
Будет ли или где взять обёртку "xp_padeg" для MS SQL SERVER 64 разрядной?


22-12-2012 06:29
Не могу исползовать PadegUC.dll  в C#. Имя иDll import заменил но пишет "Can not load file PadegUC.dll"


06-12-2012 02:45
Уважаемые авторы!
В свое время я портировал библиотеку на java, и пользовался единолично результатами 5 лет. Наконец, решил опубликовать на хабре как подарок любимому ресурсу (http://habrahabr.ru/post/161335/).
Конечно, лучше было бы спросить заранее, но каково ваше отношение к данной истории (если отрицательное, готов удалить статью). Также интересует, могу ли я публиковать исходники как open-source проект? Портированная библиотека соответствует padeg.dll 3.3


05-12-2012 12:08
сообщение от автора материала
32 бита там же
https://drive.google.com/?tab=wo&authuser=0#folders/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M
 Seer


30-11-2012 21:19
Seer, не могли бы наSeer, не могли бы на googledocs также добавить и 32 битную версию, пож-та googledocs также добавить и 32 битную версию, пож-та


29-11-2012 04:48
Будьте добры, пожалуйста, обновите ссылки! Очень нужна библиотека с поддержкой unicode.


19-11-2012 11:05
сообщение от автора материала
https://docs.google.com/folder/d/0ByCjt0r9Y_FcNlU1cHVrbHpGd3M/edit
там Padeg_64.rar
64 бита, Unicode, без COM-сервера
 Seer


19-11-2012 10:57
сообщение от автора материала
http://turbobit.net/ajakfdqymwn3.html
там Padeg_64.rar
64 бита, Unicode, без COM-сервера
 Seer


19-11-2012 02:06
Пожалуйста, обновите ссылки для скачивания библиотек под SQL Server х64


24-10-2012 13:48
сообщение от автора материала
Есть вопрос. Куда развивать дальше?
На UniCode перешли, 64бита есть...
Просили Com-сервер для 64-х версии. Нужен ли?
Поигрался с dataSnap. Стоит ли?
Вот такие времена...
 Seer


09-10-2012 15:13
Имеется или планируется сборка библиотеки под Linux. Интересует вариант использования в связке Linux+fpc+Lazarus


07-10-2012 03:34
сообщение от автора материала
К сожалению в силу занятости не могу так часто отслеживать форум, но на e-mail отвечаю быстро.
Тут тестовая 64-разрядня версия
ftp://ftp.asphltd.ru/Upload/Padeg64/
 Seer


07-09-2012 02:59
ftp://ftp.asphltd.ru/Upload/Padeg_x64.zip
Win32:
ftp://ftp.asphltd.ru/Upload/Padeg.zip

Ссылки битые, продублируйте плиз!!!

Очень нужно Padeg_x64.zip


04-07-2012 01:21
Просьбу можно.
Есть скрипт на MSSQ2000.
Сейчас уже на 2005 и 2008 сборки - Кто нибудь может переделать на сборки  - я туплю в это
А то хранимка на 2000 резеультата не возвращает


25-06-2012 06:58
Есть проблема со склонением названия организации: "Православная церковь"
в родительном:  "Православной церковя"
в творительном: "Православной церковем"

Может как-то можно обойти?


13-06-2012 22:42
ftp://ftp.asphltd.ru/Upload/Padeg_x64.zip
Win32:
ftp://ftp.asphltd.ru/Upload/Padeg.zip

Ссылки битые, продублируйте плиз!!!

Очень нужно Padeg_x64.zip


29-05-2012 00:23
ftp://ftp.asphltd.ru/Upload/Padeg_x64.zip
Win32:
ftp://ftp.asphltd.ru/Upload/Padeg.zip

Ссылки битые, продублируйте плиз!!!


24-04-2012 03:06
сообщение от автора материала
По ссылкам:
ftp://ftp.asphltd.ru/Upload/...
лежат библиотеки без COM-сервера, не вижу смысла в регистрации.
 Seer


23-04-2012 07:06
Скачал архив с http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412. Устанавливал на 32-разрядную винду. По ссылкам на этой странице скачал обновленный архив, dll не регистрируются вообще, ни на 32 разрядной, ни на 64-разрядной винде. Ошибка - модуль ... загружен, но точка входа DLLRegisterServer не найдена.


21-04-2012 00:23
сообщение от автора материала
> Скачал padeg.dll, весь набор. Использую для склонения должностей в зуп8.

  Вы говорите о 64 битах?
 Seer


20-04-2012 09:03
Скачал padeg.dll, весь набор. Использую для склонения должностей в зуп8. Есть словарь исключений. Подключил его по инструкции. В коде проверяю активный словарь - все правильно. Но, когда используются некоторые исключения  например, заведующий аптекой, то слово аптекой склоняется. Т.е. словарь вообще никак не работает.


12-04-2012 05:30
Наконец-то завершил переписывание на XE2.
Теперь полная поддержка Unicode и 64-битная версия.
Win64:
ftp://ftp.asphltd.ru/Upload/Padeg_x64.zip
Win32:
ftp://ftp.asphltd.ru/Upload/Padeg.zip

Обратите внимание что сменилось имя библиотеки на padegUC.dll. Именно с этим именем работают примеры.
Наверняка будут какие-то глюки, тестируйте!

Пока без com-сервера.


04-04-2012 05:19
Добрый день,
у меня винда 7-ка. не срабатывает команда regsvr32.exe padeg.dll.
Выдает сообщение: Возможно, модуль "padeg.dll" не совместим с версией Windows,
работающей на данном компьютере. Проверьте совместим ли этот модуль с х86
(32-разрядной) или х64 (64-разрядной) версией regsvr32.exe.

Помогите, пожалуйста.

С уважением,
Даулет


03-04-2012 11:12
сообщение от автора материала
2 Саша: Конечно можно. Как? Можно, написать на VBA небольшую функцию, обращающуюся к функциями библиотеки и возвращающую результат. Если более конкретно, то пожалуйста в личку.
 PGL


03-04-2012 11:05
сообщение от автора материала
2 Дмитрий: Даже не знаю что и сказать... Ваш код отработал у меня без проблем. Правда в D3.

А вас не смущает присвоение типа Label4.Caption:=pResult; Ведь TCaption = string; в то время как pResult имеет тип PChar;

Попробуйте так Label4.Caption := StrPas(pResult);
 PGL


03-04-2012 02:03
реально ли сделать вот это - http://www.morpher.ru/Products/XLL/ (видео) в EXCEL MS 2010 с помощью библиотек размещенных на ЭТОМ сайте, и как ?  


05-03-2012 06:18
На WinXP SP3, Rad Studio XE после компиляции проекта, padeg.dll стала возвращать перекорёженные слова.
Например Пупкин Иван Ивановичь на выходе получается "упки= ва= вановиg" вместо "Пупкину Ивану Ивановичу"
Что я делаю не так? Или padeg.dll версии 3.3 просто выдаёт текст в какой-то своей кодировке?
Пример кода:

unit Unit2;

interface

uses
  Windows, Forms, Controls, StdCtrls, Classes, SysUtils;

type
  TForm2 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  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

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
   Fio:='Пупкин';
   nName:='Иван';
   SName:='Иванович';
end;

procedure TForm2.FormShow(Sender: TObject);
begin
   Label1.Caption:=Fio;
   Label2.Caption:=nName;
   Label3.Caption:=SName;
   Sex:=True;
   if Assigned(GetFIOPadeg) then
     begin
       nLen := Length(FIO)+10;
       pResult:=StrAlloc(nLen);
       try
          pVar:=GetFIOPadeg(PChar(Fio),'','',Sex,3, pResult, nLen);
          Label4.Caption:=pResult;
       finally
          StrDispose(pResult);
       end;
       nLen := Length(nName)+10;
       pResult:=StrAlloc(nLen);
       try
         GetFIOPadeg('',PChar(nName),'',Sex,3, pResult, nLen);
         Label5.Caption:=pResult;
       finally
          StrDispose(pResult);
       end;
       nLen := Length(sName)+10;
       pResult:=StrAlloc(nLen);
       try
         GetFIOPadeg('','',PChar(SName),Sex,3, pResult, nLen);
         Label6.Caption:=pResult;
       finally
          StrDispose(pResult);
       end;
     end;
   if Sex then
     Label7.Caption:='Муж.'
   else
     Label7.Caption:='Жен.';
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.
end.



04-02-2012 07:27
Эх. А x64 версии не появилось? А то замучился с IIS а морфер не нра.
Может чем помочь?


21-11-2011 00:14
2Сергей. Интерфейс нативных библиотек опубликован 1С. Готовых примеров наверно не будет, поэтому писать нужно самому. Я пока не пробовал.  


19-11-2011 16:05
Как можно прикрутить эту библиотеку к серверу PostgresSql 9.0?
 Pg


10-11-2011 05:57
А как можно адаптировать библиотеку под запуск в 1С 8.2. в тонком клиенте. Там только нативные библиотеки могут запускаться.


10-08-2011 00:34
сообщение от автора материала
2 tarakan: GetAppointmentPadeg и добавьте в секцию словаря [NonAdjective] исполняющий
 PGL


09-08-2011 00:11
Никак не могу просклонять "Исполняющий обязанности Начальника". Подскажите при помощи какой функции просклонять правильно эту должность?


16-11-2010 05:33
Никак не могу справиться с библиотекой Padeg.dll

В комплекте библиотеки присутствует пример для VBA Excel
в котором реализовано обращение к библиотеке для склонения ФИО
и указано, что "Обращение к другим функциям выполняется аналогично".

Никак не могу подобрать аналогию чтоб всё работало(((

Если не трудно помогите пожалуйста
Интересуют функции:
GetAppointmentPadeg
GetFullAppointmentPadeg
GetOfficePadeg


17-09-2010 09:09
Второй день бюсь над тем, что бы прикрутить библиотеку к MS Office 2007, ничего не выходит.
Кто то знает реально ли это или нет?


18-06-2010 06:19
Здравствуйте.

В связи с требованиями клиентов по склонению ФИО и должностей в отчетах и шаблонах нам необходимо приобрести библиотеку для автосклонения - padeg.dll и её исходные коды для интеграции в наш продукт GS-Ведомости

Разъясните по прайс листу:
- Лицензия для коммерческого использования Программы - 500 руб РФ
- Корпоративная лицензия для коммерческого использования Программы - 1000 руб РФ
- Исходные тексты *) - 1000 руб РФ

Нас интересует корпоративная лицензия и исходные тексты.

И если мы покупаем корпоративную лицензию и исходные тексты, то имеем ли мы право интегрировать всё это в наш коммерческий продукт.


28-05-2010 12:37
Здравствуйте,уважаемые создатели!
А у меня не получилось ёё установить.Сделал всё как написано.При обеспечении работы с сервером автоматизации пытался зарегистрировать dll, выполнив в командной строке: regsvr32.exe padeg. Выдаётся ошибка: "Модуль padeg.dll загружен, но точка входа DllRegisterServer не найдена. Проверьте,что файл padeg.dll является правильным файлом dll или ocx и повторите попытку".
Помогите,пожалуйста...Очень буду признателен

У меня такая же проблема, ОС Windows 7, Delphi 7.
Помогите пожалуйста.


06-04-2010 08:37
Скажите пожалуйста, на каких условиях можно использовать Вашу библиотеку в коммерческом продукте?


10-03-2010 01:31
сообщение от автора материала
в таком случае подскажите, что прописать в файле исключений, чтобы получалось "старшЕй"
Да, есть проблема. Пока предложить ничего не могу, кроме как корректировать возвращаемый результат в вашем коде.

А существует ли версия этой библиотеки откомпилированная под Win64 ?

Нет.
 PGL


09-03-2010 05:39
А существует ли версия этой библиотеки откомпилированная под Win64 ?


15-01-2010 07:23
в таком случае подскажите, что прописать в файле исключений, чтобы получалось "старшЕй". я пока добиться этого не смог.


15-01-2010 06:45
>> при склонении должности "старшая медстестра" в дательном падеже получается "старшой медсестре" (((

Молодой человек, учите русский. Дательный падеж предполагает вопрос "Кому? Чему?". Что тут кажется нелогичным? :) Разве только слово "старшой" должно быть "старшей". Но, тут наверное, словарь исключений надо задействовать. Я ни разу им пользовался ибо нужды не было.


15-12-2009 01:05
при склонении должности "старшая медстестра" в дательном падеже получается "старшой медсестре" (((


05-11-2009 07:15
здравствуйте.
у меня возникла проблема при склонении слово "училище". в родительном падеже мне программа выдает "училище", если можете помогите плизз.


06-10-2009 21:02
Спасибо, Док, помогло. Почему-то заменить просто все сплошняком я как-то побоялся, хотя мысль такая была (:


06-10-2009 15:08
упс, первая ссылка

http://rapidshare.com/files/289544594/PadegFIO_ansi.zip


06-10-2009 15:08
я не понял, где именно и что вы изменили в padegFIO.pas. Буду вам очень признателен, если покажете где или вышлете измененный файл.

если это не нарушает правило форума, то здесь
https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi?savedfiles=1&forbiddenfiles=0
http://www.onlinedisk.ru/file/235374/


06-10-2009 01:33
Док, у меня такая же проблема, но т.к. я не мастер Delphi, я не понял, где именно и что вы изменили в padegFIO.pas. Буду вам очень признателен, если покажете где или вышлете измененный файл.

Заранее вам благодарен.


23-09-2009 03:39
и запрос
select    getfiopadeg ('Петров', 'Петр', 'Петрович','м', 2)  from rdb$database
приводит к падению сервера :-)


емнип, четвертый аргумент должен быть boolean


22-09-2009 18:08
Смотри-ка, поковырялся в коде padegFIO.pas (да простят мне авторы), сделал явное приведение типов:
1. String --> AnsiString
2. PChar --> PAnsiChar
3. StrAlloc --> AnsiStrAlloc

и все заработало ;)


22-09-2009 17:50
А у меня библиотека некорректно работает при переходе на юникодную D2009. Например такой код:

Memo1.Lines.Add('The CodePage of "GetFIOPadeg" is: ' +  IntToStr(StringCodePage(GetFIOPadeg('Иванов','Иван','Иванович',True,2))));



вернет

The CodePage of "GetFIOPadeg" is: 1200



А простая подстановка

Memo1.Lines.Add(GetFIOPadeg('Иванов','Иван','Иванович',True,2));


вообще возвращает пустую строку

ps. dll и pas-файл лежат рядом с экзешником, в uses'ах PadegFIO прописан


09-09-2009 12:27
Здравствуйте,уважаемые создатели!
А у меня не получилось ёё установить.Сделал всё как написано.При обеспечении работы с сервером автоматизации пытался зарегистрировать dll, выполнив в командной строке: regsvr32.exe padeg. Выдаётся ошибка: "Модуль padeg.dll загружен, но точка входа DllRegisterServer не найдена. Проверьте,что файл padeg.dll является правильным файлом dll или ocx и повторите попытку".
Помогите,пожалуйста...Очень буду признателен


20-08-2009 04:05
замечательная штука!!!!спасибо огромное...вот только множественное число склонять бы надо...


06-08-2009 08:56
сообщение от автора материала
Попробовал сабж в экселе - склоняет только Иванов Иван Иванович в Иванову Ивану Ивановичу.
Например, Иванов И.И. не склоняет. То есть не работает с инициалами.


Жаль, не показали, как пробовали в Excel. Какую функцию использовали?

Может кто подскажет как модифицировать функцию чтобы она работала с инициалами.

Попробуйте функцию GetFIOPadegFS, если "Иванов И.И." это одна строка. Правда, ей требуется явное указание рода.
 PGL


05-08-2009 15:12
Попробовал сабж в экселе - склоняет только Иванов Иван Иванович в Иванову Ивану Ивановичу.
Например, Иванов И.И. не склоняет. То есть не работает с инициалами.

Может кто подскажет как модифицировать функцию чтобы она работала с инициалами.


04-08-2009 04:26
Добрый день
нашел  библиотеку  функций, очень понравилась

скачал примеры, но...   как мне подключить в Firebird в виде UDF?

подскажите ссылку на документы

вариант
DECLARE EXTERNAL FUNCTION GETFIOPADEG
CSTRING(25),  CSTRING(25),  CSTRING(25),  CSTRING(1), SMALLINT
RETURNS  CSTRING(255)  FREE_IT
ENTRY_POINT 'GetFIOPadeg'  MODULE_NAME 'Padeg.dll'

и запрос

select    getfiopadeg ('Петров', 'Петр', 'Петрович','м', 2)  from rdb$database

приводит к падению сервера :-)


27-07-2009 06:15
Сколько будет стоить полная версия padeg_ua.dll под Delphi и как ее можно приобрести??? Спасибо


23-07-2009 04:17
Спасибо за проделанную работу! Очень полезная библиотека! Очень благодарен!!!!!!


09-06-2009 00:59
сообщение от автора материала
При работе с должностями - "Уборщик служебных помещений" - всё правильно склоняется, а "Вожатый служебных собак" - не получается ("Вожатому служебныху собак" и т.п.)
Добавьте "вожатый" (без кавычек) в секцию [NonAdjective] файла Except.dic
 PGL


08-06-2009 22:42
Написать библиотеку, которая импортирует нужные вам функции из существующей библиотеки, а сама экспортирует точно такие же функции, но с моделью вызова cdecl. А реализация этих функцию проста - они просто будут вызывать одноимённую импортируемую функцию, передавая им в качеств параметров то, что сами получили на вход. Очень просто, разве что немного муторно, если функций много.

Спасибо за идею!


08-06-2009 11:03
При работе с должностями - "Уборщик служебных помещений" - всё правильно склоняется, а "Вожатый служебных собак" - не получается ("Вожатому служебныху собак" и т.п.)


08-06-2009 11:02
Вы мне предлагаете самому написать библиотеку, включить в нее импортируемые функции из padeg и их же экспортировать как cdecl?

Написать библиотеку, которая импортирует нужные вам функции из существующей библиотеки, а сама экспортирует точно такие же функции, но с моделью вызова cdecl. А реализация этих функцию проста - они просто будут вызывать одноимённую импортируемую функцию, передавая им в качеств параметров то, что сами получили на вход. Очень просто, разве что немного муторно, если функций много.


08-06-2009 05:01
А самостоятельно написать обёртку с нужной моделью вызова не судьба?
Вы мне предлагаете самому написать библиотеку, включить в нее импортируемые функции из padeg и их же экспортировать как cdecl?


07-06-2009 07:15
Возможно ли перекомпилировать библиотеку под вызов cdecl вместо stdcall? Дело в том, что я подключаю ее в Oracle, а ему только cdecl подавай.

А самостоятельно написать обёртку с нужной моделью вызова не судьба?


07-06-2009 06:53
Подключил библиотеку ФИО склоняет, но не могу работать со склонениями должностей. CreateObject("Padeg.Declension") не работает. В чём может быть дело?


03-06-2009 00:38
Возможно ли перекомпилировать библиотеку под вызов cdecl вместо stdcall? Дело в том, что я подключаю ее в Oracle, а ему только cdecl подавай. Заранее спасибо!


27-05-2009 08:25
При переносе padeg.dll в "Program Files x86" и регистрации оттуда все прошло нормально.


27-05-2009 07:56
При попытке зарегистрировать padeg.dll с помощью regsvr32 в WinXP Prof x64 SP2 выдает сообщение "Padeg.dll is not an executable file and no registration helper is registered for this file type". В 32-х битной windows никаких проблем не было. Что делать?


23-04-2009 05:32
сообщение от автора материала
Если есть должность "Зам. директора", то при склонении, например, в творительном падеже выдает "Зам. директорой", а если "Зам директора" - "Замом директора" (Заместитель -> заместителем) Т.е. проблема в точке?

Запишите в секцию [PointAbbreviation] строку
зам.

Кстати, а вы используете файл исключений? В поставляемом она уже есть.
 PGL


22-04-2009 06:37
Если есть должность "Зам. директора", то при склонении, например, в творительном падеже выдает "Зам. директорой", а если "Зам директора" - "Замом директора" (Заместитель -> заместителем) Т.е. проблема в точке?


23-03-2009 06:46
при использовании библиотеки в приложении
когда выходишь из ПО выдает ошибку  invalid pointer operation
в чем может быть дело


13-03-2009 04:36
Большое спасибо!!!Но, как уже говорил, вместо этого можно просто выделить нужное слово из строки ФИО. Применять ее имеет смысл в случаях, когда имеется признак рода (оглы, кызы), который может записываться как через дефис, так и через пробел.


13-03-2009 02:39
сообщение от автора материала
опять не понял
мне надо сначала каждому занчению
nLastName, nFirstName, nMiddleName : LongInt; задать размер памяти
а далее как вызвать



implementation

type
  PPartsFIO = ^TPartsFIO;
  TPartsFIO = record
    pLastName, pFirstName, pMiddleName : PChar;
    nLastName, nFirstName, nMiddleName : LongInt;
  end;

function GetFIOParts(pFIO:PChar; Parts: PPartsFIO): Integer; stdcall;
                     external 'padeg.dll' Name 'GetFIOParts';

procedure TForm1.Button1Click(Sender: TObject);
var
  Parts      : TPartsFIO;
  CallResult : Integer;
begin
  with Parts do begin
    try
      nLastName := 50;  // размер передаваемого буфера под результат
      nFirstName := 50;
      nMiddleName := 50;
      pLastName := StrAlloc(nLastName); // выделение памяти
      pFirstName := StrAlloc(nFirstName);
      pMiddleName := StrAlloc(nMiddleName);

      CallResult := GetFIOParts(PChar(Edit1.Text), @Parts);

      if CallResult = 0 then begin
        Label1.Caption := StrPas(pLastName);
        Label2.Caption := StrPas(pFirstName);
        Label3.Caption := StrPas(pMiddleName);
      end
      else Label1.Caption := IntToStr(CallResult); // вывод кода ошибки

    finally
      StrDispose(pLastName);  // освобождение памяти
      StrDispose(pFirstName);
      StrDispose(pMiddleName);
    end;
  end;
end;



Но, как уже говорил, вместо этого можно просто выделить нужное слово из строки ФИО. Применять ее имеет смысл в случаях, когда имеется признак рода (оглы, кызы), который может записываться как через дефис, так и через пробел.
 PGL


12-03-2009 09:38
не могу разобраться с function GetFIOParts
как ее использовать

Эта функция выделяет из ФИО составляющие и возвращает их в следующей структуре

type
  PPartsFIO = ^TPartsFIO;
  TPartsFIO = record
    pLastName, pFirstName, pMiddleName : PChar;
    nLastName, nFirstName, nMiddleName : LongInt;
  end;

Объявление функции следующее

function GetFIOParts(pFIO: PChar; Parts: PPartsFIO): Integer; stdcall; export;

Перед вызовом функции и передачей ей параметром указателя на структуру, нужно выделить небходимую память под возвращаемые значения и записать размеры в соответствующие поля.

В принципе, можно просто воспользоваться функцией ExtractWord() из модуля StrUtils.



опять не понял
мне надо сначала каждому занчению
nLastName, nFirstName, nMiddleName : LongInt; задать размер памяти
а далее как вызвать


12-03-2009 09:09
Перекомпилировать надо все. У меня пока нет x-64 компилятора с Delphi (даже поставить не где). Подождите до марта, будет машина.

На дворе март, не появилась возможность скомпилировать 64-разрядную библиотеку с оберткой?


12-03-2009 07:34
сообщение от автора материала
не могу разобраться с function GetFIOParts
как ее использовать


Эта функция выделяет из ФИО составляющие и возвращает их в следующей структуре

type
  PPartsFIO = ^TPartsFIO;
  TPartsFIO = record
    pLastName, pFirstName, pMiddleName : PChar;
    nLastName, nFirstName, nMiddleName : LongInt;
  end;

Объявление функции следующее

function GetFIOParts(pFIO: PChar; Parts: PPartsFIO): Integer; stdcall; export;

Перед вызовом функции и передачей ей параметром указателя на структуру, нужно выделить небходимую память под возвращаемые значения и записать размеры в соответствующие поля.

В принципе, можно просто воспользоваться функцией ExtractWord() из модуля StrUtils.
 PGL


12-03-2009 07:33

Можно ли сделать как-то, чтобы библиотека не изменяла строчные буквы на прописные.
Скармливаю ей ИВАНОВ Иван Иванович (так требует начальство в написании), а она возвращает
Иванову Ивану Ивановичу.
Можно ли это как-то обойти?

К сожадению, порадовать вас не могу - средствами библиотеки в ее нынешнем виде не получится. Первое, что приходит на ум это сделать примерно так (результат в строке S)


Это вариант понятен, просто усложняет создание документов.
А планируется ли в новой версии как-нить это учесть? Если да, то когда можно ждать новую версию.
Спасибо в любом случае!!


12-03-2009 07:14
сообщение от автора материала
Можно ли сделать как-то, чтобы библиотека не изменяла строчные буквы на прописные.
Скармливаю ей ИВАНОВ Иван Иванович (так требует начальство в написании), а она возвращает
Иванову Ивану Ивановичу.
Можно ли это как-то обойти?


К сожадению, порадовать вас не могу - средствами библиотеки в ее нынешнем виде не получится. Первое, что приходит на ум это сделать примерно так (результат в строке S)

S := AnsiUpperCase(Copy(S, 1, Pos(' ', S)-1)) + Copy(S, Pos(' ', S), Length(S));

 PGL


12-03-2009 06:50
не могу разобраться с function GetFIOParts
как ее использовать
постаянно выдает ошибку


11-03-2009 16:26
Добрый день!
Классная библиотека! Спасибо за такую вещицу!
Есть вопрос.
Можно ли сделать как-то, чтобы библиотека не изменяла строчные буквы на прописные.
Скармливаю ей ИВАНОВ Иван Иванович (так требует начальство в написании), а она возвращает
Иванову Ивану Ивановичу.
Можно ли это как-то обойти?
Еще раз спасибо


27-01-2009 14:37
потестил - весчь!


12-01-2009 15:48
Возобновлено on-line тестирование библиотеки склонений
http://www.delphikingdom.com/padeg_online.asp


12-01-2009 03:35
сообщение от автора материала
>>>Потому что они предназначены для РАЗНЫХ целей.

        Какой был бал! Накал движенья, звука, нервов!
Сердца стучали на три счета вместо двух.

  Это про логику, двоичную и троичную. :-)

        ...
        Через отчаянье, молчанье, тишину
Спешила женщина прийти на помощь к нам,-
Их бальный зал - величиной во всю страну.
                                           В. Высоцкий

  Чесслово, спорить не о чем . Пусть будет пост Елены эпилогом.
 Seer


12-01-2009 03:12
>>> Возьмем другую фамилию — Козел <...>
Для разрядки "международной" напряженности физтеховская байка с этой фамилией (физтеховская -- МФТИ).

Был у нас прподаватель по Физике по фамилии Козел (достаточно известный, кстати; автор задачника по физике). И вот однажды в сессию, студент после сдачи экзамена заходит в туалет. Там его встречает приятель и спрашивает:
-- Ну как? Сдал?
-- Да ну его... Задолбал этот козёл!
А из закрытой кабинки вдруг раздается голос
-- Во-первых, не козёл, а Козел. А во-вторых, Козел -- это я.
 Geo


12-01-2009 03:02
сообщение от автора материала
>>>Сергей, еще раз хотелось бы спросить.

Перекомпилировать надо все. У меня пока нет x-64 компилятора с Delphi (даже поставить не где). Подождите до марта, будет машина.
 Seer


12-01-2009 03:02
Я не совсем понимаю, о чем идет спор. Больше похоже на разборку, честное слово.
Что-то такое всплыло из детства: "кто сильнее, слон или кит?" Ответ, как всегда, зависит от обстоятельств, то есть от условий применения.

"Склонятель", безусловно склоняет все подряд. Замечательно.
Padeg склоняет только ФИО и небольшой ряд имен нарицательных (должности и подразделения).

Что из них универсальнее? Наверное "Склонятель", если бы не одно "но".
Для имен нарицательных и фамилий правила склонения в русском языке РАЗНЫЕ. И если мне нужно в программе документооборота склонять фамилии, то зачем мне универсальность? Мне нужно совсем немного — ПРАВИЛЬНОЕ склонение только ФАМИЛИЙ.

С фамилией Заяц все еще не так явно. Возьмем другую фамилию — Козел (ударение на первый слог). Фамилия не такая уж и редкая, у нее польские корни, древний источник фамилии — животное козёл.
В России такая фамилия транспонировалась в Козлова, на Украине в Козлюка, в Белоруссии в Козленка, в Польше в Козела. "Склонятель" эту фамилию склоняет так же, как и название животного "козёл". И я бы не стала его использовать в программе документооборота.

Неправильно сравнивать эти два продукта. Нельзя сказать, что один лучше, чем другой. Потому что они предназначены для РАЗНЫХ целей.




12-01-2009 02:37
Сергей, еще раз хотелось бы спросить.
Чтобы использовать padeg.dll под MS SQL x64 , достаточно перекомпилировать под эту платформу лишь обёртку "xp_padeg" или сама библиотека padeg.dll тоже должна быть 64 разрядной?


12-01-2009 01:13
сообщение от автора материала
>>> Спасибо, что признали это.

  Делайте правильные выводы. Еще раз: "Универсальное склонении слов для Фамилий не есть правильно".

>>> А я ставлю перед собой такую цель.  В этом разница между мной и Вами.

  Вот и плучаете Айгуль среднего рода.

>>> Я имел в виду дискуссию на ЖЖ.  Не льстите себе, Сергей ;)

  Рад за вас. Про дискуссии ниже.

>>> Вы настаиваете на том, что склонение фамилии Заяц как Заяца – единственно правильный вариант.  Именно в этом я с Вами не согласен.  Мнение аспирантов из «справочной службы» для меня не более веско, чем мнение профессоров из следующей подборки мнений о склонении фамилии Заяц:

  Я, ваша подборка http://www.des.kubannet.ru/index.php/des/content/view/full/2722/
"Однако, если фамилия созвучна с названием животного или предмета неодушевлённого, нередко в этих случаях сохраняют фамилию в начальной форме (Заяц, Гусь, Ремень, Жук Сергею Петровичу; Волга Екатерине Романовне и т. п.) или вносят изменения с беглым гласным при склонении Гребень – Гребеню (а не Гребню) – Гребеню Леониду Кирилловичу."

  и Словарь ударений для работников радио и телевидения, Москва, изд. "Русский язык", 1984 г.

>>> Суммируя эту подборку, получаем следующий набор мнений:

  Это прекрасно. Ваши выводы перлы для баша. Два мнения "правильных", одно предпочтительное (надо полагать оно правильнее правильного) и последнее для сомневающихся.
  Ну и что после этого ваш "ожидаемый результат" и проценты?

>>> Есть, кстати, ещё и пятое мнение, которого, по моему опыту, придерживается 99.9% населения России. Это мнение: «а какая разница? Как ни напиши, заяц он и будет заяц».

  99,9(9)% населения всё равно ВСЁ!

"Зеленый фургон":
  - Цепи же ни чьи.
  - Это общественные цепи!
  - Вот я и говорю: ни чьи.

  Совета спрашивают для того что бы было кого винить после неудачи или для того что бы поступить наоборот. Жалко, не мои слова.
  Приоткрою вам правду. Существует еще мнение (и не одно) - носитель фамилии. Мнение это отметет мнения  профессоров и аспирантов.
  
>>> Так что любой «борец за истину» оказывается в меньшинстве.

  Рад, что вы это узнали, только истина от этого не меняется.

>>> Как видим, логика тут совсем не бинарная.  

  Знаю еще троичную логику, но и там результат операций "истина" или "ложь". Все остальное умозаключения.

>>> Поэтому я ... не считаю справедливым начислять баллы...

  Мы уже поняли - предпочитаете начислять проценты!

  P.S. Еще раз: для поисковых систем возьму вашу склонялку, для склонения ФИО свою, хотя бы для того, чтобы не обидеть Айгуль Александровну средним родом.
 Seer


11-01-2009 23:36
>> "Склонятель" универсальнее "Padeg.dll", такое возможно

Спасибо, что признали это.

>> потому как мы не ставили себе цели склонять все подряд.

А я ставлю перед собой такую цель.  В этом разница между мной и Вами.

>>> >>> Тем не менее, дискуссия получилась весьма продуктивной – удалось прояснить ...

>>>  Я рад, что наши скромные знания помогли расширить Ваш кругозор. :-)

Я имел в виду дискуссию на ЖЖ.  Не льстите себе, Сергей ;)



Про заек.

Вы настаиваете на том, что склонение фамилии Заяц как Заяца – единственно правильный вариант.  Именно в этом я с Вами не согласен.  Мнение аспирантов из «справочной службы» для меня не более веско, чем мнение профессоров из следующей подборки мнений о склонении фамилии Заяц:

http://morpher.ru/Zayats.aspx

Суммируя эту подборку, получаем следующий набор мнений:

1. Правильно – Зайцу.
2. Правильно – Заяцу.
3. Предпочтительнее Заяцу, чем Зайцу.
4. Фамилия не склоняется.

Есть, кстати, ещё и пятое мнение, которого, по моему опыту, придерживается 99.9% населения России.  Это мнение: «а какая разница? Как ни напиши, заяц он и будет заяц».  Так что любой «борец за истину» оказывается в меньшинстве.

Как видим, логика тут совсем не бинарная.  Поэтому я как разработчик методики тестирования алгоритмов склонения не считаю справедливым начислять баллы тому или иному алгоритму за приверженность к одному из вариантов.  Вот если бы в случае, когда на предприятии работают два Зайца и один предпочитает склонять как Заяцу, а другой предпочитает не склонять, алгоритм позволял бы указать, как именно склонять фамилию каждого из этих сотрудников, тогда я бы с чистым сердцем поставил бы этому алгоритму +15 баллов (3 варианта склонения * число косвенных падежей).  А так эти баллы не достаются никому.  Я сказал.  Как разработчик методики.  Если у Вас есть желание оспорить – разработайте собственную методику, напишите программу тестирования, составьте тесты, проведите тестирование и опубликуйте результаты.  Вот тогда и поспорим.

С уважением.



11-01-2009 15:49
Небольшая ремарка в тему.

Словарь ударений для работников радио и телевидения, Москва, изд. "Русский язык", 1984 г.

Раздел "Имена собственные", стр. 586, второй столбец, 17-я строка снизу:
"Заяц Анатолий, Заяца Анатолия"


11-01-2009 04:24
сообщение от автора материала
>>> Продолжаем разговор…
  
    Хорошо, продолжим...

>>> «предназначен для склонения всего» = универсальнее, не так ли?
>>> «более "остро заточен"» = менее универсален, не так ли?

  НЕТАК! Вы опять сделали не верные выводы.
  Где там слово "алгоритм"?  
  Заметьте "Склонятель" и "Padeg.dll", т.е. конкретные реализации каких-то алгоритмов.
  "Склонятель" универсальнее "Padeg.dll", такое возможно, потому как мы не ставили себе цели склонять все подряд.

>>> Я отлично понимаю, что некоторые носители фамилии Заяц считают обидным ...

Отлично, что понимаете...

>>> В итоге эту фамилию склоняют и так, и так.  Говорить о «правильности» того или иного варианта можно до хрипоты,

  В итоге фамилия не теряет гласную.

>>> но чтобы не ломать на пустом месте копья, я исключил эту фамилию (вместе с Киричек) из базы тестов.

Почему же на пустом, вот ответ "справочной службы русского языка" (http://www.gramota.ru):
  При склонении мужских фамилий с беглой гласной принято оставлять беглую гласную: _Иван Заяц — с Иваном Заяцем, об Иване Заяце_.
ЗАНАВЕС!
  
  Нами рассматривались такие приоритеты вариантов склонения: с начала правило со ссылкой на источник, а уж затем мнение носителя фамилии.
    
>>> Вы поддерживаете моё решение исключить эти фамилии из базы тестов?  

  Нет, не поддерживаю.
  По двум причинам.
  1. Для меня это не спорные варианты.
  2. Надо улучшать продукты, а не подгонять методику под них.
  
  Мое предложение сделать правильным "ожидаемый результат".
  
>>> Что я ещё могу для Вас сделать в отношении фамилии Заяц?

  Для меня ни чего, мне истина дороже.

>>> Ай, как нехорошо!  Выкидывать два предложения из середины абзаца и представлять склейку в виде цитаты.

  Да неужели?! Стремление избегать оверквотинга теперь так трактуется?
  Не "выкидывать", а заменять многоточием.
  Я, что удалил Ваш предыдущий пост? Там каждый желающий может всё видеть во всей красе.

>>> Тем не менее, дискуссия получилась весьма продуктивной – удалось прояснить ...

  Я рад, что наши скромные знания помогли расширить Ваш кругозор. :-)

>>> А что за анекдот? :)

  :-) Ну там еще советами за(пи-и-и).. мучают.

>>> У обеих программ заявлена функция «склонение ФИО, представленного одной строкой, с автоматическим определением рода».
>>> Именно эта функция и тестировалась.  То, что у каждой из программ есть функциональность, которой нет у другой программы, для данного тестирования не имеет значения.

  Вот только полностью наш функционал у вас задействовать не получилось.

>>> В нашем случае всё проще – жизнь покажет, чья утка лучше летает.

  Спросим у "жизни"? Спасибо, я два раза на одни грабли не наступаю. Лучше так: "Господи, дай знак чья лучше".

P.S. Все это мне напоминает настоящий спор за газ между Украиной и Россией и старую гусарскую привычку меряться не самыми длинными частями тела.
 Seer


06-01-2009 21:43
Сергей,

Продолжаем разговор…

>>>>>>мой алгоритм склонения универсальнее Вашего

>>>  Я такого не говорил. Цитата: "Методика основана на универсальном склонении слов".

Цитата (Ваша):

>>> "Склонятель" предназначен для склонения всего в этом его сила и в этом же его слабость.
>>> Padeg.dll более "остро заточен".

«предназначен для склонения всего» = универсальнее, не так ли?
«более "остро заточен"» = менее универсален, не так ли?


>>>  Я это о том, что ваша методика не различает двух зайцев (зверя и человека).

Методика здесь совершенно ни при чём.  «Склонятель» не различает нарицательное заяц и фамилию Заяц только потому, что мне (и не только мне) так удобнее склонять эту фамилию.  В остальном нарицательные от собственных «Склонятель» вполне различает – попробуйте, например, Любовь и любовь, Майя и майя (народ).  http://morpher.ru

Я отлично понимаю, что некоторые носители фамилии Заяц считают обидным склонение её как нарицательного, полагая, что это уподобляет их животному.  В итоге эту фамилию склоняют и так, и так.  Говорить о «правильности» того или иного варианта можно до хрипоты, но чтобы не ломать на пустом месте копья, я исключил эту фамилию (вместе с Киричек) из базы тестов.

Результаты тестов обновлены: http://morpher.ru/Competition

Вы поддерживаете моё решение исключить эти фамилии из базы тестов?  Если нет, предложите своё.  Что я ещё могу для Вас сделать в отношении фамилии Заяц?


>>> Так Вы и придумывали: "База составлялась мной вручную, ... что мне не совсем удалось"

Ай, как нехорошо!  Выкидывать два предложения из середины абзаца и представлять склейку в виде цитаты.  Старый, низкий трюк!  Я был о Вас лучшего мнения, Сергей ;)


>>> P.S. Меня умилило ваше стремление спросить совета у народа. Сразу вспомнился анекдот про бабу на площади. :-)

Тем не менее, дискуссия получилась весьма продуктивной – удалось прояснить ударение в некоторых фамилиях (Журавель, Шишкатенок и др.) и сформулировать общий принцип, по которому та или иная из возможных косвенных форм оказывается более частотной – «принцип выводимости именительного падежа».

А что за анекдот? :)

>>>Я пытаю донести до вас мысль, что у программ все-таки несколько различные направления: склонение ФИО и склонение вообще.

У обеих программ заявлена функция «склонение ФИО, представленного одной строкой, с автоматическим определением рода».  Именно эта функция и тестировалась.  То, что у каждой из программ есть функциональность, которой нет у другой программы, для данного тестирования не имеет значения.

Универсальность или специализированность – тема для философской дискуссии.  В нашем случае всё проще – жизнь покажет, чья утка лучше летает. :)

С уважением,
Сергей




06-01-2009 13:53
сообщение от автора материала
  Здравствуйте, Сергей!

>>>мой алгоритм склонения универсальнее Вашего

  Я такого не говорил. Цитата: "Методика основана на универсальном склонении слов".
  Я это о том, что ваша методика не различает двух зайцев (зверя и человека). Padeg.dll зверей не пытается склонять.
  Вы же не знакомы с нашим алгоритмом.

>>>Тестовая база известна и выложена на той не странице, вместе с исходным кодом программы тестирования.  Проверяйте на здоровье.

>>>Я тоже мог бы придумать тысячу отговорок,

  Так Вы и придумывали: "База составлялась мной вручную, ... что мне не совсем удалось". Только боюсь, что мы так ни до чего не договоримся.
  Проблема ударения реально существующая, просто Вы об этом наверно не знали.

>>> Всем тестируемым сервисам давалось одинаковое количество информации. Указание пола для одного сервиса и неуказание для другого поставило бы один из сервисов в более выгодное положение.

  А еще говорите, методика не зависит от алгоритма. Методика это в т.ч. и набор входных данных, а входные данные представлены как удобно Вашей склонялке.

>>> 2. "Заяц Владимир Владимирович"
>>> Да, фамилия неоднозначная, и именно таких я старался избегать при составлении базы тестов.

  По прямой ездить все мастера.

>>> у меня лично не поворачивается язык сказать «Заяца».

  Склоняем все-таки людей, а не зверей. Ниже у вас про тоже.

>>> 23 против 16 «Склонятеля».

   Да, на асфальте Феррари быстрее.

>>> С каких пор универсальность стала слабостью?  Слабость или силу алгоритма может показать только объективное тестирование.

  Думаю, со дня сотворения мира. Утка - универсальная штука, плавает, летает и даже ходит, но все это делает "не хорошо" оттого и утка.
  Я пытаю донести до вас мысль, что у программ все-таки несколько различные направления: склонение ФИО и склонение вообще.

  Совет: относитесь к склонению фамилий как к живому общению. У некоторых носителей склонение их фамилий особо мягкое место.
  Отсюда у нас не решенная проблема с ударением и файл исключений.  
  
P.S. Меня умилило ваше стремление спросить совета у народа. Сразу вспомнился анекдот про бабу на площади. :-)

  Удачи.
 Seer


06-01-2009 11:38


Добрый день, Сергей!

Спасибо за подробный ответ. Позволю себе в прокомментировать Ваши ответы.

>>> Методика тестирования основана на универсальном склонении слов, что для Фамилий не есть правильно.

Да, мой алгоритм склонения универсальнее Вашего - и что? Методика тестирования никак не зависела от алгоритмов, реализуемых сервисами склонения, она лишь сравнивала выходной результат с правильным.

>>> А откуда брался "Ожидаемый результат"?

Из базы тестов.  База составлялась мной вручную, поэтому возможны некоторые неточности.  Явных ошибок в базе я пока не вижу, см. мои комментарии далее.  Я также старался избегать неоднозначно склоняемых фамилий, что мне не совсем удалось.

>>> Поскольку неизвестна тестовая база ФИО то и проценты вызывают сильное сомнение.

Тестовая база известна и выложена на той не странице, вместе с исходным кодом программы тестирования.  Проверяйте на здоровье.

>>> В основном все ошибки нашей padeg.dll состоят в "е" или "о" после "ч". Как уже неоднократно говорилось связано это с ударением.

Я тоже мог бы придумать тысячу отговорок, почему в алгоритме склонения есть ошибки – фаза луны не та и вообще финансовый кризис.  Если Вам лень составлять словарь исключений – это проблемы Ваших пользователей.

>>> "Кассу Ахмад-Рамез Маджед" склоняется правильно (!) если использовать функции с явным указанем рода

Всем тестируемым сервисам давалось одинаковое количество информации.  Указание пола для одного сервиса и неуказание для другого поставило бы один из сервисов в более выгодное положение.

>>> 2. "Заяц Владимир Владимирович"

Да, фамилия неоднозначная, и именно таких я старался избегать при составлении базы тестов.  Извините, проглядел.  Однако, у меня лично не поворачивается язык сказать «Заяца». Обсуждение таких фамилий было здесь: http://community.livejournal.com/pishu_pravilno/3472961.html
Хорошо, этот пример исключаем из базы как неоднозначный.  Минус 5 ошибок.

>>> 3. "Киричек Александр Васильевич"

Тоже вызывает сомнения, исключаем.  Минус ещё 5 ошибок.

>>> 4. "Раудмец Иван Иванович"

Вы сами-то можете произнести «Раудмца»?  Подсказка: если перед -ЕЦ более одной согласной, то Е не выпадает: Беглец, Игрец, Жнец.  Обусловлено фонетическими законами.  Верно как для собственных, так и для нарицательных.

Итого -10 ошибок, всего 23 против 16 «Склонятеля».

>>> Позволю себе подвести итог "Склонятель" предназначен для склонения всего в этом его сила и в этом же его слабость.

Неужели? ;)  С каких пор универсальность стала слабостью?  Слабость или силу алгоритма может показать только объективное тестирование.

Мой вывод из проведённого тестирования таков: качество склонения алгоритмов «Склонятель» и Padeg.dll сравнимо на предложенном наборе тестов (ФИО).

Скоро опубликую результаты сравнения для профессий... подсказка: исправьте «Водителя трамвую» ;)

Всего хорошего.
Сергей Слепов




06-01-2009 03:49
To PGL (На Ваш ответ от 25-11-2008 01:06.
Я протестировал использование функции NominFromShort([S1, S2]) для определения именительного падежа встречающихся в тексте фамилий с сокращенными именем и отчеством. В принципе, функция работает, но не на всех фамилиях.
Есть следующие замечания:
1. "Петрову петрова". Если одна из фамилий начинается с прописной буквы, то функция возвращает пустую строку. Впрочем, возможно, так и было задумано.
2. Не у всех фамилии правильно определяется именительный падеж. Например, сочетание "Дмитрюка С.В., Дмитрюком С.В.". Результат не определяется. При разборе определилось, что в 1-ом случае получалось:
Дмитрюк = NominAsMale (Дмитрюка С.В.)
Дмитрюка = NominAsFemale (Дмитрюка С.В.)

во втором случае:
Дмитрюкий = NominAsMale (Дмитрюком С.В.)
Дмитрюком = NominAsFemale (Дмитрюком С.В.)

Как видно, во втором случае при преобразовании в им. падеж функцией NominAsMale произошла ошибка. Поэтому и ошибочный выходной результат.
Подобная ошибка, по-видимому, получается и при преобразовании фамилии Винник.


06-01-2009 02:32
сообщение от автора материала
Интересное сравнение и отличный маркетенговый ход, но не более того...

Почему:
Методика тестирования основана на универсальном склонении слов, что для Фамилий не есть правильно.
А откуда брался "Ожидаемый результат"?
Поскольку неизвестна тестовая база ФИО то и проценты вызывают сильное сомнение.

В основном все ошибки нашей padeg.dll состоят в "е" или "о" после "ч". Как уже неоднократно говорилось связано это с ударением.

Что нельзя считать за ошибки:
1. "Кассу Ахмад-Рамез Маджед" склоняется правильно (!) если использовать функции с явным указанем рода, напр. GetFioPadeg. Функция автоматического определения рода в данном случае сообщает о неспособности определить род, что и правильно для фамилий (ну нет человеческих существ в среднем роде :-) ). В таких случаях при обработки результата вызова ф-ции автоопределения рода можно принудительно указать мужской.
"Склонятель" в этом случае ведь тоже ошибается:

Кассу Рамез Маджед Оглы
Род, число:   средний род (и это для фамилий-то!!!), единственное число
кто, что? Кассу Рамез Маджед Оглы
кого, чего? Кассу Рамез Маджед Оглы
кому, чему? Кассу Рамез Маджед Оглы
кого, что? Кассу Рамез Маджед Оглы
кем, чем? Кассу Рамез Маджед Оглы
о ком, о чём? о Кассу Рамез Маджед Оглы

И что самое интересное:
Кассу Айгуль Маджед Кызы
Род, число:   мужской род, единственное число
кто, что? Кассу Айгуль Маджед Кызы
кого, чего? Кассу Айгуля Маджеда Кызы
кому, чему? Кассу Айгулю Маджеду Кызы
кого, что? Кассу Айгуля Маджеда Кызы
кем, чем? Кассу Айгулем Маджедом Кызы
о ком, о чём? о Кассу Айгуле Маджеде Кызы

И на "Семенович Айгуль Александровна" "Склонятель" тоже спотыкается (на имени). Padeg.dll в этом случае точен.
Могу предположить что на "восточных" женских ФИО "Склонятель" просто завалется.

2. "Заяц Владимир Владимирович" в Padeg.dll по правилам склонения фамилий (!) склоняется правильно как и Камень, как и Кремень. С точки зрения склонения слов это конечно ошибка.

3. "Киричек Александр Васильевич" в Padeg.dll по правилам склонения фамилий (!) склоняется правильно.

4. "Раудмец Иван Иванович", в Padeg.dll по правилам склонения фамилий (!) склоняется правильно как и Радунец, как и Данилец.

Всего осталось 15 явных ошиибок из 33. Вдвое.

Позволю себе подвести итог "Склонятель" предназначен для склонения всего в этом его сила и в этом же его слабость.
Padeg.dll более "остро заточен".
С другой стороны в моей практике ну ни разу не приходилось склонять в программных пролуктах что-то неодущевленное кроме
должностей и подразделений, в этом чаще требовалось склонение числительных, но оно полностью устраивало в "сумме прописью".
С третьей стороны развитие полнотекстовых поисковых систем требует склонения всего и вся.
Вот для поисковой системе я бы взял "Склонятель".
 Seer


05-01-2009 21:30
Добрый день!

Думаю, пользователям и авторам данной библиотеки будет интересно её сравнение с другими подобными разработками:

http://morpher.ru/Competition/

Библиотека показала себя очень хорошо.


22-12-2008 06:56
А кто-нибудь пробовал к Python-у библиотечку прикрутить? Что-то никак не осилю, функции GetSex, GetPadegID работают нормально, остальные никак... Access violation... Если кто делал, поделитесь примером, будьте добры!


16-12-2008 07:21
Присоединяюсь к пожеланию Андрея от 09-12-2008 04:50... Очень нужно обертку для SQL в х64. Будем надеяться, что это возможно. В любом случае, огромное спасибо за работу. Смог оценить библиотеку на SQL2000 - потрясающе.


09-12-2008 04:50
Добрый день! Вопрос к разработчикам.
А нельзя выложить скомпилированную библиотеку для её использования в MS SQL 2005 x64 ? В 32-х разрядном варианте она подключается, но к сожалению не работает.


07-12-2008 14:20
На самом деле очень жаль что столь сильная и полезная утилита не поддерживает украинский язык. Ведь основная работа проделана, осталось просто взять украиский учебник и за пару часов подредактировать правила, ведь все очень похоже. Лично я, даже готов заплатить :)
Сообщение не подписано


25-11-2008 01:06
сообщение от автора материала
2 tar4

То, что "Документы небольшие по объему (на несколько страниц)", боюсь, мало что даст, а вот что "Фамилии по тексту, могут встречаются несколько раз и в различных склонениях." уже интересно.

Попробуйте проверить такой код.


function NominAsMale(F: String): String;
const
  IOMale : array[1..6] of String = (
    'Иван Иванович',   'Ивана Ивановича',   'Ивану Ивановичу',
    'Ивана Ивановича', 'Иваном Ивановичем', 'Иване Ивановиче');
var
  S1, S2, S3, S4 : String;
  i, j           : Integer;
begin
  Result := '';
  for i:=1 to 6 do begin
    S1 := F + ' ' + IOMale[i];
    S2 := GetNominative(S1);
    for j:=1 to 6 do begin
      S3 := GetFIOFromStr(S2,'м',j);
      if (S1 = S3) then begin
        S4 := ExtractWord(1, S2, [' ']);
        if Pos(S4 + ' ', Result) = 0 then Result := S4 + ' ' + Result;
      end;
    end;
  end;
  Result := ExtractWord(1, Result, [' ']);
end;

function NominAsFemale(F: String): String;
const
  IOFemale : array[1..6] of String = (
    'Ивана Ивановна', 'Иваны Ивановны',   'Иване Ивановне',
    'Ивану Ивановну', 'Иваной Ивановной', 'Иване Ивановне');
var
  S1, S2, S3, S4 : String;
  i, j           : Integer;
begin
  Result := '';
  for i:=1 to 6 do begin
    S1 := F + ' ' + IOFemale[i];
    S2 := GetNominative(S1);
    for j:=1 to 6 do begin
      S3 := GetFIOFromStr(S2,'ж',j);
      if (S1 = S3) then begin
        S4 := ExtractWord(1, S2, [' ']);
        if Pos(S4 + ' ', Result) = 0 then Result := S4 + ' ' + Result;
      end;
    end;
  end;
  Result := ExtractWord(1, Result, [' ']);
end;

function NominFromShort(F: array of String): String;
var
  i     : Integer;
  Match : Boolean;
begin
  Result := '';
  Match := True;
  for i:=0 to High(F)-1 do
    if NominAsMale(F[i]) <> NominAsMale(F[i+1]) then Match := False;
  if Match then begin
    Result := NominAsMale(F[0]);
    Exit;
  end;

  Match := True;
  for i:=0 to High(F)-1 do
    if NominAsFemale(F[i]) <> NominAsFemale(F[i+1]) then Match := False;
  if Match then Result := NominAsFemale(F[0])
           else Result := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
var S1, S2 : String;
begin
  S1 := ExtractWord(1, Edit1.Text, [' ']);
  S2 := ExtractWord(2, Edit1.Text, [' ']);

  Edit2.Text := NominFromShort([S1, S2]);
end;



Сильно не тестировал, но если в Edit1 имеются две фамилии в разных падежах, то, вроде, восстанавливает. Подчеркиваю, именно фамилии, инициалы надо обрезать. Возможно здесь потребуется доработка, но в качестве "блованки", думаю, подойдет. Буду признателен, если сообщите результат.
 PGL


20-11-2008 23:48
Обсуждение функции GetNominativePadeg при использовании "короткого имени" (фамилия и сокращенные имя и отчество, типа Сидоров С.А.).
Функция корректно работает на полном имени (фамилия, имя, отчество), но в случае использования "короткого имени",  именительный падеж фамилии не восстанавливает. Впрочем, это и понятно. Отчества нет и определить род фамилии не представляется возможным. Пробовал восстановить именительный падеж через функцию GetFIOPadeg; при этом указывал и род фамилии и падеж, но без результата.
В в задаче, которую я решаю в данный момент, в неструктурированном тексте выделение фамилий и восстановление именительного падежа. Вот только ФИО, в основном, представлены в "коротком варианте". Но есть и отличительные моменты:
1. Документы небольшие по объему (на несколько страниц)
2. Фамилии по тексту, могут встречаются несколько раз и в различных склонениях.
Можно ли как-то использовать эти обстоятельства, чтобы все же использовать функции библиотеки для корректного восстановления именительного падежа "короткого имени"?
Например, анализ склонения нескольких вариантов написания одной и той же фамилии?
Или выделение "зависимого" от фамилии слова (или слов) и определение рода с последующим восстановлением именительного падежа "короткого имени"?


20-11-2008 00:54
Это было первое что я сделал. Даже StrAlloc заменил на AnsiStrAlloc.
все равно кракозябры

var
  DllHandle : HMODULE;
  GetPadeg  : function(pFIO: PAnsiChar; nPadeg: LongInt; pResult: PAnsiChar;
                       var nLen: LongInt): Integer; stdcall;

procedure TfTRBase.PrintForDir;
var
  pResult : PAnsiChar;
  nLen, i : Integer;
begin
   nLen := Length(form1.BreakFilial) + 10;
        pResult := AnsiStrAlloc(nLen);


      i := GetPadeg(PAnsiChar(form1.BreakFilial),4,pResult, nLen);

   if form1.BreakFilType ='Ф' then
     filstr:= 'Директор ' + StrPas(pResult) +' филиала '
  
выдает
"Директор @ > = = 8 f : 8 9 филиала "


19-11-2008 10:53
Народ, не подскажете как использовать функцию в Delphi 2009??

Вместо PChar везде писать PAnsiChar, вместо string - AnsiString.


19-11-2008 10:50
Народ, не подскажете как использовать функцию в Delphi 2009??

var
  pResult : PChar;
  nLen, i : Integer;
begin
   nLen := Length(form1.BreakFilial) + 10;
        pResult := StrAlloc(nLen);

      i := GetPadeg(PChar(form1.BreakFilial),4,pResult, nLen);
  
     filstr:= 'Руководитель ' + StrPas(pResult);

раньше работала на ура.а теперь с их опддержкой юникода выдает кракозябры (((..


02-09-2008 05:35
var
  pAppointment: PChar;
  nLen: LongInt;
  Appointment, Office : string;
begin
  nLen := 250;
  GetMem(pAppointment, nLen);
  Appointment := 'редактор литературный';
  Office := 'редакция фотоинформации';
  GetFullAppointmentPadeg(PChar(Appointment),PChar(Office),2,pAppointment,nLen);
  MessageDlg(pAppointment,mtInformation, [mbOk], 0);
end;

На выходе получаем 'редактора литературный редакции фотоинформации'

P.S. Спасибо что Вы есть. Чудесная библиотека.


02-09-2008 03:41
сообщение от автора материала
2 Алексей.

Да, как оказалось, есть такая проблема. Ее причина, в принципе, понятна. Попробуем решить.

Кстати в GetFullAppointmentPadeg даже склонение "редактор литературный" происходит неверно.
А вот здесь поподробнее, плз. Пример вызова со значениями параметров, если не затруднит.
 PGL


02-09-2008 02:19
При склонении должности "редактор литературный" всё нормально, но при склонении "редактор литературный 2 категории" склонение происходит не верно(получается, к примеру, "редактору литературный 2 категории"). Это как-то лечится? Кстати в GetFullAppointmentPadeg даже склонение "редактор литературный" происходит неверно.


28-08-2008 13:51
Порт для java есть, был сделан примерно год назад. Правда, не все функции, а только склонение  ФИО и должностей - остальное не нужно было


14-08-2008 02:53
Отличная библиотека! Спасибо авторам.
Есть ли планы по портированию на другие языки? Очень интересует реализация на Java, чтобы можно было использовать ее в сервеном приложении, как на Windows так и на UNIX серверах. Готов обсудить оплату за Java -версию.


28-07-2008 06:02
Прежде чем заявлять претензии разработчикам Да я, собственно, претензий не предъявлял, да и с чего бы это? Тем более, что задачу решил сам.

Не помню никого с ником while Я его недавно зарегистрировал.

А запрос я направлял на ящик, вот только кому, Вам или Вашему коллеге - не помню, если не обоим (письмо не сохранилось, к сожалению). Было это в марте-апреле сего года. Отправитель Петренко Андрей (while@inbox.ru или totals@inbox.ru) с предложением локализировать библиотеку... Но ответа... Кстати, предложение остается в силе.


27-07-2008 22:43
сообщение от автора материала
Насчет украинского - как-то отправлял письмо разработчикам с готовность локализировать, но ответа не получил... Там какой-то случай с претензией к украинскому "коллеге" были, может поэтому?  

Прежде чем заявлять претензии разработчикам вероятно вежливам было бы представиться. Не помню никого с ником while. На счет "какого-то случая" может быть Вы про это:

К сожалению, знающего украинский среди нас не было, но кто-то (не помню)собирался взяться, но воз и ныне там.

  См. мой пост от 07-04-2003 12:31.
 Seer


26-07-2008 04:02
Вариант склонения по падежам ФИО и названий профессий для украинского языка - http://totals.co.ua/samples/case.rar. Основные варианты склонений присутствуют. Для "складних випадків відмінювань" можно дописать правила.


25-07-2008 16:02
Насчет украинского - как-то отправлял письмо разработчикам с готовность локализировать, но ответа не получил... Там какой-то случай с претензией к украинскому "коллеге" были, может поэтому?


13-06-2008 13:51
а через какую прогу это все открывать?


03-06-2008 02:28
Добрый день.
Библиотечка крайне любопытная, но есть один неприятный момент. А именно хранение некоторых настроек в реестре. Все бы ничего, однако реестр частенько бывает закрыт. Вот бы подумать, как иначе получать настройки. Может из ini (xml) файла, который должен лежать там же откуда запускается exe файл, который использует библиотеку, или возможно добавить специальные функции настройки, после вызова которых, библиотека больше не будет обращаться к реестру.
Как вы на это смотрите?
Большое спасибо.


20-02-2008 08:21
сообщение от автора материала
Спасибо, Kiros, за ваше сообщение. Обертку нам прислал один пользователь библиотеки, а поскольку с шарпом, по-крайней мере мне, не доводилось работать, то она и не проверялась. Если вы пришлете мне исправленный файл, то я постораюсь в ближайшее время обновить архив на сайте.

Еще раз спасибо.
 PGL


19-02-2008 10:28
В дополнение к предыдущему посту - стало:

        [StructLayout(LayoutKind.Sequential)]
        private struct FIOParts
        {
            public IntPtr pSurname;
            public IntPtr pName;
            public IntPtr pPatronimic;
            public Int32 lenSurname;
            public Int32 lenName;
            public Int32 lenPatronimic;

            public FIOParts(int maxResultStringBufSize)
            {
                pSurname = Marshal.AllocHGlobal(maxResultStringBufSize);
                pName = Marshal.AllocHGlobal(maxResultStringBufSize);
                pPatronimic = Marshal.AllocHGlobal(maxResultStringBufSize);

                lenSurname = lenName = lenPatronimic = maxResultStringBufSize;
            }


            public void Free()
            {
                Marshal.FreeHGlobal(pSurname);
                Marshal.FreeHGlobal(pPatronimic);
                Marshal.FreeHGlobal(pName);
            }

        }



19-02-2008 10:19
В обертке для шарпа неправильно описана структура.
Было:

[StructLayout(LayoutKind.Sequential)]
        private struct FIOParts
        {
            public Int32 lenName;
            public Int32 lenPatronimic;
            public Int32 lenSurname;
            public IntPtr pName;
            public IntPtr pPatronimic;
            public IntPtr pSurname;


            public FIOParts(int maxResultStringBufSize)
            {
                pSurname = Marshal.AllocHGlobal(maxResultStringBufSize);
                pName = Marshal.AllocHGlobal(maxResultStringBufSize);
                pPatronimic = Marshal.AllocHGlobal(maxResultStringBufSize);

                lenSurname = lenName = lenPatronimic = maxResultStringBufSize;
            }


            public void Free()
            {
                Marshal.FreeHGlobal(pPatronimic);
                Marshal.FreeHGlobal(pName);
                Marshal.FreeHGlobal(pSurname);
            }

        }


Стало:

[StructLayout(LayoutKind.Sequential)]
        private struct FIOParts
        {
            public IntPtr pName;
            public IntPtr pPatronimic;
            public IntPtr pSurname;
            public Int32 lenName;
            public Int32 lenPatronimic;
            public Int32 lenSurname;

            public FIOParts(int maxResultStringBufSize)
            {
                pSurname = Marshal.AllocHGlobal(maxResultStringBufSize);
                pName = Marshal.AllocHGlobal(maxResultStringBufSize);
                pPatronimic = Marshal.AllocHGlobal(maxResultStringBufSize);

                lenSurname = lenName = lenPatronimic = maxResultStringBufSize;
            }


            public void Free()
            {
                Marshal.FreeHGlobal(pPatronimic);
                Marshal.FreeHGlobal(pName);
                Marshal.FreeHGlobal(pSurname);
            }

        }



27-12-2007 10:30
В процессе работы (все сводилось к вызову GetOfficeDeclension) с оберткой на С-шарпе были обнаружены проблема выделения памяти.
Выяснилось это очень не сразу, и приводило к чудесным багам, вроде эксепшена деления на 0, аж в сторонней программе построения отчетов.
непременно напишу когда выясню больше подробностей об этой проблеме.

--------
Сообщение = Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Стек :
   at FSLib.Declension.Declension1251.decGetOfficePadeg(IntPtr office, Int32 padeg, IntPtr result, Int32& resultLength)
   at FSLib.Declension.Declension1251.GetOfficeDeclension(String office, DeclensionCase declensionCase) in Declension1251.cs:line 348


24-12-2007 08:33
Здраствуйте,

есть вопросы по лицензии, проясните ситуацию пожалуйста.

1. если я, разработчик, использую библиотеку в коммерческой программе, должен ли я покупать "Лицензию для коммерческого использования Программы" для каждого пользователя моей системы? Или только одну - для себя?

1.1. Для каких пользователей предназначена Корпоративная лицензия в контексте компании-разработчика программ?

2. если я покупаю исходные тексты, могу ли я свободно их менять и распространять изменения? Если нет - каких правил я должен придерживаться?

3. планируется ли внедрять другие виды лицензий и/или защиту от копирования?


24-12-2007 02:31
сообщение от автора материала
  2 SergeyKNP.

Не буду критиковать ваш способ помучить пользователя обновлениями, хотя очень хочется... :-)

Как конструктив могу предложить решение запихнуть DLL и исключения в ресурсы EXEшника (как - др. вопрос) и выдирать их оттуда при запуске.
 Seer


22-12-2007 05:35
дело в том, что EXE-шник лежит в сетевой папке...пользователь запускает его в связке с другой прогой Launcher Мой_exe

Прога Launcher переписывает (если его ещё не на локале или он изменился) Мой_exe к пользователю на локал и запускает его...в результате Мой_exe в сетевой папке освобождается для перезаписи и не нужно выгонять пользователей из запущенного Мой_exe, а так-как Мой_exe запускается из локальной папки пользователя, то и положенную DLL-ку в сетевой папке не увидит...переписывать вместе с Мой_exe ещё и padej.dll не хотелось бы...


22-12-2007 05:29
...да, буду перекомпилировать объект...пользователи и не заметят


22-12-2007 05:22
сообщение от автора материала
2 SergeyKNP:

А смысл? При необходимости добавления исключения будете перекомпилировать файл? Пользователи не поймут... Аналогично и с библиотекой.
 PGL


22-12-2007 04:53
Просьба не пинать за ламерский вопрос...

а можно ли как-нибудь поместить DLL-ку(и "Иключения") в тело исполняемого файла ? чтобы не таскать с EXE-шником Padeg.dll...


20-12-2007 07:29
Выложен новый архив pd_Sample.zip


20-12-2007 05:20
в pd_Sample.zip отсутсвует обертка для С-шарпа. Плз почините


23-10-2007 05:52
Вау! Использую из С# и ловлю кайф. Большие спасибки за полезный функционал!


12-09-2007 03:22
как насчет поддержки украинского языка?
можно ли доработать?
или хотябы выложить исходники?


08-09-2007 10:19
Большое спасибо за библиотеку
заюзал на SQL 2005м серваке, фурычит
спасли мне как минимум день


28-08-2007 01:55
Огромное спасибо разработчикам, за столь ценный труд.


27-07-2007 02:44
Отчества, содержащие "оглы" и "кызы", из маленьких букв делает большие, во многих документах это принципиально важно!
Заранее спасибо.


23-04-2007 05:51
Не могу никак подключить библиотеку Padeg.dll из Java. Использую для этого Jawin. По библиотеке с COM-объектом Jawin генерирует скелет вызова из Java, но при инициализации COM-объекта Java закрывается:
declension = new IDeclension("Padeg.Declension");
<terminated, exit value: -1073741819>C:\Program Files\Java\jdk1.5.0_08\bin\javaw.exe (23.04.2007 15:42:32)
Тоже самое происходит при простейшем вызове:
System.loadLibrary("Padeg");
По библиотеке без COM-объекта Jawin не может сгенерировать скелет, потому что она не содержит описание структуры библиотеки (Typelib). Нельзя ли в этой версии библиотеки сделать вариант скомпилированный вместе с Typelib?


16-03-2007 07:27
сообщение от автора материала
2HOBu4OK:
Дело в том, что слова с двумя и более символами в верхнем регистре считаются аббревиатурами, которые не склоняются (ОТиЗ). А вот как разрешить?.. Первое, что приходит на ум, сделать UpperCase результату, но, подозреваю, что это не даст эффекта, т.к. входные данные уже в этом самом Case'е. А предварительное LowerCase уничтожит аббревиатуры. Весьма сожалею...
 PGL


16-03-2007 03:32
Отличная библиотека. С ФИО все замечательно работает.
Есть другая проблема. название огранизации в UpperCase не склоняет никак =( например "ОТКРЫТОЕ АКЦИАНЕРНОЕ ОБЩЕСТВО "РОГА И КОПЫТА", хотя склоняет "Открытое Акционерное Общество "РОГА И КОПЫТА"... можно ли разрешить эту проблему?


26-02-2007 03:49
Отличная библиотека! В некоторых программах давненько видел подобную штуку. Помню, радовался и удивлялся, как это программа так хитро делает? :)
А вот теперь, с помощью этой библиотеки, сам могу подобные вещи делать. :)
Авторам большое уважение за такой труд. Сам я плохо представляю, как же это было сделано?

Это, конечно, не обязательно, но, если можно, могу я увидеть исходный код (или, хотя бы его часть)?


13-12-2006 01:01
Вопрос к авторам:
А существует ли ваша библиотека в реализации для Oracle? Дело в том, что у нас Oracle установлен на UNIX и воспользоваться Dll нет возможности. Нет ли у вас пакета или набора функций для Oracle? Возможно, в зашифрованном виде, чтобы мы не смогли прочитать исходные тексты?
Если не существует, то за какую сумму вы могли бы разработать такой пакет или продать нам исходники, чтобы мы сами разработали этот пакет?


17-11-2006 08:16
сообщение от автора материала
Уф... Хоть и с большим опозданием, но обещание про должности и подразделения таки выполнео. Поверьте, не все здесь зависело от нас.
 PGL


31-08-2006 02:46
У меня вопрос. В Excel этот макрос действует только на 1 выделенную ячейку. Что нужно сделать, чтобы он работал на множество ячеек, например, на весь столбец?


17-08-2006 04:46
Ссылка исправлена


17-08-2006 02:35
Попробовал скачать длл по ссылке ссылка мертвая.. Вышлите ее кто-нить на мыло... Уж очень нада..
Заранее спасиба..


17-08-2005 07:24
Как бы еще из библиотеки экспортировать функцию, которая бы возвращала пол:
пол("Иванов Иван Иванович")=м
пол("Ольгина Ольга Олеговна")=ж
Ведь, наверное, внутри эта процедура есть?

Тогда документы выглядели бы намного красивее - можно было бы избавиться от двойных окончаний в документах ("имеющий(ая) двоих детей")


29-05-2005 05:55
все хвалят, а у меня запустить не получается :( в ворде подставляет вместо выделенного текста квадратики, а в экселе стирает выделенную ячейку, ошибки нигде никакие не выдает... в чем может быть причина?


29-03-2005 05:46
в 90-мохнатом году пытался написать подобную вещь во время проекта по автоматизации ЗАГС.
тоже сначала изучал русский язык, смотрел всякие сторонние разработки и т.п.
в итоге в какой-то момент забил и сделал элементарнейшую самообучающуюся систему, которую можно даже в сиквел загнать в виде функции.
составной ключ для поиска = окончание слова, словоформа (ФИО, существительное, дата), склонение/падеж и род.
чем длиннее совпадение окончания, тем выше приоритет (напр. "ова" забивает "ва").
в итоге эта система прекрасно склоняет кроме ФИО еще и всевозможные числительные ("отбывает наказание сроком два года шесть месяцев", "второй ребенок в тройне") и всякие существительные/прилагательные типа национальности или гражданства (тут народ про должности все спрашивает).
статистика была набрана всего за 2 недели (точнее 14 человеконедель), после чего модуль практически перестал дообучаться и допускать ошибки.
говорят, что система все еще работает :)


12-03-2005 08:57
Люди, так как же эту штуку подключить к программе?
Пробую так:
    hDll:=LoadLibrary(PAnsiChar(ExtractFilePath(Application.ExeName)+'Padeg.dll'));
    @GetFIOPadegFSAS:=GetProcAddress(hDll, 'GetFIOPadegFSAS');

На первой строке сразу вылетает ошибка:
Filed to get data for 'DeclMode'

Может я чего не так делаю?


11-01-2005 07:02
Спасибо за библиотеку :) ща пойду пробовать...

Замечание: а нельзя ли добавить инициализирующую функу, дабы не связываться с реестром?

Есть ли в планах поставлять библиотеку с сорцами?
Всего наилучшего.


06-08-2004 07:44
У меня при использовании вашей библиотеки 1С выдает ошибку
Ошибка при создании объекта из компоненты Путь\Padeg.dll (отсутствует CLSID)


27-04-2004 18:15
возможно ли использование этого dll в Builder 6,0 ?и как?


27-04-2004 16:12
Скажите пожалуйста ,а для Builder 6.0 эту dll можно использовать?и как?


26-04-2004 21:30
А возможно ли использовать данную библиотеку в Builder 6.0.Если да,то как?(очень надо ,с нетепением жду ответа)


19-02-2004 10:44
Привет создателям этой библиотеки, а также всем участникам форума!

Есть такое предложение:
- дописать склонение должностей (от 1-го до 10-ти слов);
- склонение названий объектов (от 1 до 10 слов);
- возвращать определенный автоматически род для ФИО.

Это комерческое предложение. Чем быстрее будет готово, тем больше я в этом буду заинтересован.

Свой ответ писать мне на ящик: aleksey80@rambler.ru

PS: обязательно совместимо с VB, VBA


13-02-2004 13:29
А ну и еще. Есть ли возможность добавить функцию которая бы выдавала номер падежа по строке а так же символ пола по строке. Было бы очень полезно...


13-02-2004 13:27
Здравствуйте разработчики библиотеки Padeg.DLL.

Я программирую на Visual VoxPRO и у меня есть несколько предложений/пожеланий

1) Я сделал модуль (назовем так) для использования этой библиотеки в VFP. Могу выслать и Вы если захотите включите его в проект
2) При тестировании возникли вопросы - Использование функций возвращающих ShortString обрабатывается не верно - автоматически не определяется падеж.
3) Использование функции GetNominative вызывает ошибку процесса - которая приводит к "Умиранию" вызвавшего процесса...

Если откликнитесь пишите пожалуйста на мыло. Я здесь не часто появляюсь...


06-10-2003 15:02
А можно ли эту библиотеку прилепить как внешнюю процедуру к MS SQL 2000? очень надо, я пол дня ковырялся разбирался как и что но ничего не получилось
Уважаемые разработчике если знаете помогите...
Буду очень признателен...


04-06-2003 10:51
Спасибо. Классная библиотека. Правда не проверял еще.


07-04-2003 12:31
> Разработку украинизированного программного обеспечения
> пускай оплачивают наши украинские националисты, понятно?

    Не стоит обижаться. Ворфоломей еще из детских штанишек не вырос? Или наоборот настолько отрос...

  
   К сожалению, знающего украинский среди нас не было, но кто-то (не помню)собирался взяться, но воз и ныне там.


05-04-2003 17:25
Разработку украинизированного программного обеспечения пускай оплачивают наши украинские националисты, понятно? А то нахаляву навязывать всем язык они молодцы, а как оплатить - так денег нету?


10-12-2002 15:31
Большое спасибо разработчикам !!!
Получилась очень замечательная вещь.
Только хотелось бы дождаться еще появление возможностей склонения должностей и подразделений.


25-11-2002 15:30
Нужная библиотека, только вот еще если бы добавили поддержку украинского языка (т.е. укр. правил) или исходники выложили :)))


04-10-2002 00:09
сообщение от автора материала
Скоро будет. И не только должностей, но и подразделений.
 PGL


03-10-2002 07:09
А действительно неплохо было бы сделать склонение должностей...
Может кто поделится идеями на этот счет???


15-09-2002 15:46
Спасибо авторам! Очень пригодилось!
Проверял на 865-ти ФИО, ошибки только 2, но однотипные, так что можно считать за одну.
А именно:
такое имя как Альфия (с ударением на последний слог) склоняется примерно так же, как слово Мафия (где ударение на первый).
Но, я думаю, Альфия за это не обидится.
Еще раз спасибо!


27-08-2002 22:49
я экспортировал одну функцию, основную как я понял. после того как выполняется склонение в падеж, он пишет его как надо, а потом выскакивает ошибка. странно...


11-04-2002 15:22
о как бы это реализовать в Delphi 6?


07-02-2002 16:49
ребята просто молодцы! Я 2 недели   что то подобное искал и тлько сейчас нашел.


19-10-2001 16:29
Ну одни хвалебные оды. Приятно конечно.
Но...
Хотелось бы услышать и деловые предложения.
Например:
1) Как быть со склонением должностей? Это кому-нибудь нужно?
2) Добавить ли функцию сокрашения полного ФИО до фамилии с инициалами?
3) А как с востановлением именительного падежа, с которым Гена столько копий сломал?
4) Удобно ли пользоваться функциями?
5) И прочее...

Мне отвечайте лучше в мыло.


16-10-2001 13:35
сообщение от автора материала
>Мне кажется (хотя может быть я и не прав), что должно быть >Американцем.
Прав, но... Из описания: '...это касается творительного падежа, где окончание некоторых фамилий зависит от положения ударения, определить которое алгоритмически не представляется возможным.' Фамилии на -ец, к сожалению, относятся к 'некоторым'. ПавловЕц - ПавловцОм, но ПАвловец (ПавлОвец) - ПАвловцем (ПавлОвцем). Заглавная гласная - ударная.
 PGL


05-10-2001 10:20
Отличная программа! Однако у меня есть один вопрос. Допустим, что у нас есть персона с именем Паша и фамилией Американец. Используя обсуждаемую программу получаем, что в творительном падеже будет
Пашей Американцом. Мне кажется (хотя может быть я и не прав), что должно быть Американцем.
Сообщение не подписано


01-10-2001 15:29
> Sana.

> Есть люди, которые утверждают, что для мужчин такие фамилии, как
> Черных, Омутных и т.п. склоняются а для женщин нет...
И эти люди неправы, а эти фамилии не склоняются ни у мужчин, ни у женщин.

> А вот фамилия Чабан не склоняется, а библиотека её склоняет.
Если склоняет у мужчин, то правильно делает. Фамилия Чабан не  склоняется только у женщин.

> Одним словом: надо подкрепить проект соответсвующей теорией.
Похоже, что он уже ею подкреплен.


28-09-2001 06:51
Классноая вещь, мне очень понравилась. НО:
У татар иногда не бывает 'Отчества'. Т.е. полное имя состоит из двух слов. Как быть в этом случае?


27-09-2001 16:41
Мне нравится.
А простые слова она склонять не может ?
Сообщение не подписано


11-09-2001 09:50
Однако... Есть люди, котрые утверждают, что для мужчин такие фамилии, как Черных, Омутных и т.п. склоняются а для женщин нет...
А вот фамилия Чабан не склоняется, а библиотека её склоняет. Одним словом: надо подкрепить проект соответсвующей теорией.


07-07-2001 12:47
Замечательно! Теперь будем тестировать на реальной базе, токо наше приложение на Delphi 1.0 :-). Давно хотелось такую штуку, но все не было и не было, а теперь ЕСТЬ, УРА! СПАСИБО!


04-07-2001 22:29
Нужная вещь! Очень мне пригодится. Большое Вам спасибо! :-)


04-06-2001 16:27
Замечательная библиотека. Давно сам собирался что-то в этом роде написать, только руки не доходили.
В стиль изложения не вникал, некогда, но, на всякий случай, поставил самую высокую оценку :)


22-05-2001 17:38
Кому надо, могу послать в текстах модуль с подобными же функциями.
Всего хорошего.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
"Мы с тобой одной крови — ты и я!". Чьи это заветные слова?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования