System.pas单元有这么一段定义
PVarRec = ^TVarRec;
TVarRec = record { do not pack this record; it is compiler-generated }
case Byte of
vtInteger: (VInteger: Integer; VType: Byte);
vtBoolean: (VBoolean: Boolean);
vtChar: (VChar: Char);
vtExtended: (VExtended: PExtended);
vtString: (VString: PShortString);
vtPointer: (VPointer: Pointer);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (VClass: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: Pointer);
vtCurrency: (VCurrency: PCurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: Pointer);
vtWideString: (VWideString: Pointer);
vtInt64: (VInt64: PInt64);
end;其他还有什么case Integer of 0,1,2 这些都是什么意思?麻烦各位指点
PVarRec = ^TVarRec;
TVarRec = record { do not pack this record; it is compiler-generated }
case Byte of
vtInteger: (VInteger: Integer; VType: Byte);
vtBoolean: (VBoolean: Boolean);
vtChar: (VChar: Char);
vtExtended: (VExtended: PExtended);
vtString: (VString: PShortString);
vtPointer: (VPointer: Pointer);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (VClass: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: Pointer);
vtCurrency: (VCurrency: PCurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: Pointer);
vtWideString: (VWideString: Pointer);
vtInt64: (VInt64: PInt64);
end;其他还有什么case Integer of 0,1,2 这些都是什么意思?麻烦各位指点
只是这里为什么是 case Byte 而不是 其他的基本类型?
To yang946():
你说的"变量不同的类型"是什么意思,变量是指 Byte 吗,可是 Byte 是基本类型啊.{ TVarRec.VType values } vtInteger = 0;
vtBoolean = 1;
vtChar = 2;
vtExtended = 3;
vtString = 4;
vtPointer = 5;
vtPChar = 6;
vtObject = 7;
vtClass = 8;
vtWideChar = 9;
vtPWideChar = 10;
vtAnsiString = 11;
vtCurrency = 12;
vtVariant = 13;
vtInterface = 14;
vtWideString = 15;
vtInt64 = 16;
TVarRec=record
VInteger: Integer;
VType: Byte
end为1的时候
TVarRec=record
VBoolean: Boolean
end
为2 的时候
TVarRec=record
VChar: Char
end
...
...
...
吗
type
TRect2D = record
case Byte of
0: (x1, y1, x2, y2: double); //把double改为integer??????/
1: (p1, p2: Tpoint);
end;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
rr : Trect2d;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
rr.x1 :=1.0;
rr.x2 :=200.0;
rr.y1:=11.0;
rr.y2:=211.0;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
listbox1.AddItem(floattostr(rr.x1),nil);
listbox1.AddItem(floattostr(rr.x2),nil);
listbox1.AddItem(floattostr(rr.y1),nil);
listbox1.AddItem(floattostr(rr.y2),nil);
listbox1.AddItem(inttostr(rr.p1.X),nil);
listbox1.AddItem(inttostr(rr.p1.y),nil);
listbox1.AddItem(inttostr(rr.p2.X),nil);
listbox1.AddItem(inttostr(rr.p2.y),nil);
end;