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.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to