Inicio › Foros › Lenguajes de programación, desarrollo, código fuente › Delphi › Procedimiento que obtenga iniciales de un nombre y apellidos Delphi [RESUELTO]
Etiquetado: apellidos, borland delphi, delphi, delphi 6, delphi 7, desarrollo, get, iniciales, nombre, nombre y apellidos, obtener, obtener iniciales, pascal, programación, programar, resuelto, solución, solucionado, solved, source code, truco
- Este debate tiene 1 respuesta, 2 mensajes y ha sido actualizado por última vez el hace 1 año, 2 meses por alonsojpd.
-
AutorEntradas
-
11/17/2023 a las 14:15 #49968VariosModerador
Hola, estoy usando Delphi 6 y Delphi 7 en desarrollo de una aplicación «antigua» y necesito sacar las iniciales de un nombre y apellidos. Por ejemplo, si tengo:
Pepito López Martínez
Obtener: «plm»
Y tengo separados el nombre, y cada apellido en una variable.
Pero el problema me surge con los nombres compuestos, los que llevan dos nombres o incluso dos nombres y artículos, como:
Juan de la Rosa Rodríguez Díaz
En este caso, tendría que devolver: jrrd, las iniciales sin tener en cuenta «de la».
¿Cómo se puede hacer esto en Delphi 6 o Delphi 7 (en Pascal)?
11/17/2023 a las 14:18 #49969alonsojpdSuperadministradorPuedes usar la siguiente función, a la que le pasamos el nombre y los apellidos separados y devuelve las iniciales. Aunque no obtuviéramos el nombre y los apellidos separados, el procedimiento sería el mismo, dado que separará cada palabra por los espacios que contenga, independientemente de si es nombre o apellidos:
Delphi/Pascal123456789101112131415161718192021222324252627282930Function obtenerIniciales(nombre : string; apellido1 : string; apellido2 : string) : string;vari : integer;iniciales, inicialesNombre, inicialesApellido1, inicialesApellido2 : string;nombres : TStringList;beginnombres := TStringList.Create;nombres.Delimiter := ' ';nombres.DelimitedText := nombre;//Recorremos los nombres obtenidos y desechamos los artículos que no sean nombresinicialesNombre := '';for i := 0 to nombres.Count - 1 dobegin//Suponemos que no hay nombres con dos o un carácterif (Length(nombres.Strings[i]) > 2) thenif ((AnsiLowerCase (nombres.Strings[i]) <> 'del') and(AnsiLowerCase (nombres.Strings[i]) <> 'los') and(AnsiLowerCase (nombres.Strings[i]) <> 'las')) theninicialesNombre := inicialesNombre + copy (nombres.Strings[i], 0, 1);end;//Como tenemos separados los apellidos, cogemos el primer carácter de cada uno de ellosif (apellido1 <> '') theninicialesApellido1 := copy(apellido1, 0, 1);if (apellido2 <> '') theninicialesApellido2 := copy(apellido2, 0, 1);iniciales := inicialesNombre + inicialesApellido1 + inicialesApellido2;//Quitamos las posibles tildes/acentosiniciales := quitarTildes (iniciales);result := iniciales;end; -
AutorEntradas
- Debes estar registrado para responder a este debate.