helllo!
 
 
Variable V is variant type,
in first step V must be  array type (V := VarArrayCreate)
in second step type varBYte.
 
In delphi and lazarus everything is ok.
 
in  fpc 2.0.2 (linux) program show  error  EVariantInvalidOpError.
 
See example below.
 
where is error?
 

=================
 

example:
 
 
 

var v      : variant;
    v2     : variant;
    p_wart : variant;
Type Tarr = array[0..2] of word;
var  p : ^Tarr;
begin
  V := VarArrayCreate( [0,2], varword);
  p := VarArrayLock(V);
  try
    writeln('0');
    p^[0] := word(11);
    writeln('1');
    P^[1] := word(22);
    writeln('2');
    p^[2] := word(33);
    writeln('3');
  finally
    p_wart := V;
    VarArrayUnlock(V);
    VarClear(V);
  end;
 
  writeln('p[1]=', p_wart[1]);
  try
    if VarIsArray(V) then writeln('V is array');
    V := Unassigned;
   
    V2 := Byte(0);
    writeln('4');     // ok !
    V := V2;          // <-- An unhandled exception occurred at $080645C6 :
    writeln('5');     // EVariantInvalidOpError : Invalid variant operation
 
    V  := Byte(2);
    writeln('6');
    p_wart := V;
    writeln('7');
  except
    on E: Exception do Writeln(E.Message, ', nr=',E.HelpContext);
  end;
 
  readln;
 

 
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to