ich habe ein Problem bei der Realisierung einer Verlaufsanzeige.
Also ich möchte Webseiten abrufen, deren URLs in einer Liste eingetragen sind. Die Anzahl kann dabei variieren, es können aber durchaus um die 100 Stück sein.
Der Fortschritt soll in einem separaten Formularfenster angezeigt werden. Zum Abruf nutze ich Indy HTTP.
Hier ein Ausschnitt aus dem Programm:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
I, Percent: Integer;
HtmlText: String;
begin
Form2.Initialize;
Form2.Show;
for I := 0 to ListBox1.Items.Count - 1 do
begin
Application.ProcessMessages;
try
HtmlText := IdHTTP1.Get(ListBox1.Items[I]);
except
HtmlText := '';
end;
Percent := Round((I + 1) / ListBox1.Items.Count * 100);
Form2.SetPercent(Percent);
end;
Form2.Hide;
end;
procedure TForm2.Initialize;
begin
Caption := '0% abgeschlossen';
end;
procedure TForm2.SetPercent(Percent: Integer);
begin
Caption := IntToStr(Percent) + '% abgeschlossen';
end;
Mein Problem ist jetzt, dass zwar die Seitenabrufe einwandfrei funktionieren, die Prozentanzeige in Form2.Caption aber irgendwie zu hängen scheint. Bei 100 URLs müsste ja eigentlich nach jeder abgerufenen Seite der Prozentwert um 1 erhöht werden. Intern geschieht das auch, aber angezeigt wird dann nur jeder 10. oder 15. Wert, d.h. das Ganze läuft nicht flüssig durch. Vielleicht kommt er mit der Aktualisierung der Anzeige nicht hinterher oder es blockiert irgendwo was.
Hab ich eventuell was falsch implementiert oder muss ich noch zusätzlich was einbauen?
Vielen Dank schonmal