2012-03-28 14 views
7

Delphi geliştirmemde, Bir prosedüre bir "const of const" (bu da sınıfı da içerebilir) iletmek istiyorum ve elemanlar üzerinde işlem döngüsünde ve eleman türünü feryat olarak algılamak istiyorum.Bir const dizisinin türlerini ve değerlerini nasıl edinebilirim?

Procedure Test(const Args : array of const); 
begin 
end; 

and in my code call it with some variables 

Procedure Test(); 
begin 
    cls := TMyObject.create; 
    i := 123; 
    j := 'book'; 
    l := False; 
    Test([i,j,l, cls, 37.8]) 
end; 

Gönderilen dizi öğeleri nasıl döngülenir ve türünü algılar? Size varsayarsak

+0

tarihinde arkadaşınız, http://blogs.embarcadero.com/abauer/2007/ olduğunu 06/01/35293 – Dampsquid

+0

Lütfen delphi sürümünü belirtin! –

+4

Olası bir cevabın ne olacağı, ne kadar fark var, @Warren? TVarRec yıllardan beri pek değişmedi. –

cevap

7
for I := Low(Args) to High(Args) do 
    case TVarRec(Args[I]).VType of 
    vtInteger: 
     ... 
    end; 
+0

Teşekkürler, cevabımı aldım, Tarvirdi –

17

Unicode Delphi kullanarak edilmektedir (aksi takdirde, dize davayı değiştirmek zorunda):

procedure test(const args: array of const); 
var 
    i: Integer; 
begin 
    for i := low(args) to high(args) do 
    case args[i].VType of 
     vtInteger: ShowMessage(IntToStr(args[i].VInteger)); 
     vtUnicodeString: ShowMessage(string(args[i].VUnicodeString)); 
     vtBoolean: ShowMessage(BoolToStr(args[i].VBoolean, true)); 
     vtExtended: ShowMessage(FloatToStr(args[i].VExtended^)); 
     vtObject: ShowMessage(TForm(args[i].VObject).Caption); 
     // and so on 
    end; 
end; 


procedure TForm4.FormCreate(Sender: TObject); 
begin 
    test(['alpha', 5, true, Pi, Self]); 
end;