S'enregistrerS'enregistrer RechercherRechercher FAQFAQ ConnexionConnexion
code montrez au tableau

 
Poster un nouveau sujet   Répondre au sujet    Teamatic.net Index du Forum -> Travaux de groupes
Message Auteur
MessagePosté le: 29 10 2002 20:40    Sujet du message: code montrez au tableau

code de test de lecture

Utilisez l'unité Ufichier pour lire un fichier texte
dans l'application PrLectFicText.dpr

Code:
Procedure Tform1.LectureClick(sender:tObjet);
var f:textfile;
s:string;
success:byte;

begin
if not OpenDialog1.Execute Then Exit;
listBox1.clear;
ouvertureFichierEnLecture(f,success);
while not Eof(f)do
begin
readln(f,s);
listbox1.Item.Add(s)
end
FermerFichier(f)
end;
Ice_man33
Posteur habitué
Posteur habitué


Inscrit le: 19 Sep 2002
Messages: 126
Localisation: Montréal

Revenir en haut
MessagePosté le: 29 10 2002 20:54    Sujet du message:

Le code de UFichier (il faut finir le "FermerFichier")
Code:
unit UFichier;

interface

   uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, StdCtrls, Buttons;
   procedure OuvertureFichierEnLecture(var f:TextFile; var Success: Byte);
   procedure OuvertureFichierEnEcriture(var f:TextFile; var Success: Byte);
   procedure OuvertureFichierEnAppend(var f:TextFile; var Success: Byte);
   procedure FermerFichier (var f:TextFile);


implementation

procedure OuvertureFichierEnLecture(var f:TextFile; var Success: Byte);
var S,Nomf:string;
    CodeErreur:Integer;

begin
    s:=InputBox('Nom fichier','Entrez le nom du fichier','o');
    nomf:=s;
    assignfile(f,nomf);
    {$I-}
    reset(f);
    codeerreur:=ioresult;
    {$I-}
    if codeerreur<>0 then
      case codeerreur of
        1:showmessage('erreur # '+inttostr(CodeErreur)+' out of memory');
        2:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur manquant');
        3:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur inconnu');
        4:showmessage('erreur # '+inttostr(CodeErreur)+' Identidficateur en double');
        5:showmessage('erreur # '+inttostr(CodeErreur)+' Syntaxe erreur');
       10:showmessage('erreur # '+inttostr(CodeErreur)+' Fin Fichier non attendu');
       15:showmessage('erreur # '+inttostr(CodeErreur)+' Fichier non trouvé');
       16:showmessage('erreur # '+inttostr(CodeErreur)+' Disque plein');
      else showmessage('erreur # '+inttostr(CodeErreur)+' Erreur');
      end
   else
    begin
      showmessage ('Fichier ouvert en lecure');
    end;
end;

procedure OuvertureFichierEnEcriture(var f:TextFile; var Success: Byte);
var S,Nomf:string;
    CodeErreur:Integer;

begin
    s:=InputBox('Nom fichier','Entrez le nom du fichier','o');
    nomf:=s;
    assignfile(f,nomf);
    {$I-}
    reset(f);
    codeerreur:=ioresult;
    {$I+}
    if codeerreur<>0 then
      case codeerreur of
        1:showmessage('erreur # '+inttostr(CodeErreur)+' out of memory');
        2:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur manquant');
        3:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur inconnu');
        4:showmessage('erreur # '+inttostr(CodeErreur)+' Identidficateur en double');
        5:showmessage('erreur # '+inttostr(CodeErreur)+' Syntaxe erreur');
       10:showmessage('erreur # '+inttostr(CodeErreur)+' Fin Fichier non attendu');
       15:showmessage('erreur # '+inttostr(CodeErreur)+' Fichier non trouvé');
       16:showmessage('erreur # '+inttostr(CodeErreur)+' Disque plein');
      else showmessage('erreur # '+inttostr(CodeErreur)+' Erreur');
      end
   else
    begin
      showmessage ('Fichier ouvert en lecure');
    end;
end;

procedure OuvertureFichierEnAppend(var f:TextFile; var Success: Byte);
var S,Nomf:string;
    CodeErreur:Integer;

begin
    s:=InputBox('Nom fichier','Entrez le nom du fichier','o');
    nomf:=s;
    assignfile(f,nomf);
    {$I-}
    reset(f);
    {$I-}
    codeerreur:=ioresult;
    if codeerreur<>0 then
      case codeerreur of
        1:showmessage('erreur # '+inttostr(CodeErreur)+' out of memory');
        2:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur manquant');
        3:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur inconnu');
        4:showmessage('erreur # '+inttostr(CodeErreur)+' Identidficateur en double');
        5:showmessage('erreur # '+inttostr(CodeErreur)+' Syntaxe erreur');
       10:showmessage('erreur # '+inttostr(CodeErreur)+' Fin Fichier non attendu');
       15:showmessage('erreur # '+inttostr(CodeErreur)+' Fichier non trouvé');
       16:showmessage('erreur # '+inttostr(CodeErreur)+' Disque plein');
      else showmessage('erreur # '+inttostr(CodeErreur)+' Erreur');
      end
   else
    begin
      showmessage ('Fichier ouvert en lecure');
    end;
end;

procedure FermerFichier (var f:TextFile);
begin
end;

end.



