Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Problemas para realizar una curp necesito algo de ayuda

Pues ya me desespere y acudo a ustedes para ver que se soluciona les pongo el codigo y despues lo que sale mal.

Cita:
var
a,c,d:string;
b,I:integer;
begin
a:=copy(edit1.Text,1,1);
b:=length(edit1.Text);
For I:= 2 to b do
begin
c:=copy(edit1.Text,I,1);
if c='A' then
begin
d:='A';
b:=I;
end;

if c='E' then
begin
d:='E';
b:=I;
end;

if c='I' then
begin
d:='I';
b:=I;
end;

if c='O' then
begin
d:='O';
b:=I;
end;

if c='U' then
begin
d:='U';
b:=I;
end;
end;
edit9.Text:=concat(a,d);
end;
Bueno lo que quiero es copiar la primer vocal del apellido paterno que es el edit1.text pero me copia la ultima vocal. si pongo ALVARADO me pone AO que seria la primera letra del apellido y la primer vocal del apellido sin contar la primer letra pero en vez de eso me pone la ultima vocal.

otras dudas.
si para cerrar el bucle FOR pongo I:=b; me sale error y me dice "Assignment to FOR-Loop variable 'I'" por eso b:=I; pero al parecer no me lo cierra y se va hasta el final y por me copia la ultima vocal.
Responder Con Cita
  #2  
Antiguo 19-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
no entiendo
quieres sacar la Primera Vocal de lo que coloques en el EDIT

ejemplo
si Colocas Alvarado debe mostrar la A ?
si colocas Colmenares debe mostrar la O ?
si colocar swchgener debe mostrar la E ?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 19-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
P.D.

cuando coloques codigo delphi utiliza el icono del partenon para poder entenderlo bien
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
no entiendo
quieres sacar la Primera Vocal de lo que coloques en el EDIT

ejemplo
si Colocas Alvarado debe mostrar la A ?
si colocas Colmenares debe mostrar la O ?
si colocar swchgener debe mostrar la E ?
si pero la primera vocal a partir de la segunda letra del apelldo pues la variable a la uso para copiar la primer letra del apelldo a:=copy(edit1.Text,1,1);
y la d la estoy usando para la primer vocal a partir de la segunda letra hasta el final.
Responder Con Cita
  #5  
Antiguo 19-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
disculpa pero sigo sin entender
podrias colocar ejemplos de como quieres que te salga?
algo asi como lo que te puse yo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #6  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Debo reconocer que no estoy menos desorientado que oscarac con la explicación...

Pero si me atengo 'literalmente' a tu pedido:
Cita:
si pero la primera vocal a partir de la segunda letra del apelldo
Debería ser:
Código Delphi [-]
function DameLaSegundaVocal(Cad: string): char;
var
  i: Integer;
begin
  i:= 2;
  while not (UpCase(Cad[i]) in ['A','E','I','O','U']) do Inc(i);
  Result:= Cad[i];
end;

Llamada de ejemplo:
Código Delphi [-]
   Edit1.Text:= 'Albeniz';
   ShowMessage(DameLaSegundaVocal(Edit1.Text)); //  letra 'e'

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 06:23:20.
Responder Con Cita
  #7  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
disculpa pero sigo sin entender
podrias colocar ejemplos de como quieres que te salga?
algo asi como lo que te puse yo
Si mira mira debo hacer que alguien escriba su apellido en el edit1.text y luego copio la primer letra eso ya lo hice con lo siguiente "a:=copy(edit1.text,1,1);

hasta ahi va bien todo ahora con lo que resta del apellido tomar la primer vocal que este. ejemplo

OSAMA - seria la A
ESHJOS - seria la O
PEDROZA - seria la E.

cuando dije a partir de la segunda letra me refiero a que la primer letra ya la copie y esa letra se descarta aunque sea vocal, y con lo que resta del nombre ejemplo de OSAMA la O a la copie tengo que tomar la primer vocal con lo que resta del apellido que seria SAMA.

Cita:
Empezado por ecfisa Ver Mensaje
Hola madrid_cr7.

Debo reconocer que no estoy menos desorientado que oscarac con la explicación...

Pero si me atengo 'literalmente' a tu pedido:

Debería ser:
Código Delphi [-]function DameLaSegundaVocal(Cad: string): char; var i: Integer; begin i:= 2; while not (UpCase(Cad[i]) in ['A','E','I','O','U']) do Inc(i); Result:= Cad[i]; end;

