![]() |
Simple Frage zu einem Temperaturumrechner
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe diesen quelltext und das programm dazu funktioniert auch nur möchte ich jetzt das auch die richtigen werte angezeigt werden und nicht nur die gerundeten.
Delphi-Quellcode:
hoffe mir kann jemand helfen.
unit blabla;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Spin; const cNull = 0; cFahrenheit = 1; cCelsius = 2; cReaumur = 3; cKelvin = 4; type TFormMain = class(TForm) LabelTitle: TLabel; LabelF: TLabel; LabelR: TLabel; LabelC: TLabel; SpinEditF: TSpinEdit; SpinEditR: TSpinEdit; SpinEditC: TSpinEdit; BitBtnCalc: TBitBtn; BitBtnClose: TBitBtn; BitBtnClear: TBitBtn; LabelK: TLabel; SpinEditK: TSpinEdit; procedure FormCreate(Sender: TObject); procedure BitBtnCloseClick(Sender: TObject); procedure BitBtnCalcClick(Sender: TObject); procedure SpinEditFChange(Sender: TObject); procedure SpinEditRChange(Sender: TObject); procedure SpinEditCChange(Sender: TObject); procedure BitBtnClearClick(Sender: TObject); procedure SpinEditKChange(Sender: TObject); private { Private-Deklarationen } Quelle: Byte; public { Public-Deklarationen } end; var FormMain: TFormMain; implementation {$R *.DFM} procedure TFormMain.FormCreate(Sender: TObject); begin Quelle := cNull; end; procedure TFormMain.BitBtnCloseClick(Sender: TObject); begin Close; end; procedure TFormMain.BitBtnCalcClick(Sender: TObject); begin case Quelle of cFahrenheit: begin SpinEditC.Value := Round((SpinEditF.Value-32) / 1.8); SpinEditR.Value := Round(4/9 * (SpinEditF.Value-32)); SpinEditK.Value := Round(5/9 * (SpinEditF.Value-32) + 273); end; cReaumur: begin SpinEditC.Value := Round((SpinEditR.Value) / 0.8); SpinEditF.Value := Round((SpinEditR.Value*1.8) + 32); SpinEditK.Value := Round(5/4 * SpinEditR.Value + 273); end; cCelsius: begin SpinEditF.Value := Round((SpinEditC.Value * 1.8) + 32); SpinEditR.Value := Round(SpinEditC.Value * 0.8); SpinEditK.Value := Round(SpinEditC.Value + 273); end; cKelvin: begin SpinEditF.Value := Round(9/5 * (SpinEditK.Value - 273) + 32); SpinEditR.Value := Round(4/5 * (SpinEditK.Value - 273)); SpinEditC.Value := Round(SpinEditK.Value - 273); end; end end; procedure TFormMain.SpinEditFChange(Sender: TObject); begin Quelle := cFahrenheit; end; procedure TFormMain.SpinEditRChange(Sender: TObject); begin Quelle := cReaumur; end; procedure TFormMain.SpinEditCChange(Sender: TObject); begin Quelle := cCelsius; end; procedure TFormMain.BitBtnClearClick(Sender: TObject); begin Quelle := cNull; SpinEditC.Value := 0; SpinEditF.Value := 0; SpinEditR.Value := 0; SpinEditK.Value := 0; end; procedure TFormMain.SpinEditKChange(Sender: TObject); begin Quelle := cKelvin; end; end. Hier auch noch das programm [edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit] |
Re: Simple Frage zu einem Temperaturumrechner
wenn du keine gerundeten werte haben willst, so musst du überal das round entfernen.
|
Re: Simple Frage zu einem Temperaturumrechner
Vielen dank
|
Re: Simple Frage zu einem Temperaturumrechner
nichts zu danken :D
|
Re: Simple Frage zu einem Temperaturumrechner
irgendwie spuckt er jetzt gar kein programm mehr aus
|
Re: Simple Frage zu einem Temperaturumrechner
Was willst du damit sagen?
Aber ich vermute mal was in die Richtung
Code:
Ein TSpinEdit.Value ist nämlich integer und sowas
[Fehler] Unit1.pas(31): Inkompatible Typen: 'Integer' und 'Double'
Delphi-Quellcode:
liefert double zurück. Entweder du zeigst jetzt integer-Werte im SpinEdit an. Machst dann so:
Round((SpinEditF.Value-32) / 1.8);
Delphi-Quellcode:
oder du verwendest eine andere Komponente um deine Werte zu visualisieren
Round((SpinEditF.Value-32) div 1.8);
grüße, daniel |
Re: Simple Frage zu einem Temperaturumrechner
Also du dividierst durch 1.8 oder multiplizierst mit 0.8, es wird also in jedem Falle in irgend einer weise gerundet. Ich vermute das er nicht richtig rundet oder aber das du auf zehntel/Hunderstel genau anzeigen möchtest, richtig ?
Statt X := Round(Y / 1.8), müsstest du also X := Round(Y * 100 / 1.8) benutzen um in Hunderter Schritten anzuzeigen. Die Anzeige selber dann durch 100 dividieren und als Fließkommazahl anzeigen, eg. FormatFloat(). Gruß hagen [edit=Luckie]Smilies deaktiviert. Das Kerlchen mit der Sonnebrille hat etwas gestört. Mfg, Luckie[/edit] |
Re: Simple Frage zu einem Temperaturumrechner
cool danke
für die beiden antworten |
Re: Simple Frage zu einem Temperaturumrechner
Hiho...
ganz nettes Tool, doch ich würde an deiner Stelle noch beim Umrechnen Button eine Funktion einbauen, dass man beispielsweise nicht mehr als 5 Stellen bei Celsius eingeben kann! Das macht zwar keiner, aber wenn man eine lange Zahl eingibt, und umrechnet, dann gibt er was aus, was REIN RECHNERICH nicht stimmt! und wenn man dann nochmal auf umrechnen klickt, springt der Celsiuswert wieder auf 0. Also das könntest du, falls du das willst, noch abfangen! Ansonsten schönes Tool cu Trouble_Maker |
Re: Simple Frage zu einem Temperaturumrechner
Lol sorry wenn ich lache.. aber der, der das gepostet hat, ist in meinem Info-Kurs und der Code stammt direkt von mir! :mrgreen:
BitBtnClear.. SpinEditK.. *bekannt* naja, das Programm gibt's nächste Stunde komplett funktionsfähig auf CD - inkl. Quelltext! Gruß, Ben :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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