Ver Mensaje Individual
  #11  
Antiguo 11-10-2005
lento manu lento manu is offline
Miembro
 
Registrado: oct 2004
Posts: 29
Reputación: 0
lento manu Va por buen camino
Invalid Variant Type

Siento pediros ayuda sobre este trucazo que editó Marcos Zorrilla. Estoy compilando en D6 con el BDE y al asignar el primer valor de tipo text en el campo 0 del registro Table1.Fields[n].AsVariant se colapsa el for por "Invalid Type Variant"
Cita:
Empezado por marcoszorrilla
A ver si te sirve este truco de Trucomania:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
 
type 
{Tipos para array dinámico de variants}
TRecuerda = array[0..0] of variant;
PRecuerda = ^TRecuerda;
var 
Recuerda:PRecuerda;
n:integer;
Campos:integer;
begin 
{Reservamos memoria para el array}
Campos:=Table1.FieldCount;
GetMem(Recuerda, Campos * SizeOf(variant));
 
{Vamos al ultimo registro}
Table1.Last;
{Recordamos los campos}
for n:=0 to Table1.FieldCount-1 do 
begin 
Recuerda^[n]:=Table1.Fields[n].AsVariant;
//error de Invalid Variant Type
end;  
...
FreeMem(Recuerda, Campos * SizeOf(Variant));
end;
Lo increible es que al poner el punto de interrupción en la línea, leo el valor del Table1.Fields[0].asVariant='NOMBRE' (pasa un simple valor tipo string), y por tanto, creo q es el Recuerda^[0] no acepta este valor.Buscando en Gogle por "EVariantBadVarTypeError", q acompaña el mensaje del compilador, encuentro esta página http://qc.borland.com/wc/qcmain.aspx?da=42 y selcciono el enlace 5239 (http://qc.borland.com/wc/qcmain.aspx?d=5239) donde parece q la solución esta en rescribir la unidad Variants.pas. después del login, menciona un atachement, pero no hay enlace para descargarlo.
¿Tenéis alguien esta unidad corregida?
¿No habría otra solución?
Si podéis tener alguna sugerencia... GRACIAS A TODOS
...quizás sería preferible abrir un nuevo hilo...
Responder Con Cita