📄 testnestedrecords.out
字号:
unit TestNestedRecords;
{ AFS 15 May 2001
Tests patterned after bug submitted by George Tasker
As always, though anon/. records may have a limited place in production code
This test case pushes the envelope - it is not advisable to code
like this in the real world.
Declare your records as types when you can please, it makes your code more
readable to this program and to those reading your code
}
interface
{ intf only this one plays nice }
type
TRSomeRecord = record
fiFoo: integer;
fsBar: string;
end;
var
Fooble: record
fiFoo: integer;
fsBar: TRSomeRecord;
end;
Fooble2: record
fiFoo: integer;
fsBar: TRSomeRecord;
Fooble: record
fiFoo: integer;
fsBar: string;
end;
end;
Fooble3: record
fiFoo: integer;
fsBar: string;
Fooble: array [3..7] of record
fiFoo: integer;
fsBar: string;
end;
end;
Fooble4: record
fiFoo: integer;
fsBar: string;
Fooble4a: record
fiFoo: TRSomeRecord;
fsBar: string;
end;
fdBaz: double;
end;
Fooble5: record
fiFoo: integer;
fsBar: string;
Fooble5a: array [3..7] of record
fiFoo: integer;
fsBar: TRSomeRecord;
fdBaz: double;
Fooble5b: record
fiFoo: integer;
fsBar: TRSomeRecord;
end;
end;
fdBaz: double;
end;
type
TRidiculous = record
li1: integer;
Ridiculous2: record
li12: integer;
Ridiculous3: record
li3: integer;
Ridiculous4: record
li4: integer;
Ridiculous5: record
li5: integer;
end;
end;
lbHuh: boolean;
end;
end;
lbHuh2: boolean;
end;
var
IAmRidiculous: record
li1: integer;
TRidiculous2: record
li12: integer;
TRidiculous3: record
li3: integer;
TRidiculous4: record
li4: integer;
TRidiculous5: record
li5: integer;
end;
end;
lbHuh: boolean;
end;
end;
lbHuh2: boolean;
end;
function Test1(const p1: integer): boolean;
type
{ a bit better }
TTestRecord = record
fiFoo: integer;
fsBar: string;
Fooble5a: array [3..7] of record
fiFoo: integer;
fsBar: string;
fdBaz: double;
Fooble5b: record
fiFoo: integer;
fsBar: TRSomeRecord;
end;
end;
fdBaz: double;
end;
function Test2(const p1: integer): boolean;
type
TMyClass = class(TObject)
private
fiFoo: integer;
fsBar: string;
frFish: record
i1: integer;
S1: string;
ri: double;
end;
frWibble: record
i1: integer;
S1: string;
Spon: array[1..9] of record
i1: integer;
S1: string;
end;
end;
Gloop: array[1..4] of record
i1: integer;
S1: string;
end;
Floop, Noop: boolean;
FFoo: integer;
procedure SetFoo(const Value: integer);
protected
public
constructor Create;
function Fred(const pi: integer): integer;
property Foo: integer Read FFoo Write SetFoo;
end;
implementation
{ do it again in the implementation section }
{ imp only this one plays nice }
type
TRImpSomeRecord = record
fiFoo: integer;
fsBar: string;
end;
var
ImpFooble: record
fiFoo: integer;
fsBar: TRSomeRecord;
end;
ImpFooble2: record
fiFoo: integer;
fsBar: TRSomeRecord;
Fooble: record
fiFoo: integer;
fsBar: string;
end;
end;
function Test1(const p1: integer): boolean;
begin
Result := (p1 mod 3) = 1;
end;
function Test2(const p1: integer): boolean;
begin
Result := (p1 mod 3) = 2;
end;
{ TMyClass }
constructor TMyClass.Create;
begin
inherited;
end;
function TMyClass.Fred(const pi: integer): integer;
begin
Result := pi * 3;
end;
procedure TMyClass.SetFoo(const Value: integer);
begin
FFoo := Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -