Cześć,

Mam problem techniczny - jak przetworzyć obraz z pliku na typ Variant?

Póki co w sieci znalazłem coś takiego, ale pomijając fakt, że całość jest mocno przekombinowana, to działa to ze zmiennym szczęściem, tj. czasami przy ładowaniu grafiki trafia się AV.

procedure TForm1.StreamToVariant (Stream : TMemoryStream; var v : OleVariant);
var
  p : pointer;
begin
  v := VarArrayCreate ([0, Stream.Size - 1], varByte);
  p := VarArrayLock (v);
  Stream.Position := 0;
  Stream.Read (p^, Stream.Size);
  VarArrayUnlock (v);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  GraphStream: TMemoryStream;
  GraphVariant: OleVariant;
begin
  GraphStream := TMemoryStream.Create;
  GraphStream.LoadFromFile('test.png');
  StreamToVariant(GraphStream, GraphVariant);
  DevTree.Columns[0].Values[0] := GraphVariant;
  GraphStream.Free;
end;

Czyli wychodzi to tak, że najpierw wczytuję plik do Memory Stream'a i dopiero robię z tego Varia(n)ta. Jak to zrobić prościej i pewniej, tj. żeby zawsze działało?

PS: Jest tu jakiś spec od DevExpress QuantumTreeList?