Necesito que sea con FOR o con While porque solo eso me permiten usar
por eso quiero ver cual es mi error en el ejemplo que puse arriba ya
tengo toda la curp hecha solo me falta eso es mi unico error



Llamada de ejemplo:
Código Delphi [-] Edit1.Text:= 'Albeniz'; ShowMessage(DameLaSegundaVocal(Edit1.Text)); // letra 'e'


Un saludo.
Responder Con Cita
  #8  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola madrid_cr7.

Debo reconocer que no estoy menos desorientado que oscarac con la explicación...

Pero si me atengo 'literalmente' a tu pedido:

Debería ser:
Código Delphi [-]function DameLaSegundaVocal(Cad: string): char; var i: Integer; begin i:= 2; while not (UpCase(Cad[i]) in ['A','E','I','O','U']) do Inc(i); Result:= Cad[i]; end;


Llamada de ejemplo:
Código Delphi [-] Edit1.Text:= 'Albeniz'; ShowMessage(DameLaSegundaVocal(Edit1.Text)); // letra 'e'


Un saludo.
Necesito que sea con FOR o con While porque solo eso me permiten usar
por eso quiero ver cual es mi error en el ejemplo que puse arriba ya
tengo toda la curp hecha solo me falta eso es mi unico error
Responder Con Cita
  #9  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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.

Cita:
Necesito que sea con FOR o con While porque solo eso me permiten usar...
Entonces, no veo el problema... Mirá con atención el código que te puse más arriba:
Código Delphi [-]
...
var
  i: Integer;
begin
  i:= 2;
  while not (UpCase(Cad[i]) in ['A','E','I','O','U']) do Inc(i);
  ...

Si te referis a que no te permiten usar una función, incorporá a tu código la porción de la función correspondiente a la extracción de la primera
vocal a partir de la segunda letra.

En tu caso basta con reemplazar Cad[i] por Edit1.Text[i] (que es donde está el apellido) y al salir del ciclo while, tendrás la vocal buscada en Edit1.Text[i] ...

Edito: Veo que la variable 'i' está declarada en tu procedimiento, función o cuerpo de programa. Por lo que supongo que deberías usar otra como contador del while.

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 06:55:54.
Responder Con Cita
  #10  
Antiguo 19-04-2011
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
Poder: 20
ElKurgan Va camino a la fama
Creo que lo que te falta es poner un break o un exit en cuanto encuentre una vocal. Tal como lo tienes, si encuentra la segunda vocal va bien, pero sigue dentro del bucle for.

Pruebalo y nos lo comentas

Saludos
Responder Con Cita
  #11  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 de nuevo madrid_cr7.

No había reparado pero este hilo estaba en el foro Internet, al igual que este otro tuyo: Necesito ayuda para un ... que también fué movido.
Los temas relacionados con programación en general tienen su lugar en el foro OPP o en Varios. Esto es a fín de que si un día tenés un
problema de internet (por ejemplo) y busques la solución en ese foro, no te encuentres viendo mensajes de como se usa el Quick Report...

Si dudás donde pueda ir tu mensaje, ponelo en el foro Varios y algún moderador se encargará de reubicarlo si así corresponde.

Un saludo y muchas gracias.
__________________
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 07:19:39.
Responder Con Cita
  #12  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
ecfisa:
agradesco mucho tu ayuda pero no logro entender, esque yo apenas soy principiante en esto, no podrias corregir el codigo que puse arriba agregando lo que tu me dices y quitando lo que no deberia ir?

Elkurgan:
el exit tengo entendido que finaliza el programa, el break jamas lo he usado, como lo usaria para que en cuanto encuentre la vocal se salga del bucle for y continue con el demas codigo?

Les agradesco mucho a los 3 por tomarse su tiempo.
Responder Con Cita
  #13  
Antiguo 19-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #14  
Antiguo 19-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
hice esto rapidamente

la idea es que despues de digitar el apellido en el edit presiono un boton y me sale el label con la primera letra y la primera vocal

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var i: Integer;
_PrimeraLetra, _PrimeraVocal, _Letra, _Linea :string;

begin
  _PrimeraLetra := '';
  _PrimeraVocal := '';
  _Linea := Edit1.Text;
  _primeraLetra := Copy(_Linea,1,1);
  For i := 2 to Length(_linea) do
  Begin
    _Letra := Copy(edit1.Text, i,1);
    if (_letra = 'A') or (_letra = 'E') or (_letra ='I') or (_Letra = 'O') or (_letra = 'U') then
       Begin
       _PrimeraVocal := _Letra;
       Break;
       End;
  End;
  Label1.Caption := _PrimeraLetra + _PrimeraVocal;
