It is possible to do that using variant type. I have done it as below:
property DocumentElementChildNodes[Index1: Variant] : TPXMLNode read getChildNode; default;
function TPXMLNode.getChildNode(Index1 : Variant): TPXMLNode; begin Result := nil; if assigned(Self) and assigned(FChildNodes) then if (varType(Index1) = varString) or (varType(Index1) = varUString) then begin if (IndexOf(Index1) = -1) then if FAutoCreateChildren then result := TPXmlNode(self.addchild(Index1)) else result := nil else Result := TPXMLNode( FChildNodes.objects[IndexOf(Index1)]); end else Result := TPXMLNode(FChildNodes.objects[Index1]); end; Regards Marcus Rocha. Em 20/06/2019 14:57, Ryan Joseph escreveu:
I just had some plans for a cool JSON class thwarted because apparently [] properties don’t allow overloading of the parameters. Can we allow multiple default properties as long as their parameters are different? I know there’s not overloading of property names but at least the parameters could be overloadable so the correct property is chosen depending on what the args are. type TMyClass = class function GetValueWithInt(index: integer): TValue; function GetValueWithString(index: string): TValue; property IndexI[index: integer]: TValue read GetValueWithInt; default; property IndexS[index: string]: TValue read GetValueWithString; default; end;o := c[index]; // IndexI winso := c[‘key’]; // IndexS wins Regards, Ryan Joseph _______________________________________________ fpc-devel maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
_______________________________________________ fpc-devel maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
