Primero quiero decirte que soy partidario de evitar utilizar tipos Variant, y segundo que no se que es lo que quieres hacer pero no me parece lógico sacar los datos de un tipo "TString" a algo mas primitivo para trabajarlos, vos sabrás.
Con VarClear limpias la variable completa... no limpias cada item del array!!.. es como si fuera un puntero apuntado a 0.
Si lo que quieres es limpiar los valores de cada item del array, puedes hacer algo como lo que te escribo aqui:
Código:
procedure VarArrayClear(AValue: Variant);
var
lBound,
hBound,
i: Integer;
begin
if not VarIsArray(AValue) Then
raise Exception.Create('Invalid Variant Type');
lBound := VarArrayLowBound(AValue, 1);
hBound := VarArrayHighBound(AValue, 1);
for i := lBound to hBound do
AValue[i] := Null;
end;
Saludos!