Ver Mensaje Individual
  #12  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola madrid_cr7.


Si en Edit9.Text tiene que quedar la primera vocal a partir del segundo caracter del apellido, tu código reformado quedaría así:
Código Delphi [-]
var
  i:integer;
begin
  i:= 2;
  while not (UpCase(Edit1.Text[i]) in ['A','E','I','O','U']) do Inc(i);
  Edit9.Text:= Edit1.Text[1]+Edit1.Text[i];
end;
Te explico que es lo que hace: La primera letra hay que ignorarla sea vocal o consonante y a partir de la segunda recorremos la cadena incrementando la variable 'i' hasta que encuentra una vocal. Alli termina el ciclo while y por supuesto el valor 'i' tiene la posición de la
primera vocal encontrada a partir del segundo caracter. Esa posición es usada como subindice de Edit1.Text[i] para obtener el caracter
buscado.
La función UpCase convierte a mayúsculas lo que estamos comparando, por que no es lo mismo 'A' que 'a', sin ella tendría que haber echo:
Código Delphi [-]
  while not (Edit1.Text[i] in ['A','E','I','O','U','a','e','i','o','u']) do
Al finalizar el ciclo while, se asigna a Edit9.Text la vocal encontrada en Edit1.Text[i].

Si hay algo que no te quedó en claro decimelo y lo vamos a ir tratando de aclarar.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-04-2011 a las 08:55:29.
Responder Con Cita