Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con un Memo (https://www.clubdelphi.com/foros/showthread.php?t=8874)

aragorneuf 04-04-2004 19:46:41

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.

kinobi 04-04-2004 20:21:21

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

aragorneuf 04-04-2004 23:52:36

¿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.

__cadetill 05-04-2004 00:32:00

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.......

aragorneuf 05-04-2004 00:51:33

Muchas gracias, todo el dia de hoy me la he pasado haciendo programas pero como soy un super principiante cuando me trabo me trabo.

aragorneuf 05-04-2004 01:14:28

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 :)

Ruben_Cu 05-04-2004 02:45:47

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

roman 05-04-2004 08:53:00

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

aragorneuf 05-04-2004 12:13:53

Ok, dejen lo checo y les digo si si me pillo.


La franja horaria es GMT +2. Ahora son las 18:24:42.

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