Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ProgressBar bei LoadFromFile in TListBox (https://www.delphipraxis.net/110028-progressbar-bei-loadfromfile-tlistbox.html)

bodenheim 12. Mär 2008 11:22

Re: ProgressBar bei LoadFromFile in TListBox
 
Zitat:

Zitat von OregonGhost
Auch das Einlesen von 10 MB sollte nicht länger als zwei Sekunden dauern,

??

ich weiss worauf ihr hinaus wollt, Problem ist so,

die Dateien sind 5-6 MB groß und wenn ich lade, hängt der Rest vom Open Dialog bis alles geladen ist.
Nutzer könnte auf die Idee kommen, das Programm sei abgestürzt.
Das dauert über 10 Sek. um die Text-Datei in die StringListBox zu laden, habe einen normalen Rechner. (??)
Also würde das nicht so lang dauern, würde ich auch keine gauge einbauen.

Edit: Habe nochmal nachgemessen, das Laden von 6 MB txt über
Delphi-Quellcode:
while not Eof(myFile) do
      begin
        ReadLn(myFile, sRecord);
        listbox1.items.add(sRecord);
        inc(i);
        gauge1.Progress := i;
      end;
dauert an dem Rechner über 15 Sek. Mit gauge oder ohne.
Mit Readln oder ReadfromFile, egal..

Danach werden die Daten dann noch in eine StringGrid geparsed..
_____________________________________

Zitat:

Zitat von OregonGhost
Delay einzubauen, damit man mehr vom Fortschritt sieht

nicht deshalb sondern weil der "Open-Dialog" sonst "hängt".

RavenIV 12. Mär 2008 11:40

Re: ProgressBar bei LoadFromFile in TListBox
 
Zitat:

Zitat von bodenheim
Zitat:

Zitat von OregonGhost
Delay einzubauen, damit man mehr vom Fortschritt sieht

nicht deshalb sondern weil der "Open-Dialog" sonst "hängt".

versuch es mal so:
Delphi-Quellcode:
if OpenDialog.Execute(...) then
begin
  // hier alles, was nach dem OpenDialog passieren soll
end;
Das OpenDialog.Execute kommt erst zurück, wenn der OpenDialog geschlossen wird.
Der Rückgabe wert ist True, wenn OK gedrückt wird. Sonst ist er False.

bodenheim 12. Mär 2008 11:43

Re: ProgressBar bei LoadFromFile in TListBox
 
..das mit dem Delay war nonsense, stimmt..
thx.

RavenIV 12. Mär 2008 11:52

Re: ProgressBar bei LoadFromFile in TListBox
 
Zitat:

Zitat von bodenheim
..das mit dem Delay war nonsense, stimmt..
thx.

Sehr gut erkannt.
Warum soll man künstlich eine Pause einbauen, wenn eh schon alles richtig läuft.
Hat ein ehemaliger Arbeitskollege von mir immer gesagt: "Kaum macht man es richtig, funktioniert es auch."

Ausserdem sind 500 ms eine Ewigkeit für einen Prozessor. Da langweilt er sich ja 495 ms lang.
Was macht er dann? Er überlegt sich so manchen Schabernack. Daher kommt es, dass die PCs sich immer so "komisch" verhalten.

OregonGhost 12. Mär 2008 11:59

Re: ProgressBar bei LoadFromFile in TListBox
 
Zitat:

Zitat von bodenheim
Edit: Habe nochmal nachgemessen, das Laden von 6 MB txt über
Delphi-Quellcode:
while not Eof(myFile) do
      begin
        ReadLn(myFile, sRecord);
        listbox1.items.add(sRecord);
        inc(i);
        gauge1.Progress := i;
      end;
dauert an dem Rechner über 15 Sek. Mit gauge oder ohne.
Mit Readln oder ReadfromFile, egal..

Auch wenn du Gauge und Listbox weglässt? Das Laden einer Textdatei darf eigentlich nicht so lange dauern. Das Füllen in die Listbox hingegen kann schonmal etwas dauern, wenn du die Daten "echt" einfüllst. Da ist ein virtuelles Control wie VirtualTreeView oder wie das heißt sicherlich besser.

DeddyH 12. Mär 2008 12:05

Re: ProgressBar bei LoadFromFile in TListBox
 
Oder einfach mal BeginUpdate und EndUpdate benutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.
Seite 2 von 2     12   

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