danielmj
30-11-2014, 11:52:36
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
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.
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
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.