Registriert seit: 12. Jul 2011
30 Beiträge
Delphi 11 Alexandria
|
Rave Report Zugriffsverletztung bei Übergabe von einem Bild
12. Jul 2011, 10:25
Hi,
mein Prolem ist eine Zugriffsverletzung bei der Übergabe von mehreren Bitmaps.
Delphi-Quellcode:
procedure TMyReportingObj.RvGetCols(Connection: TRvCustomConnection);
begin
with Connection do
begin
WriteField('Bild1', dtGraphic, 20, '', '');
WriteField('Bild2', dtGraphic, 20, '', '');
WriteField('Bild3', dtGraphic, 20, '', '');
WriteField('Bild4', dtGraphic, 20, '', '');
end;
end;
procedure TMyReportingObj.RvGetRow(Connection: TRvCustomConnection);
var st_Bild1, st_Bild2, st_Bild3, st_Bild4: TMemoryStream;
begin
st_Bild1 := TMemoryStream.Create;
GetPicture(st_Bild1, 500, 500); // zur Laufzeit erzeugtes Bild (Höhe = 500, Breite = 500 Pixel)
// Bild wird als Bitmap erzeugt und als Stream übergeben.
st_Bild2 := TMemoryStream.Create;
GetPicture(st_Bild2, 500, 500);
st_Bild3 := TMemoryStream.Create;
GetPicture(st_Bild3, 500, 500);
st_Bild4 := TMemoryStream.Create;
GetPicture(st_Bild4, 500, 500);
with Connection do
try
WriteBlobData(st_Bild1.Memory^, st_Bild1.Size); // st_Bild1.Size = 1000 054 Byte
WriteBlobData(st_Bild2.Memory^, st_Bild2.Size);
WriteBlobData(st_Bild3.Memory^, st_Bild3.Size);
WriteBlobData(st_Bild4.Memory^, st_Bild4.Size);
finally
st_Bild1.Free;
st_Bild1.Free;
st_Bild1.Free;
st_Bild1.Free;
end;
end;
Bei der Übergabe der Bilder via. "WriteBlobData" habe ich für Bild1 und Bild2 zwei kein Problem! Erst beim Bild3 gibt es ene Zugriffsverletzung!
Wenn ich die Abmessungen der Bilder anpasse und von 500x500 auf 64x64 reduziere, dann gibt es keine Zugriffsverletzung. (Das lässt auf ein Speicherproblem schließen.) Das ist aber keine Lösung!
Hat jemand eine Idee wie ich alle Bilder mit einer Auflösung von 500x500 übergeben kann?
Gruß Jan
Jan
|
|
Zitat
|