I am using the operator overloading for records in Delphi 2006. (Please don\'t answer this question by telling me not to.)
I have two record types with the impli
You might be able to do this with record helpers.
Below is what I recently did to work around the impossibility of having a forward record record declaration.
It uses the record helper construct, which - like implicit type casts - have drawbacks too.
The most important one being that only the nearest record helper for a particular record type will apply.
type
TIpv4Address = record
strict private
FAddress: TIpv4Quad;
FMask: TIpv4Quad;
private
class function CreateInternal(const IP_ADDR_STRING: _IP_ADDR_STRING): TIpv4Address; static;
public
class function Create(const IP_ADDR_STRING: _IP_ADDR_STRING): TIpv4Address; static;
class function Count(const IP_ADDR_STRING: _IP_ADDR_STRING): Integer; static;
property Address: TIpv4Quad read FAddress;
property Mask: TIpv4Quad read FMask;
end;
TIpv4AddressList = array of TIpv4Address;
TIpv4AddressHelper = record helper for TIpv4Address
class function CreateList(const IP_ADDR_STRING: _IP_ADDR_STRING): TIpv4AddressList; static;
end;
You use it like this:
function TAdapterInfo.GetIpAddressList: TIpv4AddressList;
begin
Result := TIpv4Address.CreateList(AdapterInfos.IP_ADAPTER_INFO[Index].IpAddressList);
end;
--jeroen