Fórum Pausa em TMemo #353259

07/02/2008

0

Pausa. Duvida!
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

Chackal

Responder

Posts

07/02/2008

Edilcimar

supondo, uma vez que vc não especificou, que vc está carregando o memo de algum lugar, vc pode fazer um loop ou um for e a cada 20, 40, 100, etc, linhas carregadas colocar um timer para funcionar, não há mistério algum


Responder

Gostei + 0

07/02/2008

Chackal

amigo no caso a lista com nomes ela ja estaria lá no Tmemo.. no caso seria mesmo para pausar em 20 em 20 e continuar ate completar todas as linhas que tem no Tmemo... teria como postar um exemplo de sua explicação? te agradeço muito pela ajuda... grato


Responder

Gostei + 0

07/02/2008

Onjahyr

Você tem que fazer perguntas mais objetivas, se os dados já estão no TMemo, o que tem que pausar então? Não entendi! Você quer dizer rolar o texto para baixo, é isso?


Responder

Gostei + 0

08/02/2008

Chackal

Os dados já estão no Tmemo.. de exemplo teria 1000 nomes ele ira pausar de 20 em 20 nomes ( lines do Tmemo ) nisto no intervalo de 1 minuto.. sempre que chegar na linha 20 assim em diante 20..40..60.. etc ele pausa 1 minuto e continua a substituição.. Oque quero e da a pausa de 1 minuto e continuar.. seria na substituição dos nomes.. nisto com intervalo de 20 em 20 nomes ( linhas )... o texto pode rolar sim não tem problema seria mais o intervalo o importante sendo que ele pausa e continua de 20 em 20 linhas... Obrigado pela ajuda pessoal ;D


Responder

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!


Responder

Gostei + 0

08/02/2008

Chackal

Olá amigo sim e assim mesmo! teria como me mostar um exemplo? te agradeço pela ajuda


Responder

Gostei + 0

08/02/2008

Chackal

No caso de abrir um arquivo TXT com os nomes seria bem melhor dele jogar para o Tmemo e tendo a substituição como você disse.. assim jogando para ele e substituindo de 20 em 20 com o intervalo de um minuto..


Responder

Gostei + 0

10/02/2008

Alberteije

Caro,

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


Responder

Gostei + 0

11/02/2008

Chackal

Amigo teria me explicar tentei usar o seu codigo no enviador para ele pausar a cada 20 emails enviados e retornar depois de 1 min. e continuar no 40 assim e diante, de 20 em 20 na pausa de 1 min,so q no caso ele nao pausou e enviou todos os emails de uma vez,agradeço a toda comunidade pela ajuda.
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;


Responder

Gostei + 0

12/02/2008

Alberteije

OK.

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


Responder

Gostei + 0

12/02/2008

Chackal

Amigo teria como analizar este code pois não deu intervalo de tempo para enviar de 20 em 20.... Obrigada

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;


Responder

Gostei + 0

12/02/2008

Rodc

Amigo teria como analizar este code pois não deu intervalo de tempo para enviar de 20 em 20.... Obrigada

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


Responder

Gostei + 0

12/02/2008

Rodc

Ah, outra coisa, quando for postar um código, use a Tag ´Code´ (ver botões no editor de respostas) para não perder a formatação do código fonte.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar