PDA

Ver la Versión Completa : Arreglos


Lobo
18-09-2003, 20:11:10
Alguien me puede ayudar con respecto a la sintaxis del procedure VarClear(var V : Variant); lo cual necesito para limpiar un arreglo que se crea con el VarArrayCreate..!!!

roman
18-09-2003, 21:01:29
No entiendo bien cuál es tu duda. VarClear "desasigna" el "variant".

VarClear(V) es lo mismo que V := Unassigned

Por favor especifica un poco más.

// Saludos

Lobo
18-09-2003, 21:10:54
TablaBoletos esta declarada como variant;

Creo un arreglo en el cual guardo valores de 1 .. count (n) , pero necesito limpiarlo o borrarlo cada vez que se crea ya que me marca el siguente error: 6532ORA-06532; Subscript outside of limit cuando lo hago 10 veces consecutibvas...

TablaBoletos := VarArrayCreate([1, lista.Items.count], varVariant);

for i := 1 to lista.Items.count do
tablaboletos[i] := lista.items[i - 1];

Espero haya sido mas explicito...

Saludos.!!!

delphi.com.ar
19-09-2003, 00:09:19
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:
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!