/// <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); } }
private static extern Int32 decGetFIOParts(IntPtr surnameNamePatronimic, ref FIOParts result);