AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TGifImage aus DLL?

Ein Thema von Mattze · begonnen am 15. Aug 2007 · letzter Beitrag vom 17. Aug 2007
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

TGifImage aus DLL?

  Alt 15. Aug 2007, 17:40
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TGifImage aus DLL?

  Alt 15. Aug 2007, 17:41
Wo wird die Grafikausgabe gemacht, Dll oder Hauptprogramm?
Markus Kinzler
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

Re: TGifImage aus DLL?

  Alt 15. Aug 2007, 18:56
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
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#4

Re: TGifImage aus DLL?

  Alt 17. Aug 2007, 17:14
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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