Si erreur [Résolu]

cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 7 août 2004 à 09:24 - Dernière réponse : cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention
- 9 août 2004 à 12:04
Bonjour à tous,
Voilà je cherche à utiliser la fonction On resume Next (VBA Excel,continuer si erreur)
Je ne sais pas si elle existe en delphi et si oui comment l'utiliser.
Merci
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 8 août 2004 à 12:36
3
Merci
Delphiprog, en somme, c'est ma méconnaissance de la syntaxe du VBA qui fait que j'ai donné la réponse qu'attendait tigrou19... ;)

tigrou19, si je comprends bien ce que tu veux faire, je te conseille une autre approche, en vérifiant si le fichier que tu veux ouvrir existe.
On utilise pour cela la fonction "FileExists" qui retourne un Boolean.

Exemple :

procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
  Label7.Caption := FormatDateTime('dd mmmm yyyy', MonthCalendar1.Date);
  Caption := 'Calendar';
  Memo1.Clear;
  try
    if FileExists(Label1.Caption) then
      Memo1.Lines.LoadFromFile(Label7.Caption)
    else
      Caption := 'Calendar - Pas de note à cette date';
  except
    on EFOpenError do ShowMessage('Fichier introuvable');
  end;
end;

C'est beaucoup plus "propre", on garde la gestion de l'erreur pour le cas où...

Bonne prog'   :-p 

Merci japee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de japee
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 7 août 2004 à 11:06
0
Merci
Avec Delphi, tu peux protéger ton code et gérer les erreurs en utilisant un bloc "try..except..end;"

Exemple concret avec une magnifique erreur dûe à la division d'un réel par zéro :

procedure TForm1.Button1Click(Sender: TObject);
var a, b: Real;
begin
  try
    b := 0;
    a := 10 / b;
    ShowMessage(FloatToStr(a));
  except
    on EZeroDivide do ShowMessage('Division d''un Real par zéro !');
  end;
  ShowMessage('L''application continue');
end;


L'espace entre "except" et "end;" te permet de gérer une erreur éventuelle.

Les instructions entre "except" et "end;" ne sont pas obligatoires, le code qui suit ce bloc s'exécutera de toute manière.

Tu n'es pas obligé de préciser non plus le type d'erreur que tu attends.

Attention, question souvent posée sur ce forum :
Si tu exécutes ton code dans l'environnement Delphi, le compilateur te signalera l'erreur et arrêtera l'exécution, c'est normal. Pour tester, tu dois lancer l'exécutable directement.

Bonne prog' :-p
Commenter la réponse de japee
cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 7 août 2004 à 16:08
0
Merci
Bonjour Japee et le forum
merci pour cette reponse
@+Didier
Commenter la réponse de cs_tigrou19
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 7 août 2004 à 23:22
0
Merci
Bravo Japee pour cette brillante présentation de la gestion des exceptions.
Mais la question de tigrou19 attendait une réponse surement différente. Hélas pour lui, le langage Pascal n'offre pas de structure équivalente à la reprise de l'exécution à l'instruction suivant celle ayant provoqué une erreur.
Ou alors, mais ce n'est pas recommandé (ni recommandable d'ailleurs), il faudrait encadrer chaque instruction de la sorte :
try
  Instruction 1
except
  //ne fait rien et passe à la suite
end;

try
  Instruction 2
except
  //ne fait rien
end;

Vous imaginez la lourdeur du code et les risques de voir le programme déraper si on s'amuse à ignorer toutes les erreurs pouvant se produire ?
Ce n'est pas une lacune du langage Pascal, c'est juste une question de bon sens : si une erreur se produit, on arrête tout au lieu de la laisser se propager et de passer des heures à déboguer.
Commenter la réponse de cs_Delphiprog
cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 8 août 2004 à 01:19
0
Merci
Re bonsoir
voilà une partie du code pour lesquel j'avais poser cette question, je ne sais pas si c'est correct(je débute), mais avec cette methode je n'ai plus le message d'erreur quand le fichier n'existe pas
Encore merci

procedure TForm1.MonthCalendar1Click(Sender: TObject);

begin
label7.Caption:=formatdatetime('dd'' ''mmmm'' ''yyyy',monthcalendar1.date);
try
memo1.Lines.LoadFromFile(label7.caption);
form1.Caption:='Calendar';
except
Memo1.Clear;
form1.Caption:='Calendar Pas de note à cette date';
end;
end;
Commenter la réponse de cs_tigrou19
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 8 août 2004 à 07:11
0
Merci
Pas de problème, le code est correct.
La question n'avait donc rien à voir avec la recherche d'une équivalence de "On error resume next" existant en VBA. %-6
Commenter la réponse de cs_Delphiprog
deaphrothe 10 Messages postés dimanche 9 février 2003Date d'inscription 8 août 2004 Dernière intervention - 8 août 2004 à 12:50
0
Merci
pour répondre a la premiere réponse de japee, la division d'un réel par zero, c possible tant que R est différent de 0. ça fais l'infinie :))) ce n'est qu'un détail mais c important pour programmer une calculette avancé
Commenter la réponse de deaphrothe
japee 1799 Messages postés vendredi 27 décembre 2002Date d'inscription 19 juillet 2018 Dernière intervention - 8 août 2004 à 12:56
0
Merci
Ok, deaphrote, t'es vachement plus calé en maths que moi. [;]
Je prends bonne note.
Mais au fait, 0 / 0, ça devrait faire 1, non ? (pas le temps de rechercher mon vieux bouquin de maths...)

Bonne prog' :-p
Commenter la réponse de japee
deaphrothe 10 Messages postés dimanche 9 février 2003Date d'inscription 8 août 2004 Dernière intervention - 8 août 2004 à 12:59
0
Merci
0/0 est un cas indéterminé ;)
et si tu veux chercher dans ton bouquin de math, cherche dans la partie limite, cas d'indétermination

voila c juste une ptite info comme ça en passant lol
Commenter la réponse de deaphrothe
cs_tigrou19 67 Messages postés vendredi 15 août 2003Date d'inscription 5 décembre 2005 Dernière intervention - 9 août 2004 à 12:04
0
Merci
Bonjour Jappé et le forum
c'est vrai que je me suis mal exprimé,mais je ne savais pas trop comment poser ma question ne connaissant rien en delphi j'ai voulu comparer ce que je voulait faire avec le vba ce n'était pas
explicit,j'essayerait d'être plus clair la prochaine fois.
Encore merci
@+Didier
Commenter la réponse de cs_tigrou19

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.