Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   duda tonta con bucle For (https://www.clubdelphi.com/foros/showthread.php?t=87219)

danielmj 30-11-2014 11:52:36

duda tonta con bucle For
 
Hola,

Estoy haciendo un generador de claves por eso de tener mil cuentas repartidas por internet y a veces no recordar algunas de ellas, en fin la duda es una tonteria (supongo), pero me trae frito, la cuestion es que el for no hace lo que quiero y no sé donde está el fallo, o dicho de otro modo, no sé como hacer para salir del bucle.

El código
Código Delphi [-]
procedure TForm1.findClick(Sender: TObject);
var
  i: integer;

begin
  for i:= 0 to clvs.Items.Count -1 do
    if (clvs.Items.Item[i].SubItems.Strings[2] = edit3.Text) and
       (length(clvs.Items.Item[i].SubItems.Strings[1]) > 32) then
       begin
          ShowMessage('La contraseña es demasiado larga para mostrarla aquí,'+#13#10+
                      'pero se le mostrará temporalmente en el campo texto'+#13#10+
                      '"Buscar contraseña".');
          edit3.Text:= clvs.Items.Item[i].SubItems.Strings[1];
       end
    else
    begin
      ShowMessage('La contraseña es: '+ clvs.Items.Item[i].SubItems.Strings[1]);
      break;
    end;
end;

Lo que intento con esas lineas es que busque la contraseña según el contenido de un edit, por ejemplo si en el edit pongo "google1" me debería devolver la contraseña de este "google1" Pero lo que hace es mostrarme una a una todas las contraseñas al ir recorriendo el listview. El uso del break es para forzarle a salir del bucle pero en ese caso solo me muestra el primer elemento del listview o lo que es lo mismo, el elemento del listview que le da valor 0 a la i sea o no igual al criterio de busqueda del edit.
¿Cómo hago para que el for acabe una vez encuentre el contenido del edit (en este caso edit3)?

Un saludo.

Casimiro Notevi 30-11-2014 14:14:22

Creo recordar que exit.

danielmj 30-11-2014 14:28:06

Cita:

Empezado por Casimiro Notevi (Mensaje 485868)
Creo recordar que exit.

Tono irónico detectado... :) voy a mirar el exit. Gracias casimiro.

Casimiro Notevi 30-11-2014 14:46:54

Cita:

Empezado por danielmj (Mensaje 485869)
Tono irónico detectado... :) voy a mirar el exit. Gracias casimiro.

No, es que hace años que no uso delphi

danielmj 30-11-2014 15:47:12

Solución... cambiar el orden de los if
Código Delphi [-]
procedure TForm1.findClick(Sender: TObject);
var
  i: integer;

begin
  for i:= 0 to clvs.Items.Count -1 do
  begin
    if (clvs.Items.Item[i].SubItems.Strings[2] = edit3.Text) and
       (length(clvs.Items.Item[i].SubItems.Strings[1]) > 32) then
       begin
          ShowMessage('La contraseña es demasiado larga para mostrarla aquí,'+#13#10+
                      'se le mostrará temporalmente en el campo texto'+#13#10+
                      '"Buscar contraseña".');
          edit3.Text:= clvs.Items.Item[i].SubItems.Strings[1];
       end;

    if (clvs.Items.Item[i].SubItems.Strings[2] = edit3.Text) and
       (length(clvs.Items.Item[i].SubItems.Strings[1]) < 32) then
        begin
          ShowMessage('La contraseña es: '+ clvs.Items.Item[i].SubItems.Strings[1]);
          break;
        end;
  end;
end;

saludo.


La franja horaria es GMT +2. Ahora son las 22:47:29.

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