AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AnimatePNG
Thema durchsuchen
Ansicht
Themen-Optionen

AnimatePNG

Ein Thema von EWeiss · begonnen am 20. Mär 2017 · letzter Beitrag vom 8. Jun 2018
Antwort Antwort
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#1

AW: AnimatePNG

  Alt 23. Mär 2017, 18:19
Hmm..

Habe mir deinen Src mal vorgenommen..

Da ich nur Delphi 6 habe, musste ich die ganzen Regionen entfernen, deine File.. Sachen strkt auf WideString und W-Funktionen umstellen und siehe da, läst sich unter D6 kompilieren, starten und debuggen..

Erster Fehler:

Delphi-Quellcode:
procedure TAnimateGif.LoadGif;
var
  FrameDelay: TFrameDelay;
  DC: HDC;
  GuidFDT: TGUID;
begin

  gp.FrameCount := 0;

  if GetGifFrameCount(gp.GifImage[SelectedIndex], gp.FrameCount) = S_OK then
  begin
    If (gp.FrameCount - 1) = 0 then
    begin
      SetLength(FrameDelay, 0); // <- Hier das Array löschen

      FrameDelay[0] := 0; // <- Aber hier auf das erste (nicht vorhanden) Element zugreifen!
      FrameLoopCount := 0;
      LoopCount := FrameLoopCount + 1;

      CurGifPlayInfo.GifDelay := lFrameDelay[0]; // Und wo kommt das array nun schon wieder her (Ich weis GLOBAL)
      CurGifPlayInfo.GifFrame := 1;
      CurGifPlayInfo.GifFrames := gp.FrameCount;
      CurGifPlayInfo.GifLoop := LoopCount - 1;
      CurGifPlayInfo.GifLoops := FrameLoopCount;
      // Bild anzeigen
      DC := GetDC(GraphicContainer);
      DrawGifFrame(gp.GifImage[SelectedIndex], GuidFDT, ShowFrame, DC);
    end
    else
    begin
Wenn ich nun das korrigiert habe (setlength auf 1) kann ich das ganze starten.

Ich kann dann noch sehen, dass das Formular erstellt wird und das erste GIF dort angezeigt wird.
Danach erhalte ich 4 Exceptions und die App schmiert ab .

Da ich auf alle deine Funktionen Haltepunkte gesetzt hatte, außer auf Result := SKAERO_DefWindowProc(WinHandle, Msg, wP, lP) da dies ja andauernd auch durch steppen immer wieder aufgerufen wird, konnte ich erkennen, dass die Exception aus deiner DLL kommen!
Alles andere läuft durch.

Zu meinem System:
Windows 8.1 Home.
Delphi 6 Prof

Da ja auch andere beim Starten direkt die Exceptions um die Ohren gehauen bekommen, gehe ich von einem Bug auf der anscheinend nur bei Dir nicht auftritt...
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: AnimatePNG

  Alt 23. Mär 2017, 18:34
Zitat:
Da ja auch andere beim Starten direkt die Exceptions um die Ohren gehauen bekommen, gehe ich von einem Bug auf der anscheinend nur bei Dir nicht auftritt...
Danke für den Test. Holger
Wieder mal eine seltsame Sache keine Problem hier sieht man an den Bildern.

Mich würde mal interessieren welche Gif Datei du verwendest.

EDIT:
Ich komme hier gar nicht rein!
If (gp.FrameCount - 1) = 0 then

Ich behaupte also das du ein Nicht animiertes GIF verwendest. (Das habe ich noch nicht probiert)
Das mal versucht ?


gruss

