Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Protokollierung von Schleifendurchgängen in Statuszeile (https://www.delphipraxis.net/62230-protokollierung-von-schleifendurchgaengen-statuszeile.html)

hgiel 1. Feb 2006 16:10


Protokollierung von Schleifendurchgängen in Statuszeile
 
Hallo,

ich mußte schon einige Male Progrämmchen basteln, die große Textdateien (zeilenweise) analysierten. Um dem Anwender einen "StatusQuo" zu übermittel, z.B. welche Textzeile schon abgearbeitet wurde, möchte ich in der Statuszeile die Zeilennummer ausgeben.

Habe ich mit einer Schleife über die Textzeilen und einem Zeilenzähler realsiert:

ds_zaehler:=1;
while not eof(f) do
begin
VERARBEITUNG der Textzeile ...
inc(ds_zaehler);
statusbar1.simpletext:=inttostr(ds_zaehler);
end;

Mein Problem: Während der eigentlichen Text-"Verarbeitung" wird die Statuszeile NIE aktualisiert, d.h. sie zeigt Initial 1 (für die erste Zeile der Tetxdatei und dann erst wieder am Ende der Verarbeitung den Endwert - Gesamtanzahl der Zeilen - in der Statuszeile an.

Weiß jemand Rat - ich hoffe, daß ich mich einigermaßen verständlich ausgedrückt habe.

Vielen Dank und Gruß

3_of_8 1. Feb 2006 16:12

Re: Protokollierung von Schleifendurchgängen in Statuszeile
 
statusbar1.refresh nachdem Setzen des Textes, oder Application.ProcessMessages. Ich würde ProcessMessages nehmen.

Oder du arbeitest mit Threads, was hierfür aber leicht "oversized" wäre.

hgiel 2. Feb 2006 13:51

Re: Protokollierung von Schleifendurchgängen in Statuszeile
 
Funktioniert prima - vielen Dank!

Luckie 2. Feb 2006 13:53

Re: Protokollierung von Schleifendurchgängen in Statuszeile
 
Zitat:

Zitat von 3_of_8
Oder du arbeitest mit Threads, was hierfür aber leicht "oversized" wäre.

Wie so? Du weißt doch gar nicht, was hier
Delphi-Quellcode:
VERARBEITUNG der Textzeile ...
pasiert.

3_of_8 2. Feb 2006 14:12

Re: Protokollierung von Schleifendurchgängen in Statuszeile
 
Es ist so doch wirklich einfacher. Ich finde, dass man das so viel besser machen kann in diesem Fall.

DerDan 2. Feb 2006 15:36

Re: Protokollierung von Schleifendurchgängen in Statuszeile
 
Also ich würde auch einen Thread nehmen.

Im Hauptthread würd ich zyklisch (z.B. alle 250ms) die Thread Variablen lesen und daraus die Statuszeile bilden. dadurch bleibt die Statuszeile lesbar und die Schleife läuft schneller durch als mit Refresh oder ProcessMessages.

Auserdem ist der Thread dann unabhängig von einer Gui und kann seine Funktion zur not auch in einer Konsolen Anwendung erledigen


mfg


DerDan


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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