예제 #1
0
        /// <summary>
        /// Позволяет выделить из заданного ФИО его части. Корректно обрабатываются ФИО, содержащие
        /// признак рода (Оглы, Кызы) записанный через дефис или пробел
        /// </summary>
        /// <param name="surnameNamePatronimic">ФИО</param>
        /// <param name="surname">Фамилия</param>
        /// <param name="name">Имя</param>
        /// <param name="patronimic">Отчество</param>
        public static void GetSNM(string surnameNamePatronimic,
                                  out string surname, out string name, out string patronimic)
        {
            if (surnameNamePatronimic == null)
            {
                throw new ArgumentNullException("surnameNamePatronimic");
            }

            surname = name = patronimic = null;

            FIOParts parts = new FIOParts();
            IntPtr   ptr   = IntPtr.Zero;

            try
            {
                parts = new FIOParts(m_MaxResultStringBufSize);
                ptr   = StringToIntPtr(surnameNamePatronimic);

                int err = decGetFIOParts(ptr, ref parts);
                if (err < 0)
                {
                    err--;
                }
                ThrowException(err);

                surname    = IntPtrToString(parts.pSurname, parts.lenSurname);
                name       = IntPtrToString(parts.pName, parts.lenName);
                patronimic = IntPtrToString(parts.pPatronimic, parts.lenPatronimic);
            }
            finally
            {
                parts.Free();
                Marshal.FreeHGlobal(ptr);
            }
        }
예제 #2
0
 private static extern Int32 decGetFIOParts(IntPtr surnameNamePatronimic, ref FIOParts result);