Geändert von EWeiss (23. Mär 2017 um 18:44 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#3

AW: AnimatePNG

  Alt 23. Mär 2017, 18:52
Hmm..

Wenn ich ein Animiertes GIF verwende, dann knallt es schon bei SKAERO_PaintDoubleBuffer(WinHandle, ps.HDC); in

Delphi-Quellcode:
    WM_PAINT:
      begin
        BeginPaint(WinHandle, ps);
        SKAERO_PaintDoubleBuffer(WinHandle, ps.HDC);
        EndPaint(WinHandle, ps);
        Result := 0;
        Exit;
      end;
(Fehlermeldung angehängt..)

Bei einem nicht anmierten Gif wird diese geladen und angezeigt, jedoch knallt es dann später mit einer vergleichbaren Fehlermeldung.

Diese Meldungen kann ich auch nicht durch try.. except abfangen, sollten somit aud deiner DLL kommen


Edit:
Auch mit deinem Testbild knallt es bei SKAERO_PaintDoubleBuffer..
Mit Delphi 6 und dem TGifImage läst sich das Bild jedoch problemlos anzeigen...
(Hab da nen selbstgebauten PictureViewer )
Miniaturansicht angehängter Grafiken
unbenannt.jpg  

Geändert von HolgerX (23. Mär 2017 um 18:56 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: AnimatePNG

  Alt 23. Mär 2017, 18:57
Seltsam aber ich kann es leider nicht nachvollziehen.
Danke.

Zitat:
Mit Delphi 6 und dem TGifImage läst sich das Bild jedoch problemlos anzeigen...
Glaube ich dir nur ich kann und möchte keine Komponente verwenden. (nonvcl)

gruss

Geändert von EWeiss (23. Mär 2017 um 19:00 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#5

AW: AnimatePNG

  Alt 23. Mär 2017, 19:07
Hmm..



Seltsam aber ich kann es leider nicht nachvollziehen.
Danke.

Zitat:
Mit Delphi 6 und dem TGifImage läst sich das Bild jedoch problemlos anzeigen...
Glaube ich dir nur ich kann und möchte keine Komponente verwenden. (nonvcl)

gruss

Schön.. Und womit lädst Du dann das Gif?
Auch GDI+ ist (entfernt) nichts anderes wie eine Komponente..

Und TGifImage kannste ja auch als Anhalt nehmen.
Brauchst dort doch nur die VCL Sachen rausschmeißen und kannst dann auch ohne VCL damit arbeiten..

Da haste alles Drinnen, um eine Gif-Datei zu laden, incl. Animated.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: AnimatePNG

  Alt 23. Mär 2017, 19:12
Hmm..



Seltsam aber ich kann es leider nicht nachvollziehen.
Danke.

Zitat:
Mit Delphi 6 und dem TGifImage läst sich das Bild jedoch problemlos anzeigen...
Glaube ich dir nur ich kann und möchte keine Komponente verwenden. (nonvcl)

gruss

Schön.. Und womit lädst Du dann das Gif?
Auch GDI+ ist (entfernt) nichts anderes wie eine Komponente..

Und TGifImage kannste ja auch als Anhalt nehmen.
Brauchst dort doch nur die VCL Sachen rausschmeißen und kannst dann auch ohne VCL damit arbeiten..

Da haste alles Drinnen, um eine Gif-Datei zu laden, incl. Animated.
GDI+ ist ein Bibliothek (DLL) hat nichts mit VCL zu tun.
Schließlich packst du dafür keine Komponente auf die Form oder?

Ich verwende die API von MS die läuft auch bei anderen sowie bei mir.

Umbauen möchte ich jetzt da nichts mehr.
Hat mich viel zeit gekostet das zu implementieren.
Meine DLL würde dir nichts nutzen in Verbindung mit D6.

Installiere 2010 dann können wir darüber reden.

TGifImage basiert auf GDI zu viel Umstellungen davon etwas zu verwenden.

gruss

Geändert von EWeiss (23. Mär 2017 um 19:15 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#7

AW: AnimatePNG

  Alt 24. Mär 2017, 03:52
Hmm..


Meine DLL würde dir nichts nutzen in Verbindung mit D6.

Sorry, aber dann ist deine DLL schrot..

Ich kann unter Delphi 6 JEDE 32Bit-DLL von MS oder wem auch immer einbinden und verwenden.

Egal, ob diese mit C++ D2010 DXE oder mit was auch immer kompiliert wurde, solange die Header nur kompatible sind.
Da es sich um eine Delphi DLL sollte das von Haus aus so sein!

Dein SKAERO_INIT - Aufruf mit Laden scheint ja zu funktionieren, somit sollte D6 und diese DLL kein Problem haben, nur die DLL scheint nicht OK zu sein.

Da es, soweit ich gesehen habe, niemand geschaft hat dein Programm bei sich zu testen, da es direkt mit Exceptions um sich wirft.
Und es hier egal ist, welches Delphi eingesetzt wird, da diese direkt die exe gestartet haben, sollte es wohl nicht an D6 liegen!

So, D6 ist nicht UNICODE oder hat auch keine Generics, jedoch habe ich in den letzten Jahren gelernt, dass ich mit D6 immer noch alles machen kann, was auch mit XE10 (in der Basis-Professional Version ohne Mobile) zu machen ist.

Egal... Darüber zu diskutieren ist hier falsch..

Versuche mal selber deine App auf einem 'anderen' System, wie deinem Entwicklersystem zu benutzen und melde dann zurück, wie viele Exceptions du dort bekommen hast...

Ich bin hier raus..
  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 15:04 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-2025 by Thomas Breitkreuz