1 pièce(s) jointe(s)
Informatique aléatoire : je commence à en avoir franchement marre...
Citation:
Envoyé par
jurassic pork
il existe un autre composant pour visualiser des gifs animés , c'est le THTMLviewer (ou TFrameViewer) qui se trouve dans le paquet HTMLViewer ( disponible dans les paquets en ligne)
--snip--
En pièce jointe le gif animé google.
Le même code (j'insiste sur le même code car c'est carrément le même binaire : compilé hier soir, je ne passe pas par l'EDI ce matin) avec un bête bouton qui va bêtement ouvrir un bête fichier dont l'ami J.P nous a montré qu'il était plaisant et en ce qui me concerne je me contente de lire son nombre d'images, avec une gestion d'erreurs sophistiquée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| // essai avec HtmlGif1 et HTMLGif2 de THtmlViewer
procedure TForm1.Button1Click(Sender: TObject);
var
str: TMemoryStream;
aGif: HTMLGif2.TGIFImage;
s: string;
FPUExceptionMask: TFPUExceptionMask;
begin
if not opd.Execute then exit;
s := '';
str:= TMemoryStream.Create;
str.LoadFromFile(opd.FileName);
str.Position:=0;
aGif:= HTMLGif2.TGIFImage.Create;
try
{$IFDEF LCLGTK2}
FPUExceptionMask := GetExceptionMask;
SetExceptionMask(FPUExceptionMask - [exInvalidOp, exZeroDivide, exOverflow]); // unmask
{$ENDIF}
try
aGif.LoadFromStream(str);
if aGif.IsAnimated then s:='yes ' else s:='no ';
s := s + IntToStr(aGif.NumFrames) + ' ' + IntToStr(aGif.NumIterations);
Caption := s;
// en attente pour la suite
finally
//ShowMessage('test de passage...');// ok, vu dans tous les cas
{$IFDEF LCLGTK2}
SetExceptionMask(FPUExceptionMask);// return previous masking immediately, we must not let Gtk2 internals to be called without the mask
{$ENDIF}
str.Free;
aGif.Free;
end;
except
ShowMessage('Ooops...');
end;
end; |
Et vous l'aurez compris, des fois j'ai le ShowMessage('Ooops...'); et des fois j'ai le nombre d'images dans la barre de titre.
Et comment je fais pour avoir le nombre d'images affiché, après le message d'erreur ? Je reclique pour choisir un autre fichier, tout simplement, puis je reclique pour choper l'image de J.P et si c'est pas bon je recommence.
Au bout d'un nombre aléatoire d'essais, un coup ça tombe en marche et je découvre que ce fichier a 42 images.
Pièce jointe 383639
Ça me gonfle, mais alors ça me gonfle, même pas vous imaginez !
Rien n'est fiable...
D'ailleurs, en étudiant hier soir le code du THtmlViewer, je suis tombé sur ça que j'ai noté à votre intention et là, franchement, ça ne donne pas envie de rigoler :
Code:
1 2 3 4 5
| {$ifdef Linux}
PaintPanel.Update;
{$else}
PaintPanel.Invalidate;
{$endif} |
Parce que c'est le genre de choses qu'on va oublier, concentré sur les problèmes de plus haut niveau, et comme je l'avais déjà signalé, "write once, compile anywhere", execute et bim bam boum selon la cible :cry:
PS : merci pour l'idée de ce compo, J.P, mais c'est trop compliqué de n'extraire que la partie "viewer de gif".