![]() |
Potenzrechnung
Hallo,
ich habe da ein Problem und zwar ich versuche ein Potenzergebnis durch ein Gauge zu ermitteln aber irgendwie klappt es nicht. So folgt sieht mein code aus:
Delphi-Quellcode:
Ich vermute,dass irgendwas in meiner Formel stimmt nicht. kann mir jemanden helfen?
procedure Form1.OKBtnClick(Sender: TObject);
begin Timer1.enabled := true; Timer1.Interval := 10; end; procedure Form1.Timer1Timer(Sender: TObject); var i, x, y, ergebnis,ergebnis2: integer; begin x:=StrToInt(Edit1.Text); y:=StrToInt(Edit2.Text); Ergebnis:= x / y; Ergebnis2:= ergebnis*100; Gauge1.progress := gauge1.progress + 1; if gauge1.Progress = ergebnis2 then Timer1.enabled :=false; Label1.Caption:= inttostr(ergebnis); end; grüß poter |
Re: Potenzrechnung
Das Ergebnis der Operation x/y ist in Delphi ein Real, kein Integer. Daher musst du ergebnis als Real (oder Single/Double/Extended) definieren. Eine weitere Möglichkeit wäre, x/y durch x div y zu ersetzen.
Übrigens brauchst du insgesamt nur eine Variable.
Delphi-Quellcode:
EDIT: Schau dir mal das Grundlagentutorial auf
procedure Form1.OKBtnClick(Sender: TObject);
begin Timer1.enabled:=true; Timer1.Interval:=10; end; procedure Form1.Timer1Timer(Sender: TObject); var percent: Integer; begin percent:=StrToInt(Edit1.Text)*100 div StrToInt(Edit2.Text); Gauge1.progress:=gauge1.progress+1; if gauge1.Progress=percent then Timer1.enabled:=false; Label1.Caption:= inttostr(percent); end; ![]() |
Re: Potenzrechnung
Hallo,
es lauft nicht richtig. das ergbnis von 8 von 25 bezogen auf 100 kommt richtig. er kann nicht rechnen: 65 von 15 bezogen auf 100 800 von 72 bezogen auf 100 sollte ich circa 111,11% bekommen. Da habe ich folgendes gemacht
Delphi-Quellcode:
aber es hilft nicht
Gauge1.MinValue:=0;
Gauge1.MaxValue:=100; grüß Poter |
Re: Potenzrechnung
Er rechnet definitiv richtig, er rundet wahrscheinlich nur falsch.
Du wirst definitiv keine 111.11% erhalten, weil du MaxValue=100 hast und außerdem ist 800/82 ungefähr 11,1%. Warum setzt du nicht einfach den Wert des Gauges gleich auf 11? |
Re: Potenzrechnung
Ja,ich hab es nochmal probiert aber ich kriege bestimmt ergbnis richtig und ander falsch zb:
25 von 50 bezogen auf 100 sollte 12,5% rauskommen aber kommt bei Gauge1.Max:= 1000; 5% bei Gauge1.Max:= 100 ; kommt 50% raus bei 800 von 500 bezogen auf 100 sollte 160% raus. Bei Gauge1.Max:= 1000; kommt 16% raus aber der Label Zeigt es richtig. es muss die möglichkeit geben zb 160% auf den Gauge zu kriegen oder? |
Re: Potenzrechnung
Ja, gibt es. Du setzt Max auf 100. Oder du multiplizierst den Wert mit 10.
Und was meinst du mit "25 von 50 bezogen auf 100"? |
Re: Potenzrechnung
Zitat:
Grüße Klaus |
Re: Potenzrechnung
Hallo,
es klappt nicht bei Gauge1.Max:= 100; und das Ergebnis * 10 multiplizieren. |
Re: Potenzrechnung
1. "Es klappt nicht" ist keine Fehlerbeschreibung
2. Ich habe gesagt Max auf 100 setzen _ODER_ mit 10 multiplizieren. |
Re: Potenzrechnung
Hallo Peter,
so funktioniert es bei mir. Ich habe das mit einer Progressbar (smooth = true) gemacht.
Delphi-Quellcode:
[edit] noch eine Frage, warum willst Du das denn unbedingt mit einem Timer lösen? [/edit]
procedure TForm1.Button1Click(Sender: TObject);
begin Timer1.enabled := true; Timer1.Interval := 10; Gauge1.Position:=0; end; procedure TForm1.Timer1Timer(Sender: TObject); var i, x, y: Integer; ergebnis,ergebnis2: extended; Faktor: Integer; begin Faktor := 100; x:=StrToInt(Edit1.Text); y:=StrToInt(Edit2.Text); Ergebnis:= x / y; if ergebnis > 1 then gauge1.Max:=Faktor*(trunc(ergebnis)+1) else Gauge1.Max := Faktor; Ergebnis2:= ergebnis*Faktor; Gauge1.Position := gauge1.Position + 1; if gauge1.Position >= ergebnis2 then // >= wegen Vergleich Integer mit extended Timer1.enabled :=false; Label1.Caption:= Floattostr(ergebnis); end; Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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-2025 by Thomas Breitkreuz