AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Potenzrechnung

Ein Thema von poterp · begonnen am 24. Aug 2007 · letzter Beitrag vom 25. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2   
poterp

Registriert seit: 27. Mär 2005
175 Beiträge
 
#1

Potenzrechnung

  Alt 24. Aug 2007, 16:12
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:
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;
Ich vermute,dass irgendwas in meiner Formel stimmt nicht. kann mir jemanden helfen?
grüß
poter
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Potenzrechnung

  Alt 24. Aug 2007, 16:17
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:
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;
EDIT: Schau dir mal das Grundlagentutorial auf http://dsdt.info an. Und was hat das ganze mit Potenzrechnung zu tun?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
poterp

Registriert seit: 27. Mär 2005
175 Beiträge
 
#3

Re: Potenzrechnung

  Alt 24. Aug 2007, 16:47
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:
Gauge1.MinValue:=0;
Gauge1.MaxValue:=100;
aber es hilft nicht
grüß
Poter
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Potenzrechnung

  Alt 24. Aug 2007, 16:52
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?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
poterp

Registriert seit: 27. Mär 2005
175 Beiträge
 
#5

Re: Potenzrechnung

  Alt 24. Aug 2007, 17:24
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?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Potenzrechnung

  Alt 24. Aug 2007, 18:15
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"?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.753 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Potenzrechnung

  Alt 25. Aug 2007, 11:14
Zitat von poterp:
25 von 50 bezogen auf 100 sollte 12,5% rauskommen ..
25 von 50 ist 0,5 -> das ganze in Prozent (bezogen auf 100) ist dann 50%

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
poterp

Registriert seit: 27. Mär 2005
175 Beiträge
 
#8

Re: Potenzrechnung

  Alt 25. Aug 2007, 11:32
Hallo,
es klappt nicht bei Gauge1.Max:= 100; und das Ergebnis * 10 multiplizieren.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Potenzrechnung

  Alt 25. Aug 2007, 11:42
1. "Es klappt nicht" ist keine Fehlerbeschreibung
2. Ich habe gesagt Max auf 100 setzen _ODER_ mit 10 multiplizieren.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.753 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Potenzrechnung

  Alt 25. Aug 2007, 11:55
Hallo Peter,

so funktioniert es bei mir.
Ich habe das mit einer Progressbar (smooth = true) gemacht.

Delphi-Quellcode:
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;
[edit] noch eine Frage, warum willst Du das denn unbedingt mit einem Timer lösen? [/edit]

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13: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