![]() |
Progressbar läuft erst ab dem 2. Durchlauf
Hallo,
ich habe ein Problem mit meiner ProgressBar.
Delphi-Quellcode:
Beim Debuggen bemerke ich, dass pb_einlesen.Position keinen neuen Wert zugewiesen kriegt.
procedure THauptfenster.btn_stringlist_einlesenClick(Sender: TObject);
var StrList1:TStringList; i,pb_iZaehler:Integer; begin pb_einlesen.Visible := True; pb_einlesen.Max := length(aDaten); pb_iZaehler:=0; StrList1:=TStringList.Create; try StrList1.LoadFromFile(Path_to_Messwerte + 'messwerte.csv'); //Dezimaltrennzeichen wird geändern FormatSettings.DecimalSeparator:=','; for i:=1 to StrList1.Count -1 do begin //Delimiter für die StrList1 StrList1.Delimiter:=#9 ; StrList1.StrictDelimiter := True; delimited_string(StrList1[i]); pb_einlesen.Position := i; inc(pb_iZaehler); if pb_iZaehler = 15 then begin pb_iZaehler := 0; Application.ProcessMessages; end; end; //Dezimaltrennzeichen wird wieder zurück geändert FormatSettings.DecimalSeparator:='.'; finally StrList1.Free; end; pb_einlesen.Visible := False; end; In der Grafik verändert sich auch nichts. Sollte ich aber stoppen und wieder fortsetzen, verläuft die Wertzuweisung problemlos. In der Grafik ist die ProgressBar schon durchlaufen, obwohl der Prozess noch andauert. Woran kann dies liegen? |
AW: Progressbar läuft erst ab dem 2. Durchlauf
??? warum anfangs:
pb_einlesen.Max := length(aDaten); => ??? besser: pb_einlesen.Max:=StrList1.Count -1; for i:=1 to StrList1.Count -1 do |
AW: Progressbar läuft erst ab dem 2. Durchlauf
Wenn dann wohl eher
Delphi-Quellcode:
Und warum beginnt die for-Schleife bei 1 statt 0?
pb_einlesen.Max := StrList1.Count;
|
AW: Progressbar läuft erst ab dem 2. Durchlauf
Ist schon ok, wie vorgesehen, CSV-Dateien haben in der Regel in der 1. Teile eine "Überschrift", eine Auflistung der Spalten ...
Von daher ist es ok, wenn man diese Zeile überliest, da sie keine verwertbaren Daten enthält. |
AW: Progressbar läuft erst ab dem 2. Durchlauf
Dir wäre wahrscheinlich geholfen, wenn du das in einen Thread packen würdest :)
|
AW: Progressbar läuft erst ab dem 2. Durchlauf
Oder das
Delphi-Quellcode:
in jedem Schleifendurchgang aufrufen.
Application.ProcessMessages;
|
AW: Progressbar läuft erst ab dem 2. Durchlauf
Da war doch noch so ein "Windows Feature"?
Setz mal erst einen Step weiter und sofort danach zurück
Delphi-Quellcode:
Damit umgehst Du die optische Verzögerung die Windows da reinbringt!
pb_einlesen.Position := i+1;
pb_einlesen.Position := i; Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 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