Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Threads für Schleife einbauen (https://www.delphipraxis.net/151225-threads-fuer-schleife-einbauen.html)

SyntaxXx 9. Mai 2010 20:53


Threads für Schleife einbauen
 
So heute habe ich mal etwas schweres, woran ich scheitere.

Also ich habe ein Programmm, welches Emails verschickt.
So jetzt kann ich da mehrere Emails angeben, da ich all meinen Kollegen meine Ergebnisse mitteilen muss.
Das macht die Sache natürlich leichter mit meinem Programm.

Dazu sei gesagt, das Programm läuft wunderbar.

Jetzt hab ich nur das Problem, wenn ich jetzt 10 EMail adressen angebe und auf Senden Klicke, dann hängt sich das Programm auf und ich muss warten bis es fertig geschickt hat.
Das ist natürlich sehr unschön.

Deswegen habe ich mir gedacht, gut baue ich Threads ein, damit das Programm nicht hängen bleibt und ich mir den Fortschritt in ner Progressbar anzeigen lassen kann.

Denn i mom ist es so, das die Progressbar erst ganz leer ist und wenn die Emails gesendet wurden, dann aufeinmal ganz voll ist.

Und ich möchte natürlich, das mir der Fortschritt zeitnah angezegt wird.


Jetzt würd eich einfach mal gerne wissen wie ich denn jetzt die Schleife einbaue.

Das hier ist mein Code:

Delphi-Quellcode:
begin
repeat
with idMessage1 do
begin
  Body.Assign(Memo2.Lines);
  From.Text :=(LabeledEdit1.Text);
  Subject :=(Edit1.Text);
        Recipients.EMailAddresses := Memo1.Lines.Strings[i];
          if Radiobutton1.Checked = true then
            Priority:= mpHigh;
          if Radiobutton1.Checked = true then
            Priority:= mpNormal;
          if Radiobutton1.Checked = true then
            Priority:= mpLow;
   CCList.EMailAddresses:='';
   BCCList.EMailAddresses:='';

end;
with idSMTP1 do
begin

    Username:=LabeledEdit1.Text;
    Password:=Maskedit1.Text;
    Host:=LabeledEdit3.Text;
    Port:=25;
    Connect;
    Send(idMessage1);
    Disconnect;
    end;
i := i+1;

until i = Memo1.Lines.Count ;
end;


Wäre euch wirklich sehr dankbar

SirThornberry 9. Mai 2010 21:20

Re: Threads für Schleife einbauen
 
Du brauchst dafür keinen Thread. Gib einfach mehrere EMailadressen als Empfänger an (bcc). Dann muss nur eine EMail zum Relay-Server gesendet werden und dieser kümmert sich dann darum diese an alle Adressaten zu verschicken.

rollstuhlfahrer 9. Mai 2010 21:31

Re: Threads für Schleife einbauen
 
Delphi-Quellcode:
if Radiobutton1.Checked = true then
  Priority:= mpHigh;
if Radiobutton1.Checked = true then
  Priority:= mpNormal;
if Radiobutton1.Checked = true then
  Priority:= mpLow;
Was soll denn das werden? Sollte da nicht RB1, 2, 3 stehen? Des Weiteren ist ein Vergleich mit "= true" zwar möglich aber in bestimmten Fällen tödlich, warum man das "= true" einfach weglässt. Ist nicht nur weniger Schreibaufwand, sondern auch richtiger. Weitere Infos hier im Forum.

Bernhard

SyntaxXx 9. Mai 2010 21:47

Re: Threads für Schleife einbauen
 
Ok hab alles geändert.

Jetzt hab ich nur ein Problem, es sind leide rnicht immer 10 Emails, es sind mal mehr mal weniger.
Wie kann ich das denn dann machen, das nur immer die die ich im Memofeld angebe eine bekommen, wenn ich die als bcc angebe?

Delphi-Quellcode:
BCCList.EMailAddresses:=Memo1.Lines.Text
kann ja nicht funktionieren.

Habt ihr vielleicht eine Idee?

spaxxn 10. Mai 2010 08:00

Re: Threads für Schleife einbauen
 
Delphi-Quellcode:
  Memo1.Lines.Delimiter := ';'
  BCCList.EMailAddresses := Memo1.Lines.DelimitedText;
Wäre eine Idee, aber du bist sehr sparsam mit deinen Infos...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz