![]() |
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ß |
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. |
Re: Protokollierung von Schleifendurchgängen in Statuszeile
Funktioniert prima - vielen Dank!
|
Re: Protokollierung von Schleifendurchgängen in Statuszeile
Zitat:
Delphi-Quellcode:
pasiert.
VERARBEITUNG der Textzeile ...
|
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.
|
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 10:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz