Dire che "non funziona" è sempre molto vago: qual è l'errore che ottieni precisamente?
Io ho provato a dichiarare la procedura esattamente come l'hai definita tu e non ho avuto errori di compilazione, mentre per quanto riguarda il corpo implementativo vero e proprio della procedura, stai facendo uso di proprietà specifiche dei tipi Variant che in ambiente .NET non sono supportati.
Puoi tranquillamente usare le classiche funzioni applicate ai vettori come Length per determinarne la lunghezza (il numero di elementi variabile, in questo caso) ed eseguire un ciclo per tutti gli oggetti inseriti usando la nuova sintassi for...in di Delphi 2005.
Un breve spezzone di codice per esemplificare:
codice:
procedure TForm1.MyWriteLn(const Args: array of const);
var
ArrayObject: TObject;
begin
for ArrayObject in Args do
ShowMessage(ArrayObject.ToString);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
MyWriteLn([0, 1, 2, 3]);
end;
Uno dei principali vantaggi di sviluppare in Delphi, infatti, è che in ambito .NET si possono continuare ad usare le funzioni e gli approcci già esistenti su Win32, tranne alcuni casi particolari come appunto i Variant e l'aritmetica dei puntatori.
Ciao!