Pausa em TMemo
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...
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
Curtidas 0
Respostas
Edilcimar
07/02/2008
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
GOSTEI 0
Chackal
07/02/2008
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
GOSTEI 0
Onjahyr
07/02/2008
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?
GOSTEI 0
Chackal
07/02/2008
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
GOSTEI 0
Onjahyr
07/02/2008
_________________________________________________
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!
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
Chackal
07/02/2008
Olá amigo sim e assim mesmo! teria como me mostar um exemplo? te agradeço pela ajuda
GOSTEI 0
Chackal
07/02/2008
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..
GOSTEI 0
Alberteije
07/02/2008
Caro,
Realize os procedimentos desejados em cada linha e faça o seguinte teste:
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
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
Chackal
07/02/2008
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;
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
Alberteije
07/02/2008
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:
Tenta implementar aí, se não conseguir volte a postar.
Abraços
Albert Eije
baixe vídeo aulas gratuitas aqui: http://www.alberteije.com
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
Chackal
07/02/2008
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;
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
Rodc
07/02/2008
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).
GOSTEI 0
Rodc
07/02/2008
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.
GOSTEI 0