Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TGPGraphics.DrawImage (https://www.delphipraxis.net/170405-tgpgraphics-drawimage.html)

Satyr 15. Sep 2012 14:54

TGPGraphics.DrawImage
 
Huhu,

ich habe ein Problem in der TGPGraphics.DrawImage function. Zumindest glaube ich das es dort ist.
Ich nutze einige grafische Komponenten in meinem Programm. Von TMS, BuisnessSkinform, Jedis usw...
Seit neustem bekomme ich beim beenden meines Programms folgende Fehlermeldung:


---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Access violation at address 00579FFE in module 'Project.exe'. Read of address 03992DE4' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


Wenn ich dann Anhalte und mir von Delphi die verantwortliche Stelle zeigen lasse, werde ich zu:

Delphi-Quellcode:
function TGPGraphics.DrawImage(image: TGPImage; x, y: Integer): TStatus;
var
  nImage: GpImage;
begin
  if Assigned(Image) then
    nImage := Image.nativeImage // <- das markiert Delphi extra
  else
    nImage := nil;

  Result := SetStatus(GdipDrawImageI(nativeGraphics, nimage, x, y));
end;
der unit AdvGDIP geleited.
Aber wie weiter? Es bleibt wohl was im Speicher hängen, wenn ich das richtig interpretiere. Aber wie finde ich heraus was? Also von welcher Komponente?

Im Programm selbst läuft alles wie es soll. Erst beim Beenden kommt das Problem.
Gibt es einen Befehl einfach restlos alles vom Programm im Speicher zu entfernen?

Gruß,
Andreas

EWeiss 15. Sep 2012 15:03

AW: TGPGraphics.DrawImage
 
Du versuchst auf Image zuzugreifen währen dieses schon freigegeben wurde. ??

gruss

Bummi 15. Sep 2012 15:09

AW: TGPGraphics.DrawImage
 
Ist das korrenspondierende TGPGraphics- Objekt vielleicht schon freigegeben worden ...

EWeiss 15. Sep 2012 15:09

AW: TGPGraphics.DrawImage
 
Zitat:

Zitat von Bummi (Beitrag 1183029)
Ist das korrenspondierende TGPGraphics- Objekt vielleicht schon freigegeben worden ...

Meine ich doch ;)

gruss

Bummi 15. Sep 2012 15:11

AW: TGPGraphics.DrawImage
 
Dann schreibs doch :wink:
ich hatte es schon vermutete, Du kennst die Units ja eh sicher auswendig.

Satyr 15. Sep 2012 15:16

AW: TGPGraphics.DrawImage
 
Das ist ja das Problem... ich weiß nicht welches Objekt das verursacht...

EWeiss 15. Sep 2012 15:20

AW: TGPGraphics.DrawImage
 
Zitat:

Zitat von Satyr (Beitrag 1183032)
Das ist ja das Problem... ich weiß nicht welches Objekt das verursacht...

Du mußt doch sehen können ob TGPGraphics noch gültig ist. Oder?
bzw.. (Bummi) das Objekt welches mit TGPGraphics korrenspondiert ;)

gruss

Satyr 15. Sep 2012 15:31

AW: TGPGraphics.DrawImage
 
Woran sehe ich das?
Ich hab mehrere Objekte die das nutzen. Alle manuell auskommentieren, wäre arg aufwändig (Handelt sich um ne Art Kalender mit dynamisch erzeugten Grafiken für Events).

EWeiss 15. Sep 2012 15:35

AW: TGPGraphics.DrawImage
 
Zitat:

Zitat von Satyr (Beitrag 1183038)
Woran sehe ich das?
Ich hab mehrere Objekte die das nutzen. Alle manuell auskommentieren, wäre arg aufwändig (Handelt sich um ne Art Kalender mit dynamisch erzeugten Grafiken für Events).

BlaBLa := TGPGraphics.create..

Ist BlaBLa nun nil oder nicht? Wenn du die anwendung beendest.
Danach darfst du nicht mehr auf DrawImage zugreifen.

image scheint zu dem Zeitpunkt auch noch nicht freigegeben worden zu sein.


gruss

Satyr 15. Sep 2012 15:43

AW: TGPGraphics.DrawImage
 
Wenn ich das wüsste...
TGPGraphics.create wird von irgend einer Komponente aufgerufen. Oder auch von mehreren, ich weiß es nicht, weil ich selbst nur auf die Komponenten zugreife.
Also zum Beispiel so in der Art:

Delphi-Quellcode:
with AdvSmoothTimeLine1.TimeLineIndicators.Add do
        begin
          Shape := isPicture;
          Position := StrToDate(ASQLite3Query3.FieldByName('datum').AsString);
          hint := ASQLite3Query3.FieldByName('name').AsString;
           if FileExists(form1.programmdirectory.Caption+'\..\img\timeline\hs.png') then Picture.LoadFromFile(form1.programmdirectory.Caption+'\..\img\timeline\hs.png')
end;
Und das für mhrere Komponenten (verschiedene Kalenderansichten). Irgendeine davon greift auf TGPGraphics zurück... warscheinlich sogar alle. Ich weiß aber leider nicht welche die Exception auslöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz