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 04-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
Problemas con un Memo

Quiero crear una aplicación para contarel número de letras del alfabeto inglés en un texto escrito en un memo.

Pues primero segun yo tengo que contar las lineas que escribio en el Memo para eso hago esto:

Var
H: Integer;
begin
for H := 0 to Memo1.Lines.Count-1 do
// Showmessage(Memo1.Lines[H]); Solo para ver que lineas tiene.

Pero para contar las letras necesito otro for y un case pero no se como hacerle.
Responder Con Cita
  #2  
Antiguo 04-04-2004
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Código:
Var
  H: Integer;
begin
  for H := 0 to Memo1.Lines.Count-1 do
  begin
    // Showmessage(Memo1.Lines[H]); Solo para ver que lineas tiene.
    for ... // segundo for (anidado)
    begin
      ...
      for ... // tercer for (anidado)
      begin
      ...
      end;
      ...
    end;
    ...
  end;
  ...
end;
Saludos
Responder Con Cita
  #3  
Antiguo 04-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
¿Pero cual es la propiedad/comando que me permite contar las letras en un memo?, por ejemplo en el edit yo uso la length y luego un case para contarlas.
Responder Con Cita
  #4  
Antiguo 05-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
pos aprovechado lo que comenta kinobi y la funcion length

Código:
Var
  H: Integer;
  cont: integer;
begin
  cont := 0;
  for H := 0 to Memo1.Lines.Count-1 do
  begin
    cont := cont + length(Memo1.Lines[H]);
  end;
No lo he probado pero.......
Responder Con Cita
  #5  
Antiguo 05-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
Muchas gracias, todo el dia de hoy me la he pasado haciendo programas pero como soy un super principiante cuando me trabo me trabo.
Responder Con Cita
  #6  
Antiguo 05-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
Ya lo probe pero me cuenta todas las letras y espacios, cuando lo que yo queria era que solo me contara las letras del alfabeto ingles 'A'..'B' entonces intento hacer algo como esto:

Código:
Var
H: Integer;
cont: integer;
begin
cont := 0;
for H := 0 to M_1.Lines.Count-1 do
begin
case cont of
'A'..'Z':= length(M_1.Lines[H]);
showmessage(inttostr(cont));
end;
 
end;
Pero me dice que tengo este error Incompatibles types 'Integer' and 'Char' en esta linea:
'A'..'Z':= length(M_1.Lines[H]);

Espero haberme explicado bien

Última edición por aragorneuf fecha: 05-04-2004 a las 01:16:46.
Responder Con Cita
  #7  
Antiguo 05-04-2004
Ruben_Cu Ruben_Cu is offline
No confirmado
 
Registrado: oct 2003
Ubicación: Mariel, Cuba
Posts: 271
Poder: 0
Ruben_Cu Va por buen camino
Hola aragorneuf, el error te da puesto que estas comparando caracteres alfanuméricos con un valor numérico de tipo integer que es el que te devuelve la función length, revisa en la ayuda el uso del Case porque no está permitido usarlo en estos casos y cito:
Cita:
The case statement provides a readable alternative to complex nested if conditionals. A case statement has the form

case selectorExpression of

caseList1: statement1;
...
caseListn: statementn;
end

where selectorExpression is any expression of an ordinal type (string types are invalid)...
Yo en este caso trataría de manejar antes la línea del memo eliminando los espacios en blanco y entonces aplicar la función length a la subcadena resultante y no hacerlo de forma directa como está planteado, para ello te puedes valer de las funciones 'Pos' y 'Delete'.
Saludos
Responder Con Cita
  #8  
Antiguo 05-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Además de lo que ya se ha dicho creo que podría usarse la propiedad Memo.Lines.Text para no tener que trabajar línea por línea.

// Saludos
Responder Con Cita
  #9  
Antiguo 05-04-2004
aragorneuf aragorneuf is offline
Miembro
 
Registrado: abr 2004
Ubicación: Reinos unidos de Anor y Gondor
Posts: 21
Poder: 0
aragorneuf Va por buen camino
Ok, dejen lo checo y les digo si si me pillo.
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


La franja horaria es GMT +2. Ahora son las 20:35:13.


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