Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Simple Frage zu einem Temperaturumrechner (https://www.delphipraxis.net/8342-simple-frage-zu-einem-temperaturumrechner.html)

Icewind2k 2. Sep 2003 19:40


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:
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.
hoffe mir kann jemand helfen.
Hier auch noch das programm

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]

Dagon 2. Sep 2003 20:04

Re: Simple Frage zu einem Temperaturumrechner
 
wenn du keine gerundeten werte haben willst, so musst du überal das round entfernen.

Icewind2k 2. Sep 2003 20:15

Re: Simple Frage zu einem Temperaturumrechner
 
Vielen dank

Dagon 2. Sep 2003 20:17

Re: Simple Frage zu einem Temperaturumrechner
 
nichts zu danken :D

Icewind2k 2. Sep 2003 20:23

Re: Simple Frage zu einem Temperaturumrechner
 
irgendwie spuckt er jetzt gar kein programm mehr aus

Sanchez 2. Sep 2003 20:55

Re: Simple Frage zu einem Temperaturumrechner
 
Was willst du damit sagen?

Aber ich vermute mal was in die Richtung
Code:
[Fehler] Unit1.pas(31): Inkompatible Typen: 'Integer' und 'Double'
Ein TSpinEdit.Value ist nämlich integer und sowas

Delphi-Quellcode:
Round((SpinEditF.Value-32) / 1.8);
liefert double zurück. Entweder du zeigst jetzt integer-Werte im SpinEdit an. Machst dann so:
Delphi-Quellcode:
Round((SpinEditF.Value-32) div 1.8);
oder du verwendest eine andere Komponente um deine Werte zu visualisieren

grüße, daniel

negaH 3. Sep 2003 00:28

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]

Icewind2k 3. Sep 2003 13:21

Re: Simple Frage zu einem Temperaturumrechner
 
cool danke
für die beiden antworten

Trouble_Maker 3. Sep 2003 13:30

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

Ben 27. Nov 2003 16:02

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 08:04 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