[fpc-pascal] Empty record inside another record ?
Skybuck Flying
skybuck2000 at hotmail.com
Sat Feb 16 18:23:19 CET 2008
What's the benefit of using objects ?
One drawback of objects already discovered:
Objects cannot have the same field identifiers.
A problem that does not exist with records, and empty records.
// object example, pointers and typecasts still necessary.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
PethernetHeader = ^TethernetHeader;
TethernetHeader = object
SomeFields1 : packed array[0..13] of byte;
end;
PipHeaderVersion4 = ^TipHeaderVersion4;
TipHeaderVersion4 = object(TethernetHeader)
SomeFields2 : packed array[0..19] of byte; // first problem, identifier
redeclared, numbers used to fix it.
end;
TudpHeaderVersion4 = object(TipHeaderVersion4)
SomeFields3 : packed array[0..7] of byte;
end;
TtcpHeaderVersion4 = object(TipHeaderVersion4)
SomeFields4 : packed array[0..19] of byte;
end;
Tframe = object
SomeFields5 : packed array[0..66000] of byte;
end;
procedure Main;
var
frame : Tframe;
begin
frame.SomeFields5[14] := 234;
// TethernetHeader(frame). // typecast not possible.
// with frame as TethernetHeader do // operator not applicable
// begin
// SomeFields5[4] := 123;
// end;
// maybe pointers can help
writeln( PipHeaderVersion4(@Frame).SomeFields2[0] );
end;
begin
try
Main;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
readln;
end.
Bye,
Skybuck.
More information about the fpc-pascal
mailing list