AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)

Ein Thema von Andreas2k · begonnen am 22. Nov 2010 · letzter Beitrag vom 22. Nov 2010
Antwort Antwort
Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#1

Delphi XE - Denkfehler oder Bug? (Progressbar MinMax)

  Alt 22. Nov 2010, 12:48
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 22. Nov 2010, 12:51
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 ...

Geändert von Matze (22. Nov 2010 um 13:10 Uhr)
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

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

  Alt 22. Nov 2010, 12:55
Hm das klingt für mich so, als wenn Min und Max intern als SmallInt deklariert wurden oder so?!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 22. Nov 2010, 13:07
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#5

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

  Alt 22. Nov 2010, 13:16
@Uwe
Verdammt ja, genau das war es... ich bin so blind - Danke!
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 22. Nov 2010, 13:19
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (22. Nov 2010 um 13:22 Uhr)
  Mit Zitat antworten Zitat
Andreas2k

Registriert seit: 2. Jan 2003
108 Beiträge
 
Delphi XE5 Professional
 
#7

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

  Alt 22. Nov 2010, 13:26
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
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 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