Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TGifImage aus DLL? (https://www.delphipraxis.net/97757-tgifimage-aus-dll.html)

Mattze 15. Aug 2007 17:40


TGifImage aus DLL?
 
Hallo,

bisher habe ich immer TGifImage benutzt. Seit Jahren. Und war sehr zufrieden. Nun wollte ich mal etwas Neues ausprobieren und...
Folgendes Problem:
Ich habe für mein Hauptprogramm einen winzigen Grafikviewer. Den wollte ich nun in eine DLL auslagern. Das geht auch problemlos.
Wenn ich ihn dann aber aufrufe und ein GIF lade, wird allerhöchstens das erste Bild davon dargestellt. Bewegen tut sich nichts!
Das gleiche unverändert in der exe direkt, geht in Ordnung.
Das passiert bei einem (notwendigen) Aufruf per Show. Bei Showmodal wir sogar etwas animiert, aber auch nur ruckend.
Kennt jemand das Problem und weiß, was da zu machen ist?

Gruß
Mattze

mkinzler 15. Aug 2007 17:41

Re: TGifImage aus DLL?
 
Wo wird die Grafikausgabe gemacht, Dll oder Hauptprogramm?

Mattze 15. Aug 2007 18:56

Re: TGifImage aus DLL?
 
Hallo,

die Grafikausgabe erfolgt in der DLL.
Genauer:
Die DLL enthält ein Formular, eben den "Grafikviewer".
Das Hauptprogramm ist eine Art Explorer.
Nun hat der "Grafikviewer" zwei Aufgaben:
Wenn er gestartet ist und ich im Hauptprogramm eine Bilddatei anwähle, so wird diese sofort im "Grafikviewer" angezeigt. (Deshalb ist Show notwendig!)
Ich kann aber auch im "Grafikviewer" direkt eine Bilddatei zum Angucken öffnen.
(Beides ist für Gifs mit TGifImage offenbar leider nicht möglich, wenn der "Grafikviewer" in der DLL steckt. Ich habe mal ein rudimentäres GIF-Programm als "Grafikviewer" - macht nur GIF - erstellt.
Standalone ohne jedes Problem. Das gleiche in eine DLL gepackt und aus dem Programm mit Show aufgerufen, geht nicht!
Übrigens: Ist der "Grafikviewer" direkt ins Programm geladen - als unit -, geht es ohne Probleme.)

Gruß
Mattze

Mattze 17. Aug 2007 17:14

Re: TGifImage aus DLL?
 
Hallo,

also nun komme ich wieder an Grenzen.
Die Animation aus der DLL habe ich ja geschafft. (Es durfte in den Drawoptions nicht goAsync sein, sondern goDirectDraw. Interessanterweise muss bei Jedis JvGifAnimator "AsyncDraw" gewählt werden!)
Das jetzige Problem:
Ich schließe den Grafikviewer (bei laufendem GIF). Wenn ich nun das Hauptprogramm schließe (das ja den Grafikviewer mit show aufgerufen hat), hagelt es zwei Fehler:
1. Fehler in Anwendung: Unbekannter Softwarefehler in der Anwendung
2. Anwendungsfehler: EAccessViolation in Grafik.dll
(Ich hatte da auch schon "privileged operation" - oder so ähnlich und "External Exception".)

Schließe ich den Grafikviewer ohne vorher ein GIF geladen zu haben (z. Bsp. auch, wenn ein JPG geladen ist), geht alles ohne Probleme.
Es hängt also sicher mit dem Thread für das GIF zusammen. Wahrscheinlich mit "goValidateCanvas"!?
Aber da sehe ich noch nicht richtig durch. Weiß jemand, was man da schreiben muss bzw. wie man diese "Endefehler" verhindern kann?

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.

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