Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi XE - Denkfehler oder Bug? (Progressbar MinMax) (https://www.delphipraxis.net/156159-delphi-xe-denkfehler-oder-bug-progressbar-minmax.html)

Andreas2k 22. Nov 2010 11:48

Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Also ich bekomme einen komischen Fehler den ich mir nicht erklären kann.

Und zwar folgendes:

Ich setze eine Progressbar in Form und stelle den Max Wert z.B. auf 5000 und den Min Wert auf 4000, die Postion springt dann ja automatisch auf 4000. Wenn ich das Projekt aber starte bekomme ich gleich die Fehlermeldung das Progressbar.Min außerhalb des gültigen Bereichs liegt

Wenn ich aber Max auf 100 stelle und Min auf z.B. 95 dann kommt der Fehler nicht. Woran liegt das?

Mein Problem ist das ich eine Schleife habe die bei z.B. 242809 anfängt und bei 242697 aufhört nach meinem Verständnis müsste Min also 242809 und Max 242697 sein und Position wird dann z.B. auf I der For schleife gesetzt

For i := 242809 to 242697 do begin progressbar1.position := i;

Matze 22. Nov 2010 11:51

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Ich habe kein XE und kann daher nichts dazu sagen.
Was passiert denn, wenn du z.B. im OI "Position" auf einen Wert zwischen Min und Max setzt?

Edit: Mein Beitrag ist Blödsinn. Der würde auf die Meldung passen, dass Position außerhalb des Bereichs liegt ...

Morphie 22. Nov 2010 11:55

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Hm das klingt für mich so, als wenn Min und Max intern als SmallInt deklariert wurden oder so?!

Uwe Raabe 22. Nov 2010 12:07

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Zitat:

Zitat von Andreas2k (Beitrag 1063250)
Ich setze eine Progressbar in Form und stelle den Max Wert z.B. auf 5000 und den Min Wert auf 4000, die Postion springt dann ja automatisch auf 4000. Wenn ich das Projekt aber starte bekomme ich gleich die Fehlermeldung das Progressbar.Min außerhalb des gültigen Bereichs liegt

Wenn ich aber Max auf 100 stelle und Min auf z.B. 95 dann kommt der Fehler nicht. Woran liegt das?

Die Properties werden aus der DFM in der Reihenfolge ihrer Deklaration geladen (eigentlich gespeichert, aber beim Laden kommen sie dann halt auch in dieser Reihenfolge) - in diesem Fall kommt Min vor Max. Beim Setzen von Min wird aber überprüft, ob Max < Min ist und ggf. eine Exception ausgelöst. Daher funktioniert auch jeder Min-Wert bis 100, da Max mit 100 vorbesetzt wird.

Der Fehler ist einfach, daß diese Überprüfung eigentlich nicht während des Ladens aus der DFM (csLoading) ausgeführt werden sollte. Schreib doch einfach mal einen QC dafür.

Workaround: Setze die Properties im FormCreate, dort aber erst Max und danach Min.

Je nach verwendeter Comctl32.dll können die Werte auch noch auf einen Bereich 0..65535 (bei V5.x) beschränkt sein. Das sollte aber unter aktuellen Betriebssystemen eher selten der Fall sein.

Andreas2k 22. Nov 2010 12:16

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
@Uwe
Verdammt ja, genau das war es... ich bin so blind - Danke!:-D

himitsu 22. Nov 2010 12:19

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Deine Schleifenwerte zählent rückwärts und die Schleife (to) läuft vorwärts ... die Schleife wird also niemals durchlaufen.

Min muß aber dennoch kleiner sein, als Max.
Wenn du nun rückwärts rechnen, aber den Fortschritt vorwärts anzeigen willst, dann mußt du es umrechnen.


PS: Dieses Problem mit dem Setzen hat man auch im Programm, also wenn man es programmseitig setzen will.

Entweder man muß aufpassen wann man was in welcher Reihenfolge setzen tut.
Oder ich mach es mir "einfach" (wenn sich min/max ändern würden), dann laß ich diese fest und skaliere die Position.

Andreas2k 22. Nov 2010 12:26

AW: Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
 
Das war nur ein Beispiel und ich habe wohl die Werte vertauscht - es ging aber nicht um die schleife da ich auch ohne schleife in einem komplett leeren Form diesen Fehler bekam wenn ich die Werte im Objektinspektor eingestellt habe (also ohne manuelle Zuweisung im Code und auch ohne schleife).

Aber das Problem ist ja schon gelöst worden


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