Autor Beitrag
F.A Development
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 02.10.10 10:07 
Hey Leute,

ich habe schnell eine eigene Progressbar gebastelt. Jetzt hab ich ein problem:

wenn die value = 100 und Maximum = 100 ist siehtz aus als wenn erst 80 % durchgelaufen währen... ich berechne die vlaue so:
ausblenden C#-Quelltext
1:
pValue.Width = this.Width / maximum * value					


kann mir da jemand weiterhelfen?


wäre euch sehr dankbar

LG Fabian
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 02.10.10 10:19 
Hast du denn einmal im Debugger geschaut welche Werte da zugewiesen werden?

Ich vermute einmal, dass du da Rundungsfehler bekommst. Das kommt darauf an was für Typen deine Variablen und Eigenschaften haben.

Beispiel:
Wenn du nur Integerwerte nimmst, sind 10 / 7 * 6 = 1 * 6 = 6. Das heißt obwohl value = 6 und max = 7 sind, sind durch die Rundung nur 6 von 10 Pixeln gefüllt.
F.A Development
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 02.10.10 10:28 
hey danke dir,

habe aber eben weiter probiert und einfach die rechung umgestellt und es funktioniert... hatte ich zwar schonmah probiert aber najah =)

also für alle dies brauchen:
ausblenden C#-Quelltext
1:
pvalue.width = this.width * value / maximum // =))					


Danke euch =)

LG Fabian
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 02.10.10 10:30 
Der Grund ist wie schon gesagt der Rundungsfehler. Denn dadurch, dass du jetzt zuerst multiplizierst und dann die Integerdivision durchführst wird die Rundung erst als zweiter Schritt durchgeführt und nicht vor der Multiplikation. Dadurch wird der Rundungsfehler nicht mit multipliziert. ;-)