Я пытаюсь выполнить самые простые преобразования в delphi, используя встроенную функцию конвертирования.
Просто преобразовать галлоны в литры.
Однако delphi возвращает недопустимый тип в единицах преобразования.
procedure TfrmMain.NumberBox1Change(Sender: TObject);
var
Result : Double;
begin
// Update label with result
Result := Convert(30, vuUKGallons, vuLiters);
lblAreaResult.Text := Result.ToString;
end;
Галлоны и литры имеют форму TConvTypes
vuUKGallons, vuLiters: TConvType;
Однако delphi возвращает следующее, когда япопробуйте выполнить код.
First chance exception at $7603AB32. Exception class EConversionError with message 'Incompatible conversion types [Illegal type, Illegal type]'. Process UnitConverter.exe (13972)
Это должно быть самой простой операцией после прочтения документации Embarcadero, следующее должно просто работать.На данный момент я не могу понять, что происходит.
Может кто-нибудь направить меня в правильном направлении?
Спасибо
Я отредактировал пост, чтобы включить полный блоккод
unit frmConverter;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListBox, FMX.Layouts,
FMX.TabControl, FMX.MultiView, FMX.Objects, FMX.Edit, System.ImageList,
FMX.ImgList, System.Threading, ConvUtils, FMX.EditBox, FMX.NumberBox;
type
TfrmMain = class(TForm)
MultiView1: TMultiView;
TabControl1: TTabControl;
tabLength: TTabItem;
tabVolume: TTabItem;
tabPressure: TTabItem;
tabEnergy: TTabItem;
ListBox1: TListBox;
StyleBook1: TStyleBook;
tabMass: TTabItem;
tabTemp: TTabItem;
Panel1: TPanel;
Label3: TLabel;
Label4: TLabel;
cbAreaFrom: TComboBox;
Label5: TLabel;
cbAreaTo: TComboBox;
btnMaster: TButton;
Label6: TLabel;
Label1: TLabel;
Layout1: TLayout;
lblAreaResult: TLabel;
Image1: TImage;
ToolBar1: TToolBar;
Button1: TButton;
Image2: TImage;
Button2: TButton;
Image3: TImage;
Button3: TButton;
Image4: TImage;
Label2: TLabel;
Button4: TButton;
Image5: TImage;
Label9: TLabel;
Button5: TButton;
Image6: TImage;
Label10: TLabel;
Button6: TButton;
Image7: TImage;
Label11: TLabel;
Button7: TButton;
Image8: TImage;
Label12: TLabel;
Button8: TButton;
Image9: TImage;
Label13: TLabel;
NumberBox1: TNumberBox;
lblDebugConvFrom: TLabel;
lblDebugConvTo: TLabel;
procedure NumberBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
vuUKGallons, vuLiters: TConvType;
implementation
{$R *.fmx}
procedure TfrmMain.NumberBox1Change(Sender: TObject);
var
Result : Double;
begin
// Update label with result
Result := Convert(30, vuUKGallons, vuLiters);
lblAreaResult.Text := Result.ToString;
end;
end.