Bonsoir à tous,
Pour gérer les erreurs nous avons le système avec les Exceptions dans mon cas :
En mode "debug" nous avons cette petite fenêtre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if not Assigned(Result) then raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)', [ext, 'GLZImageFile' + UpperCase(ext)]);
et en mode "Conception" nous avons celle-ci :
Ce n'est pas le mode débug qui me pose problème, mais à la conception
Par exemple dans mon programme pour charger un fichier j'ai la fonction suivante :
Dans ce cas l'exception fait irrémédiablement sortir de la procedure et Screen.Cursor n'est pas exécuté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TMainForm.FormDropFiles(Sender: TObject;const FileNames: array of String); begin BmpFileName := FileNames[0]; Screen.Cursor:=crHourGlass; ImageView1.Picture.LoadFromFile(BmpFileName); // ---> L'EXCEPTION EST LEVEE DANS CETTE PROCEDURE Screen.Cursor:=crDefault; lblBmpName.Caption:=BmpFileName; IsUpdated:=True; ImageView1.Invalidate; end;
J'ai également testé ça : (même si il faut rajouter les unités Forms et Controls dans le Uses de l'implementation )
Idem :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function TGLZImageFileFormatsList.FindFromFileName(const fileName: string): TGLZBitmapClass; var ext: string; Screen : TScreen = nil; begin ext := ExtractFileExt(Filename); System.Delete(ext, 1, 1); Result := FindExt(ext); if not Assigned(Result) then begin raise EInvalidImageFile.CreateFmt('Format de fichier non supporté (%s,%s)', [ext, 'GLZImageFile' + UpperCase(ext)]); Screen.Cursor:=crDefault; end; end;n'est pas exécuté.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Screen.Cursor:=crDefault;
Le plus simple serait que ma fonction retourne un boolean, mais dans ce cas il faudrait que toute (une majorité retourne un boolean) et dans dans certain cas ce n'est pas faisable.
Donc, concernant les exceptions :
- Existe-t-il une autre façon de procéder pour avoir plus de contrôles ?
- Faut-il se passer des exceptions et gérer soit même ce genre d'erreur afin de ne pas perturber le bon fonctionnement d'un programme ?
- Faut-il utiliser les exceptions que dans des cas "Critiques" (Acces dans un pointer par exemple) ?
En gros quel serai le meilleur chemin à suivre ?
Concernant la traduction
- Peux-t-on intégrer des fichiers "PO" pour la traductions des divers messages. Et lier ceux-ci à une unité ou bien un paquet de conception ? si oui comment faire marcher tout ce petit monde au pas ?
- La procédure à suivre est-t-elle la même que pour traduire une application ?
Merci
A+
Partager