Wie schon erwähnt, werden intern zwei Parameter übergeben (Länge bzw. Index des letzten Elements) und ein Zeiger auf das erste Element (TVarRec):
Delphi-Quellcode:
unit Foo;
interface
implementation
uses
SysUtils,
Dialogs;
procedure Bar(
const AMethod:
string;
const AParams:
array of const);
var
Index: Integer;
Text:
string;
begin
for Index := Low(AParams)
to High(AParams)
do
with TVarRec(AParams[
Index])
do
begin
case VType
of
vtInteger: Text := '
vtInteger';
vtBoolean: Text := '
vtBoolean';
vtChar: Text := '
vtChar';
vtExtended: Text := '
vtExtended';
vtString: Text := '
vtString';
vtPointer: Text := '
vtPointer';
vtPChar: Text := '
vtPChar';
vtObject: Text := '
vtObject';
vtClass: Text := '
vtClass';
vtWideChar: Text := '
vtWideChar';
vtPWideChar: Text := '
vtPWideChar';
vtAnsiString: Text := '
vtAnsiString';
vtCurrency: Text := '
vtCurrency';
vtVariant: Text := '
vtVariant';
vtInterface: Text := '
vtInterface';
vtWideString: Text := '
vtWideString';
vtInt64: Text := '
vtInt64';
else
Text := '
$' + IntToHex(VType, 2);
end;
ShowMessage('
Parameter ' + IntToStr(
Index) + '
: ' + Text);
end;
end;
initialization
Bar('
Foo', [42, '
Hello, World!',
nil]);
end.