uses
SysUtils, Classes, QGraphics, QControls, QForms, QDialogs,
QStdCtrls, QButtons;
type
TForm1 = class(TForm)
BitBtnExcept: TBitBtn;
BitBtnFinally: TBitBtn;
Edit1: TEdit;
procedure BitBtnExceptClick(Sender: TObject);
procedure BitBtnFinallyClick(Sender: TObject);
private
{ Déclarations privées
}
public
{ Déclarations publiques
}
end;
var
Form1: TForm1;
implementation
{ dans unit SysUtils (source\rtl\sys):
- EConvertError = class(Exception);
-EInOutError = class(Exception)
public
ErrorCode: Integer;
end;
}
{$R *.dfm}
procedure TForm1.BitBtnExceptClick(Sender: TObject);
const NomFichier='Fichier.txt';
var
F: TextFile;
S: string;
begin
AssignFile(F,NomFichier );{ Fichier
attaché }
try
Reset(F);
{ s'il y a un incident ici, le fichier n'est pas ouvert}
Readln(F, S); {
Lecture de la première ligne du fichier }
Edit1.Text := S; { copie de la
chaîne dans Edit1 }
Erase(F);
{ on ne peut effacer que si CloseFile a été lancé
!}
CloseFile(F);
{ Fermeture du fichier }
except
on EInOutError do begin
MessageDlg('Fichier : '+ NomFichier+#13#10+'Arrêt
du chargement',
mtError, [mbOk], 0);
Form1.caption:='Incident au chargement';
Edit1.text:='';
end;
end;
try //Etat du fichier
après gestion de l'incident (le fichier n'est pas fermé)
CloseFile(F);
{ on tente un fermeture du fichier }
except
on Elocale:EInOutError do begin //accès
au message de l'exception locale
MessageDlg('Fichier : '+ NomFichier+#13#10+'incident
de fermeture',
mtError, [mbOk], 0);
Form1.caption:=Elocale.message;
Edit1.text:='Code Erreur = '+inttostr(Elocale.ErrorCode);
//accès au code erreur de cette exception
end;
end
end;
procedure TForm1.BitBtnFinallyClick(Sender: TObject);
//traitement d'une exception redéclenchée
const NomFichier='Fichier.txt';
var
F: TextFile;
S: string;
i:integer;
begin
AssignFile(F,NomFichier );{ Fichier attaché
}
try
Reset(F);
try
Readln(F, S); {
Lecture de la première ligne du fichier }
Edit1.Text := S; { copie
de la chaîne dans Edit1 }
Erase(F);
{ Exception accès refusé !}
finally //si incident
on redéclenche la même exception pour la gérer
CloseFile(F);
{ Fermeture du fichier }
end
except
on Elocale:EInOutError do begin //accès
au message de l'exception locale
MessageDlg('Fichier : '+ NomFichier+#13#10+'Arrêt
du chargement E/S',
mtError, [mbOk], 0);
Form1.caption:=Elocale.message;
Edit1.text:='Code Erreur = '+inttostr(Elocale.ErrorCode);
//accès au code erreur de cette exception
end;
on Elocale:EConvertError do begin //accès
au message de l'exception locale
MessageDlg('Fichier : '+ NomFichier+#13#10+'Arrêt
du chargement conv',
mtError, [mbOk], 0);
Form1.caption:=Elocale.message;
end;
end ;
try //Etat du fichier après
gestion de l'incident (le fichier est fermé)
CloseFile(F); {
on tente un fermeture du fichier }
except
on Elocale:EInOutError do begin //accès
au message de l'exception locale
MessageDlg('Fichier : '+ NomFichier+#13#10+'incident
de fermeture',
mtError, [mbOk], 0);
Form1.caption:=Elocale.message;
Edit1.text:='Code Erreur = '+inttostr(Elocale.ErrorCode);
//accès au code erreur de cette exception
end;
end
end;
end.