Dernière édition par Kaizen le 30 10 2002 18:56; édité 1 fois
Kaizen
Webmaster
Webmaster


Inscrit le: 07 Mar 2002
Messages: 2253
Localisation: Québec, France et ailleurs...

Revenir en haut
MessagePosté le: 30 10 2002 13:09    Sujet du message:

C juste une proposition pour le code montré par kaizen.

D'abord on dirai qu'il ya un erreur : dans tes 3 fonctions s'il n'y a pas de messages d'erreur le messages : "Fichier ouvert en lecure" est affiché...

Il semblerai que tes 3 fonctions fassent apeu pres la meme chose, sauf que le type d'ouverture est different (lecture,ecriture,append).

Pour limiter la taille deton code tu pourrai ajouter un argument dans la focntion qui te permet de savoire comment le fichier doit etre ouvert.
Ensuitte tu teste cette argument si une action doit etre faite en fonction du type d'ouverture du fichier.

Exemple : pour le messages :

Code:
procedure OuvertureFichier(var f:TextFile; var Success: Byte; [i]var TypeOuverture:string[/i]);
var Success: Byte);
var S,Nomf:string;
    CodeErreur:Integer;

begin
    s:=InputBox('Nom fichier','Entrez le nom du fichier','o');
    nomf:=s;
    assignfile(f,nomf);
    {$I-}
    reset(f);
    codeerreur:=ioresult;
    {$I-}
    if codeerreur<>0 then
      case codeerreur of
        1:showmessage('erreur # '+inttostr(CodeErreur)+' out of memory');
        2:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur manquant');
        3:showmessage('erreur # '+inttostr(CodeErreur)+' Identificateur inconnu');
        4:showmessage('erreur # '+inttostr(CodeErreur)+' Identidficateur en double');
        5:showmessage('erreur # '+inttostr(CodeErreur)+' Syntaxe erreur');
       10:showmessage('erreur # '+inttostr(CodeErreur)+' Fin Fichier non attendu');
       15:showmessage('erreur # '+inttostr(CodeErreur)+' Fichier non trouvé');
       16:showmessage('erreur # '+inttostr(CodeErreur)+' Disque plein');
      else showmessage('erreur # '+inttostr(CodeErreur)+' Erreur');
      end
   else
    begin
      showmessage ('Fichier ouvert en [i]afficher TypeOuverture'[/i]);
    end;
end;


(recherche la balise [i] pour voire ce que G modifié).
rien ne t'empeche dans ton code de faire des testes sur la variable pour savoire si la fonctio nest utilisé pour un ficheir qui doit etre lut,ecrit ou "ppend".

Cela te permetra de diviser par au moin 2 la taille de ton code....

Djer13
Djer13
Équipe Teamatic
Équipe Teamatic


Inscrit le: 07 Mar 2002
Messages: 693
Localisation: Chambéry

Revenir en haut
MessagePosté le: 30 10 2002 18:52    Sujet du message:

Djer13 a écrit:
D'abord on dirai qu'il ya un erreur : dans tes 3 fonctions s'il n'y a pas de messages d'erreur le messages : "Fichier ouvert en lecure" est affiché...
NON, la partie suivante est la pour ça...
Code:
{$I-}
  reset(f);
  codeerreur:=ioresult;
  {$I-}
  if codeerreur<>0 then
   case codeerreur of
    1:showmessage('erreur # '+inttostr(CodeErreur)+' out of memory');
...


Djer13 a écrit:
Il semblerai que tes 3 fonctions fassent apeu pres la meme chose, sauf que le type d'ouverture est different (lecture,ecriture,append).
Entierement d'accord mais bon, c'est le code du prof (j'aurais jamais fais un truc pareil) :
Citation:
Regle 1: Le prof s toujours raison
Regle 2: Si le prof a tors, voir la regle 1
Kaizen
Webmaster
Webmaster


Inscrit le: 07 Mar 2002
Messages: 2253
Localisation: Québec, France et ailleurs...

Revenir en haut
MessagePosté le: 31 10 2002 14:27    Sujet du message:

pour "l'erreur" je pense que tu n'as pas compris ce que je voulais dire.
Quand il n'y a pas d'erreur (donc pas de message d'erreur) toutes la partie de "CASE" est ignoré pour passer au "else" en bas qui affiche un message qui confirme l'ouverture.

Dans les 3 fonctions le message est EXACTEMENT le meme alors que seul la 1 erre fonction ouvre le ficheri en lecture les autre ouvrent en ecriture ou "append".....


Djer13
Invité






Revenir en haut
MessagePosté le: 31 10 2002 15:16    Sujet du message:

Anonymous a écrit:
pour "l'erreur" je pense que tu n'as pas compris ce que je voulais dire.
Quand il n'y a pas d'erreur (donc pas de message d'erreur) toutes la partie de "CASE" est ignoré pour passer au "else" en bas qui affiche un message qui confirme l'ouverture.


Bah oui, c'est le but...
Kaizen
Webmaster
Webmaster


Inscrit le: 07 Mar 2002
Messages: 2253
Localisation: Québec, France et ailleurs...

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet Toutes les heures sont au format GMT
Page 1 sur 1

 
 
 
Powered by phpBB © 2001, 2005 phpBB Group - Traduction : phpBB-fr.com
Gzip: Disabled  -  Queries: 15  -  Generation Time: 1.3207 s