Einzelnen Beitrag anzeigen

cocsy

Registriert seit: 12. Jul 2011
30 Beiträge
 
Delphi 11 Alexandria
 
#1

Rave Report Zugriffsverletztung bei Übergabe von einem Bild

  Alt 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
  Mit Zitat antworten Zitat