end;

fijate si te es de utilidad
__________________
Dulce Regalo que Satanas manda para mi.....

Última edición por oscarac fecha: 19-04-2011 a las 08:03:40.
Responder Con Cita
  #15  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
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[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 varialbe '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.
Muchisimas Gracias, ya quedo el programa ya me toma la primer vocal a partir de la segunda letra, gracias por todo me salvaste la vida.


Cita:
Empezado por oscarac Ver Mensaje
hice esto rapidamente

la idea es que despues de digitar el apellido en el edit presiono un boton y me sale el label con la primera letra y la primera vocal

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); Var i: Integer; _PrimeraLetra, _PrimeraVocal, _Letra, _Linea :string; begin _PrimeraLetra := ''; _PrimeraVocal := ''; _Linea := Edit1.Text; _primeraLetra := Copy(_Linea,1,1); For i := 2 to Length(_linea) do Begin _Letra := Copy(edit1.Text, i,1); if (_letra = 'A') or (_letra = 'E') or (_letra ='I') or (_Letra = 'O') or (_letra = 'U') then Begin _PrimeraVocal := _Letra; Break; End; End; Label1.Caption := _PrimeraLetra + _PrimeraVocal; end;


fijate si te es de utilidad
Gracias amigo por tu ayuda pero ya se resolvio con el metodo de ecfisa.

un saludo a los 2 y gracias
Responder Con Cita
  #16  
Antiguo 19-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ah ok..
es que como dijiste que debias hacerlo con for....
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #17  
Antiguo 19-04-2011
madrid_cr7 madrid_cr7 is offline
Registrado
NULL
 
Registrado: abr 2011
Posts: 9
Poder: 0
madrid_cr7 Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
hice esto rapidamente

la idea es que despues de digitar el apellido en el edit presiono un boton y me sale el label con la primera letra y la primera vocal

Código Delphi [-]procedure TForm1.Button1Click(Sender: TObject); Var i: Integer; _PrimeraLetra, _PrimeraVocal, _Letra, _Linea :string; begin _PrimeraLetra := ''; _PrimeraVocal := ''; _Linea := Edit1.Text; _primeraLetra := Copy(_Linea,1,1); For i := 2 to Length(_linea) do Begin _Letra := Copy(edit1.Text, i,1); if (_letra = 'A') or (_letra = 'E') or (_letra ='I') or (_Letra = 'O') or (_letra = 'U') then Begin _PrimeraVocal := _Letra; Break; End; End; Label1.Caption := _PrimeraLetra + _PrimeraVocal; end;


fijate si te es de utilidad
Bueno aqui solo para decir que al final me decidi por tu metodo, aunque ambos funcionan, el tuyo utiliza lo que he visto en cambio el de ecfisa usa cosas que no he visto y no valla a ser que no me lo acepten.

una vez mas gracias a ambos
Responder Con Cita
  #18  
Antiguo 21-08-2011
Avatar de mRoman
mRoman mRoman is offline
Miembro
 
Registrado: nov 2003
Posts: 599
Poder: 21
mRoman Va por buen camino
Cogido CURP

Hola ....

Fijate que navengando en buscar de información acerca de como calcular la CURP (en México), di con tu post el cual segun el primer mensaje posteado que dice "Problemas para realizar una curp necesito algo de ayuda", preguntas acerca de como obtener la segunda vocal.....bueno fijate que yo ando en busca de código para calcular la CURP y me preguntaba si pudieras compartir tu codigo aqui en el foro....

Te agradezco.Saludos.
__________________
Miguel Román

Afectuoso saludo desde tierras mexicanas....un aguachile?, con unas "cetaseas" bien "muertas"?, VENTE PUES !!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Necesito ayuda por favor, no entiendo algo.... MaxiDucoli OOP 1 17-05-2010 04:09:36
Componente para realizar la ayuda de la aplicacion? torete_86 Varios 4 20-05-2006 03:12:47
Ayuda para realizar documento XML muli Conexión con bases de datos 1 10-09-2005 06:36:44
Ayuda al usuario para realizar búsquedas rochi Conexión con bases de datos 19 28-04-2005 09:57:31
Ayuda Para Installshield O Algo Parecido cmena Varios 2 29-08-2004 22:29:28


La franja horaria es GMT +2. Ahora son las 08:16:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi