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?