Pb avec une fenêtre.

Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005 - 21 août 2005 à 23:20
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008 - 24 août 2005 à 02:37
Salut les gars,



Je fais un prog' de conversion d'image et j'ai un ptit prob'.

J'ai un Bouton B1 et une OpenDialogPicture. Kan jeclique sur B1,
OpenDialogPicture s'ouvre et je sélectionne un fichier dont je récupère
le chemin dans un edit1.

Je passe maintenant à la conversion mais je dois d'abord vérifier que
edi1 contient bel et bien un chemin d'image. Alors je fais :



if not (FileExists(OpenDialogPicture.FileName))

then form2.showmodal

else ....



Donc si le fichier a été déplacé entre le moment de sa sélection avec
la OpenPictureDialog et le moment où on a cliqué sur le bouton
"Enregistrer", Form2 s'ouvre : C cki arrive. Le prob' c que Form2
s'ouvre ainsi qu'une autre fenêtre d'erreur ouverte par Windows où
apprait le message "Cannot Open File ....."Fichier.bmp" ). Je voudrais
donc que seule Form2 s'affiche et donc aucun message d'erreur de la
part du système.



Merci à tous.

-----------------------------------------

May Delphi and Php change the world ....

5 réponses

neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
22 août 2005 à 07:13
Est-ce que le message de la part du système est bloquant (tu es obligé de clicker pour continuer a utiliser ton programme) ? Si oui c'est qu'il apparait après que form2 s'ouvre, et donc que le message ne provient pas des deux lignes que tu nous montre...

neodelphi
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
22 août 2005 à 17:12
Oui, le messagede Windows est blockant. Le code que j'ai écrit ne sert
bien sûr qu'à ouvrir la Form2 et non pas la fenêtre de Windows. Donc
ya-t-il un moyen d'interdire son apparition ou du moins la cacher à
l'utilisateur ?



Merci bcp.

-----------------------------------------

May Delphi and Php change the world ....
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
22 août 2005 à 19:14
Si tu voit ta fenetre s'afficher avant le message d'erreur windows c'est que le problème viend de plus bas... pourrais-u nous montre le code de ta procédure si ça fait pas 200 lignes ?
Sinon une fois idéntifiée la ligne qui t'envoi le message windows il devrait être possible de l'empecher à l'aide d'un try catch, mais faut faire attention et ne pas en abuser pour virer un problème qui peut être résolu de facon plus conventionnelle !

neodelphi
0
Becracker Messages postés 116 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 25 septembre 2005
22 août 2005 à 20:34
Salut NeoDelphi,



Le message d'erreur de Windows est normal car le fichier à convertir
n'exisite plus.Ma Form2 s'affiche avant le message d'erreur donc
d'après ce que tu dis, c que il faut voir plus bas que le code qui
génère la form2. Voila en gros à koi ca ressemble pour convertir un gif
to un jpeg :

procedure TForm1.SauverClick(Sender: TObject);
var
JPEGs : TjpegImage;
Gif : Tgifimage;
begin

OpenPicture.execute

if not (FileExists(OpenDialogPicture.FileName))

then form2.showmodal

else



if (FileExists(OpenDialogPicture.FileName)) then
begin
Gif := Tgifimage.Create;
JPEGs := TJPEGImage.Create;
Gif.LoadFromFile(OpenPicture.FileName);
JPEGs.CompressionQuality:=trackbar.position;


JPEGs.Assign(Gif.Images.SubImages[0].Bitmap);



if SavePicture.execute=true then

JPEGs.SaveToFile(SavePicture.filename+ '.jpg');

JPEGs.Free;

gif.Free;

end;

end;



Je voudrais ossi savoir comment utiliser Try Catch.



Merci bcp l'ami pout ton aide.

[file:///C:/My%20Shared%20Folder/14%20-%20Fuck%20Me%20I%27m%20Famous%20-%20Bob%20Sinclar%20-%20Who%20Need%20Sleep%20Tonight.mp3 ]
-----------------------------------------

May Delphi and Php change the world ....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yvemoreau Messages postés 308 Date d'inscription mardi 11 juin 2002 Statut Membre Dernière intervention 26 septembre 2008
24 août 2005 à 02:37
le mieux c'est d'utiliser 2 try emboiter donc le premier exécute un finally et le second s'occupe des exception ,ce qu'il y a de bien c'est que finally s'exécutera même si une exception survient
try c'est comme un begin end
sauf que l'on doit aubligatoirement insérer un except ou un finally
donc
try
except begin end;
end;

ou

try
finally ; //si 1 seule instruction sinon begin end;
end;

Donc

try // 1er try
try // 2er try

if not (FileExists(OpenDialogPicture.FileName))
then form2.showmodal;
else
begin

if (FileExists(OpenDialogPicture.FileName)) then
begin
Gif := Tgifimage.Create;
JPEGs := TJPEGImage.Create;
Gif.LoadFromFile(OpenPicture.FileName);
JPEGs.CompressionQuality:=trackbar.position; JPEGs.Assign(Gif.Images.SubImages[0].Bitmap);

if SavePicture.execute=true then
JPEGs.SaveToFile(SavePicture.filename+ '.jpg');
end;

// si tout se passe correctement on exécute le finally plus bas
// sinon que se passe t'il ?
except:try // 3er try
if not (FileExists(OpenDialogPicture.FileName)) then
tfilestream.create(OpenDialogPicture.FileName,fmcreate);
JPEGs.SaveToFile(SavePicture.filename+ '.jpg');
except: // encore ??? ben là ça va mal ...
begin
application.messageBox
('impossible de creer le fichier ,Que voulez-vous faire réaissayer','???????',mb_yesNoRetry);
end;//fin except du 3er try
end; // fin 3er try
end;//fin except du 2er try
end; // fin 2er try

finally
begin
JPEGs.Free;
gif.Free;
end;
end; //fin 1er try

end; //fin procedure

bon j'ai rien testé lol , le compilateur te diras si y manque un end ou pas ...
yve
0
Rejoignez-nous