Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener dato de listview y moverlo a un memo, esperar 2 min, enviar y volver a cargar (https://www.clubdelphi.com/foros/showthread.php?t=88346)

wolfran_hack 22-05-2015 23:40:44

Obtener dato de listview y moverlo a un memo, esperar 2 min, enviar y volver a cargar
 
Hola a todos los miembros del foro, básicamente esta explicado mi problema en el titulo de este hilo pero les comento nuevamente:

Tengo un ListView1 que tiene cargados unos datos, vamos a decir que tenemos 3 datos:

Código:

dato1
dato2
dato3

teniendo estos datos hay que pasarlos a un memo1 de a uno!, utilice el codigo:

Código Delphi [-]
procedure TForm1.BitBtn3Click(Sender: TObject);
var
n: integer;
begin
for n:=0 to ListView1.Items.Count-1 do
  begin
       memo1.Text := ListView1.Items.Item[n].Caption;
       // rutina
  end;
end;

perfectamente el dato que estaba en el listview se movio al memo1, ahora el problema esta en que el no puedo para el bucle, teniendo 3 datos, me muestra solo el dato3 que seria el ultimo de la lista, ahora trate de utilizar un:

Código Delphi [-]
Sleep(5000);

sigue igual, probe:

Código Delphi [-]
for n:=0 to ListView1.Items.Count-1 do
  begin
       Sleep(5000);
       memo1.Text := ListView1.Items.Item[n].Caption;
  end;

Código Delphi [-]
for n:=0 to ListView1.Items.Count-1 do
  begin
       memo1.Text := ListView1.Items.Item[n].Caption;
       Sleep(5000);
  end;

mi pregunta principal es si puedo parar el bucle para tener el tiempo necesario para completar la rutina que continua?

ecfisa 23-05-2015 00:35:43

Hola wolfran_hack.

No entiendo la totalidad de tu planteo, pero en referencia a este punto:
Cita:

Empezado por wolfran_hack (Mensaje 492438)
...
, me muestra solo el dato3 que seria el ultimo de la lista, ahora trate de utilizar un:
...

Código Delphi [-]
for n:=0 to ListView1.Items.Count-1 do
  begin
       Sleep(5000);
       memo1.Text := ListView1.Items.Item[n].Caption;
  end;

El problema es que estas asignando a la propiedad Text del memo, por lo que cada nueva asignación sobreescribe a la anterior.

Si deseas pasar los captions de los N Items, tendrías que hacer:
Código Delphi [-]
var
  i: Integer;
begin
  for i := 0 to ListView1.Items.Count-1 do
    Memo1.Lines.Add(ListView1.Items[i].Caption);

Saludos :)

wolfran_hack 23-05-2015 01:44:08

En realidad lo que quiero es que se sobre escriba, básicamente en ves de usar un Edit, use un Memo por la multilinea (aunque también pude haber usado el edit.).

En el ListView se van generando textos que indican por ejemplo un historial o algo que pasa en la rutina del programa por ejemplo un error, ahora yo lo muevo a ese memo para básicamente analizarlo y si es necesario enviarlo por mail, la rutina seria:

Contador de Historial llega a tope = 150 >
Tomo la primer linea del listview y la muevo al memo >
Al tener contenido en el memo este se analiza según las palabras y se determina y hay o no que enviar un mail >
Si se envia un mail el bucle tiene que "parar" y esperar 1 o 2 o los minutos que quiera >
terminado el tiempo limpia y toma una nueva linea del listview y así con todo.
Si no se requiere sigue con otra linea del list.

Necesito ese tiempo ya que el servidor que se utiliza para enviar el mail te bloquea si se envían masivos muy rápido, por ende tengo que poder contar el tiempo de algún proceso para que no se bloquee el sistema básicamente.

wolfran_hack 23-05-2015 04:56:45

Solucionado con

http://www.clubdelphi.com/foros/show...50&postcount=5


La franja horaria es GMT +2. Ahora son las 09:59: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