![]() |
[Bug?] Delphi ist zu langsam?
Klitzekleines Problem mit Turbo Delphi.
Ich habe eine ziemlich lange Funktion, die ziemlich lange etwas macht. Damit der User brav wartet und in der Zwischenzeit nichts anderes macht, wollte ich ein Label welches ausgibt sobald der Vorgang in Gang gesetzt wird. So sieht der Kopf meiner Funktion aus:
Delphi-Quellcode:
Nur leider, macht Delphi das Label nicht rot und ändert die Caption. Ich war schon am verzweifeln, bis ich ein
begin
Label14.Caption := 'Status: Working, please wait!'; Label14.Font.Color := clRed; if IsAppRunning('xxxx.exe') = true then begin //viel zu tun hier end;
Delphi-Quellcode:
hinter das Setzen der Label-Farbe gesetzt habe. Nun geht es, ich frage mich trotzdem wieso ich das so machen muss.
Application.ProcessMessages;
Was genau macht Application.ProcessMessages denn, nicht das das noch Einfluss auf die restliche Funktion hat. :? Thx |
Re: [Bug?] Delphi ist zu langsam?
Das ist kein Bug, das ist halt so.
Das ändern der Caption und der Farbe findet schon statt, nur hat Deine Anwendung durch die Ausführung der langen Funktion nicht mehr Gelegenheit, das neu zu zeichnen. Durch Application.ProcessMessages verschaffst Du -bildlich gesprochen- der Anwendung halt etwas Luft, um neu zu zeichnen. Sherlock |
Re: [Bug?] Delphi ist zu langsam?
Es gibt Rechenzeit ab.
|
Re: [Bug?] Delphi ist zu langsam?
k thx
|
Re: [Bug?] Delphi ist zu langsam?
Zitat:
|
Re: [Bug?] Delphi ist zu langsam?
Vielleicht solltest du die Funktion in einen Thread auslagern.
|
Re: [Bug?] Delphi ist zu langsam?
Naja, der Durchlauf der Funktion dauert atm um die 40 Sekunden (dank schlechter Programmierkunst :mrgreen: ), was aber daran liegt das viele Dateien bearbeitet und ersetzt werden. Bringt das etwas sowas in nen Thread auszulagern?
|
Re: [Bug?] Delphi ist zu langsam?
Man könnte dann im restlichen Programm weiterarbeiten
|
Re: [Bug?] Delphi ist zu langsam?
Achso, dass muss ja dann nicht sein, die Funktion ist die eigentlich einzige Aktion die man machen kann. ;)
|
Re: [Bug?] Delphi ist zu langsam?
Jepp ein Thread ist genau das Richtige dafür.
Sollte es möglich sein, dass die lange Berechnung mehrere Schritte durchführt, kann man dem Benutzer sogar mitteilen, wo die Berechnung gerade ist (manchmal kann man sogar sagen, wieviel Prozent schon abgearbeitet sind, vielleicht sogar wie lange es wohl noch dauert). Für die Kurzweil des Benutzers kann man dann im Vordergrund ein lustiges Video oder auch die Fische von den ![]() Deine User/Kunden werden dankbar sein ... cu Oliver |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 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 by Thomas Breitkreuz