Fórum Pausa em TMemo #353259
07/02/2008
0
Olá teria como me ajudar.. tipo em um memo tem uma lista de nomes de exemplo teria 1000 e quando chegar na linha 20 ele pausaria 1 minuto e depois continuaria nas linhas seguintes depois na 40 pausa novamente 1 minuto e assim em diante..seria possivel estar me ajudando, fiz pesquisar no Google e na comunidade não encontro uma solução para este problema.. Fico grato desde já pela ajuda da comunidade...
Chackal
Curtir tópico
+ 0Posts
07/02/2008
Edilcimar
Gostei + 0
07/02/2008
Chackal
Gostei + 0
07/02/2008
Onjahyr
Gostei + 0
08/02/2008
Chackal
Gostei + 0
08/02/2008
Onjahyr
Acho que entendi o que vc tá querendo fazer, só que (se for o que estou pensando), estes dados que vc disse já estar no TMemo, deveria estar em um Array ou numa TStringList, e aí você copia da Stringlist (a cada um minuto usando um TTimer) 20 nomes para dentro do TMemo, passando este minuto, limpa o TMemo e substitui começando do 21 para o 41, e assim consecutivamente. Você pode abrir um arquivo texto para essa TStringList ou Array se desejar também. É isso?
________________________________________________
Se não for isso desisto, deixo que outra pessoa interprete o que vc tá querendo informar, não tô conseguindo interpretar não...
Desculpe!
Gostei + 0
08/02/2008
Chackal
Gostei + 0
08/02/2008
Chackal
Gostei + 0
10/02/2008
Alberteije
Realize os procedimentos desejados em cada linha e faça o seguinte teste:
if memo1.Lines.Count mod 20 = 0 then sleep(10000);
Dessa forma, de 20 em 20 linhas, a exceção da primeira vez, haverá uma pausa de 1 minuto no sistema.
Baixe vídeos gratuitos aqui:
http://www.alberteije.com/cursodelphini.php
Abraços
Albert Eije
Gostei + 0
11/02/2008
Chackal
Aguardo retorno.
begin
IdMessage.Body.Clear;
IdMessage.From.Name := txtempresa.Text;
IdMessage.From.Address := txtAddress.Text;
IdMessage.BccList.EMailAddresses := Memo1.lines.text;
IdMessage.Subject := txtassunto.Text;
IdMessage.Body := RichEdit2.Lines;
IdSMTP.Host := txtHost.Text;
IdSMTP.AuthenticationType := atLogin ;
IdSMTP.Username := txtUser.Text+ComboBox1.Text;
IdSMTP.Password := txtPassword.Text;
IdSMTP.Port := 25;
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
if memo1.Lines.Count mod 20 = 0 then
sleep(10000);
except
IdSMTP.Disconnect;
end;
IdSMTP.Disconnect;
begin
with Memo1 do
Linha := Perform(EM_LINEFROMCHAR,SelStart, 1);
StatusBar1.Panels[1].Text := IntToStr(Linha);
´+IntToStr(Memo1.CaretPos.Y);
end;
end;
end;
Gostei + 0
12/02/2008
Alberteije
Você está enviando os e-mails que estão inseridos num Memo. A cada 20 e-mails você deseja pausar um minuto.
Crie então uma variavel para contar as linhas. A cada envio você incrementa essa variavel. Sempre que essa variavel for um divisor de 20 o programa pausará um minuto:
procedure ... var contador:integer; begin contador := 0; while contador <= memo1.lines.count do begin faça todos os procedimentos para o envio do e-mail inc(contador);//o contador é incrementado aqui if contador mod 20 = 0 then sleep(10000); end; end;
Tenta implementar aí, se não conseguir volte a postar.
Abraços
Albert Eije
baixe vídeo aulas gratuitas aqui: http://www.alberteije.com
Gostei + 0
12/02/2008
Chackal
var
contador:integer;
begin
contador := 0;
while contador <= memo1.lines.count do begin
IdMessage.From.Name := txtempresa.Text;
IdMessage.From.Address := txtAddress.Text;
IdMessage.BccList.EMailAddresses := Memo1.lines.text;
IdMessage.Subject := txtassunto.Text;
IdMessage.Body := RichEdit2.Lines;
IdSMTP.Host := txtHost.Text;
IdSMTP.AuthenticationType := atLogin ;
IdSMTP.Username := txtUser.Text+ComboBox1.Text;
IdSMTP.Password := txtPassword.Text;
IdSMTP.Port := 25;
IdSMTP.Connect;
try
IdSMTP.Send(IdMessage);
inc(contador);//o contador é incrementado aqui
if contador mod 20 = 0 then
sleep(10000);
except
IdSMTP.Disconnect;
end;
IdSMTP.Disconnect;
end;
end;
end;
end;
Gostei + 0
12/02/2008
Rodc
Sua lógica está correta, ele vai parar a cada 20 linhas.
Só é preciso fazer alguns ajustes:
- Para pegar uma linha do Memo (apenas um email) utilize Memo1.lines.Strings[contador].
- Sleep() recebe um parâmetro em milisegundos, logo o seu código está pausando apenas 10 segundos. Passe 60000 para pausar 1 minuto (60 segundos).
Gostei + 0
12/02/2008
Rodc
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)