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
TRecuerda = array[0..0] of variant;
PRecuerda = ^TRecuerda;
var
Recuerda:PRecuerda;
n:integer;
Campos:integer;
begin
Campos:=Table1.FieldCount;
GetMem(Recuerda, Campos * SizeOf(variant));
Table1.Last;
for n:=0 to Table1.FieldCount-1 do
begin
Recuerda^[n]:=Table1.Fields[n].AsVariant;
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...