在德尔福将摄氏温度转换为华氏温度和反之亦然

时间:2013-09-06 14:31:32

标签: delphi

我正在学习德尔福,由于某些原因,他们使用这种旧语言,但无论如何。 我需要构建一个转换Celsius和Fahrenheit的Weather应用程序。

用户必须输入7天天气但这个例子我只想弄清第1天

所以我首先创建了选择Celsius和Fahrenheit的单选按钮, 然后,如果他们选择Celsius我必须将Celsius转换为Fahrenheit,如果他们选择Fahrenheit,我必须将其转换为Celsius。

所以这是我的代码:

 var
   Celsius, Fahrenheit, Day1 : Double;

 begin
   Day1 := fedDay1;
   Celsius := (Day1 - 32)*5/9;
   Fahrenheit := Day1 * 9/5 + 32;

   if radCelsius.checked then
     lblConvertDay1.Caption := FloatToStrF(Fahrenheit, ffFixed, 15, 2);
   else
     lblConvertDay1.Caption := FloatToStr(Celsius, ffFixed, 15, 2);
   end;

它在fedDay1上出现错误这是一个浮动旋转编辑

请帮助

4 个答案:

答案 0 :(得分:5)

您不能直接将SpinEdit分配给变量。你必须使用这个值。

Day1 := fedDay1.Value;

您的代码只需进行所需的转换,因为Day1已经拥有其中之一。因此,如果用户输入了摄氏度值,则只需要将摄氏温度转换为华氏度。如果他们输入华氏温度值,您只需要从华氏温度转换为摄氏温度。

var
  Day1: Double;
  OutVal: Double;
begin
  Day1 := fedDay1.Value;
  if radCelsius.checked then
    OutVal := (9.0 / 5.0) * Day1 + 32     // Cels. entered; convert to Fahrenheit 
  else
    OutVal := (5.0 / 9.0) * (Day1 - 32);  // Fahr. entered; convert to Celsius
  lblConvertDay1.Caption := FloatToStr(OutVal, ffFixed, 15, 2);
end;

如果你使用的是Delphi的最新版本(Delphi 2007有它们,并且它们可以追溯到Delphi 5),StdConvs单元具有可用于转换的预定义函数:

implementation

uses
  StdConvs;

   if ...
      OutVal := CelsiusToFahrenheit(Day1)
   else
      OutVal := FahrenheitToCelsius(Day1);

答案 1 :(得分:3)

解决问题的正确方法是创建一个从摄氏温度转换为华氏温度的函数,以及另一个转换为相反方向的函数。

function CelsiusFromFahrenheit(const Fahrenheit: Double): Double;
begin
  Result := (Fahrenheit-32.0)/1.8;
end;

function FahrenheitFromCelsius(const Celsius: Double): Double;
begin
  Result := Celsius*1.8 + 32.0;
end;

代码中的主要错误是fedDay1不是浮点值,而是GUI控件。因此,您需要使用fedDay1.Value读取控件的值。

然后,您可以更清晰地编写GUI更新代码:

InputValue := fedDay1.Value;
if radCelsius.checked then
  ConvertedValue := FahrenheitFromCelsius(InputValue)
else
  ConvertedValue := CelsiusFromFahrenheit(InputValue);
lblConvertDay1.Caption := FloatToStrF(ConvertedValue, ffFixed, 15, 2);

答案 2 :(得分:2)

您无法将微调器指定给double。你需要从中获取价值。

尝试:

Day1 := fedDay1.Value;

答案 3 :(得分:1)

你有CelsiusToFahrenheit功能。您的代码需要进行一些修改才能拥有实用的应用程序。