![]() |
Rave Report Zugriffsverletztung bei Übergabe von einem Bild
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 |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Wenn ich das Bild als MetaFile erzeuge (statt einer Bitmap), dann beträgt die Größe des Stream für ein Bild 45900 Byte. Damit verschiebt sich das Problem von Bild3 auf Bild4.
Ich möchte noch einmal kurz betonen das Problem ist nicht von der Prozedur "GetPicture" oder vom Bild abhängig! Die Zugriffsverletzung kommt immer bei der dritten bzw. vierten Übergabe (via. "WriteBlobData") Habe ich etwas vergessen vorher anzugeben? Gruß |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
hoi,
in einem anderen Beispiel habe ich mal gesehen das vorher der Speicher reserviert wurde bei Verwendung von WriteBlobData. Vllt. hilft das schon. So in etwa:
Delphi-Quellcode:
cya
GetMem(Buffer,Länge);
WriteBlobData(Buffer,Länge); FreeMem(Buffer); |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Hallo soulies,
leider hilft es nicht weiter, :cry: die Übergabe funktioniert ja auch, kommt der Rave Report damit vieleicht nicht klar? ich verwende Rave Report: BE 7.6.2 hat jemand noch eine Idee? |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
hoi,
noch was
Delphi-Quellcode:
sollte bestimmt sein
finally
st_Bild1.Free; st_Bild1.Free; st_Bild1.Free; st_Bild1.Free; end;
Delphi-Quellcode:
daher wahrscheinlich auch die zugriffsverletzung
finally
st_Bild1.Free; st_Bild2.Free; st_Bild3.Free; st_Bild4.Free; end; cya |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Warum nicht gleich so?
Delphi-Quellcode:
procedure TMyReportingObj.RvGetRow(Connection: TRvCustomConnection);
var st_Bild1, st_Bild2, st_Bild3, st_Bild4: TMemoryStream; begin st_Bild1 := TMemoryStream.Create; try 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; try GetPicture(st_Bild2, 500, 500); st_Bild3 := TMemoryStream.Create; try GetPicture(st_Bild3, 500, 500); st_Bild4 := TMemoryStream.Create; try GetPicture(st_Bild4, 500, 500); with Connection do 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_Bild4.Free; end; finally st_Bild3.Free; end; finally st_Bild2.Free; end; finally st_Bild1.Free; end; end; |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Zitat:
ja das sollte es! Zitat:
nein deswegen nicht! (ich hatte mich nur verschrieben) die Zugriffsverletzung kommt unmittelbar beim Aufruf von "WriteBlobData(st_Bild3.Memory^, st_Bild3.Size);" |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
@DeddyH
naja und was soll die Verschachtelung bringen? |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Ich habe es zwar per C&P auch ohne, aber fehlt da nicht ein begin-end nach dem with?
[edit] Zitat:
|
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
ja, bei deinem Quellcode fehlt nach der with -anweisung das begin und end!
(bei mir wird es auch im Fehlerfall freigegeben!) muss ich vieleicht bei der Rave-Datei noch irgend einen Parameter setzen? |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Zitat:
|
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
hoi,
also folgendes klappt bei mir ohne probleme
Delphi-Quellcode:
Ist dem RvProject die richtige *.rav Datei mitgegeben worden?
procedure TForm1.RvCustomConnection1GetCols(
Connection: TRvCustomConnection); begin Connection.WriteField('Bild1', dtGraphic, 20, '', ''); Connection.WriteField('Bild2', dtGraphic, 20, '', ''); Connection.WriteField('Bild3', dtGraphic, 20, '', ''); end; procedure TForm1.RvCustomConnection1GetRow( Connection: TRvCustomConnection); var Bild,Bild2,Bild3: TMemoryStream; begin Bild := TMemoryStream.Create; Bild2 := TMemoryStream.Create; Bild3 := TMemoryStream.Create; try Bild.LoadFromFile( 'C:\test1.bmp' ); Bild2.LoadFromFile('C:\test2.bmp'); Bild3.LoadFromFile('C:\test3.bmp'); Connection.WriteBlobData(Bild.Memory^, Bild.Size); Connection.WriteBlobData(Bild2.Memory^, Bild2.Size); Connection.WriteBlobData(Bild3.Memory^, Bild3.Size); finally Bild.Free; Bild2.Free; Bild3.Free; end; end; Hast Du im Rave Projekt die Dataview-Connection richtig eingerichtet und den Bitmap Feldern zugewiesen ? cya |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
hi soulies,
wie Groß sind deine Bilder? Kannst du bitte bei dir mal mit 5 oder 6 Bilder probieren. Ja, *.rav Datei & Dataview-Connection sind richtig eingerichtet und den Bitmap Feldern zugewiesen. Es funktioniert wirklich alles, solange ich nicht mehr als 2 Bilder verwende. Deswegen gehe ich davon aus das es sich um ein Einstellungsproblem handelt. |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
hoi,
auch mit 6 Bildern keine Probleme gehabt
Delphi-Quellcode:
PS: Delphi 7, Rave V5.0
Bild.LoadFromFile('C:\test1.bmp'); // 837 x 423 px 1.00 MB
Bild2.LoadFromFile('C:\test2.bmp'); // 640 x 521 px 0.97 MB Bild3.LoadFromFile('C:\test3.bmp'); // 911 x 877 px 2.34 MB Bild4.LoadFromFile('C:\test4.bmp'); // 785 x 323 px 0.74 MB Bild5.LoadFromFile('C:\test5.bmp'); // 256 x 256 px 0.19 MB Bild6.LoadFromFile('C:\test6.bmp'); // 250 x 327 px 0.24 MB cya |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Vielen Dank soulies,
mit Delphi 7, Rave V5.0 hatte ich damals die *.rav-Datei und das Projekt erstellt und da hatte ich auch nicht solche Probleme. :?: entweder hat Rave BE 7.6.2 einen richtig blöden Fehler oder ich! :evil: Gruß |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Hallo,
Das von mir beschriebene Problem hatte auch ![]() er hat zwar sein Problem nicht gelößt aber eine Möglichkeit gefunden mit der er arbeiten kann. Gruß |
AW: Rave Report Zugriffsverletztung bei Übergabe von einem Bild
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Wenn ich die Bilder al Metafile übergebe, komme ich noch nicht weiter! Aber wenn ich sie als JPEG übergebe! :-D Nun habe ich das Problem das der Rave Report von Hause aus nicht mit JPG klar kommt. :lol: Hierfür benötigt man ein AddOn. (für Rave Report 7 siehe Anhang: "nd_jpeg70.zip") Diese musste ich noch einmal neu erzeugen damit diese geeignet ist für Delphi 2009 und Rave Report 7.6.2! 8-) Package im Rave installieren, :cyclops: Und nun funktioniert es! Alle Bilder werden nun als JPG übergeben. :!: Das Problem ist nicht gelößt, aber man kann weiterarbeiten. :thumb: Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz