Becracker
Messages postés116Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention25 septembre 2005
-
21 août 2005 à 23:20
yvemoreau
Messages postés308Date d'inscriptionmardi 11 juin 2002StatutMembreDernière intervention26 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.
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 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...
Becracker
Messages postés116Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention25 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 ?
neodelphi
Messages postés442Date d'inscriptionjeudi 4 avril 2002StatutMembreDernière intervention11 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 !
Becracker
Messages postés116Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention25 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.
yvemoreau
Messages postés308Date d'inscriptionmardi 11 juin 2002StatutMembreDernière intervention26 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