begin process at 2008 05 16 06:44:20
1 173 219 membres
61 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Ouverture d'un fichier [ Système / Fichier & Disque ] (grandyaka54)

Ouverture d'un fichier le 08/02/2008 16:42:14

grandyaka54
Bonjour,

Actuellement, je suis sur un projet utilisant un fichier.txt dans lequel on a plusieurs contrôle à faire. Si un controle échou, le fichier est rejeter et l'appli s'arrête sinon on poursuit au controle suivant...

Pour ma part, à chaque contrôle, s'ouvre, lit et je referme mon fichier a chaque appelle de fonction. Cette manip me plait pas beaucoup car je retrouve plusieurs fois dans mes fonctions AssignFile, Reset, Readln et Close.

Je n'arrive pas a trouver une solution pour créer une fonction ou procedure en passant en parametre un textfile et qui me renvoi aussi ce textfile. Cette fonction me permettrai d'éviter de reecrire a chaque fois dans chaque fonction de controle assignfile, reset etc...N'arrivant pas a trouver d'exemple ou de solutions sur le net, je m'en remets a vous.

Merci d'avance si vous pouvez m'indiquer une solution possible.

Cordialement.
----------------------------------
Ex :
AssignFile (F,NomFich);
Reset (F);

//1er controle
Result := function1 (F);

//2eme controle
Result := function2 (F);

//Etc..

CloseFile (F);
-----------------------------------

C'est le passage de parametre qui me bloque

Function (Fich : TextFile) : Boolean;

begin
end;


Re : Ouverture d'un fichier le 08/02/2008 17:33:51

grandyaka54

C'est le passage de parametre qui me bloque

Function (Fich : TextFile) : Boolean;
begin

Repeat

   Readln(Fich,Ligne);

Until EOF(Fich);

Resutl := Resultat;

end;




Re : Ouverture d'un fichier le 08/02/2008 17:49:11

fbalien
Membre Club
Réponse acceptée !
Bonjour

vous devez avoir un message du style Type de fichier non autorisé ici (E2002)
en regardant l'aide de delphi on à ceci
Les types File ne sont pas autorisés comme paramètres valeur et comme type de base d'un type file lui-même. Ils ne sont également pas autorisés comme types de renvoi de fonction, et vous ne pouvez pas les affecter


et une solution à votre problème qui consiste à modifier votre fonction comme ceci


Function (VAR Fich : TextFile) : Boolean;
begin
  Repeat  
      Readln(Fich,Ligne);
  Until EOF(Fich);
  Resutl := Resultat;
end;

CDT

Re : Ouverture d'un fichier le 08/02/2008 18:24:48

f0xi
Membre Club
(Admin CS)


si tes fichiers texte ne depasse pas une certaine taille :



const
  ErrorCode_NoError    = $00;
  ErrorCode_Condition1 = $01;
  ErrorCode_Condition2 = $02;
  ErrorCode_Condition3 = $04;
  ErrorCode_Condition4 = $08;

function Control(Strings: TStrings; var BreakLine, ErrorCode: integer): boolean;
var n : integer;
    c1, c2, c3, c4 : boolean;
begin
  result := true;
  breakline := -1;
  ErrorCode := ErrorCode_NoError;
  for N := 0 to Strings.Count-1 do
  begin
    c1 := (String[N] = condition1);
    c2 := (String[N] = condition2);
    c3 := (String[N] = condition3);
    c4 := (String[N] = condition4);

    result := c1 and c2 and c3 and c4;

    if not Result then
    begin
      BreakLine := N;
      if not c1 then
        ErrorCode := ErrorCode or ErrorCode_Condition1;
      if not c2 then
        ErrorCode := ErrorCode or ErrorCode_Condition2;
      if not c3 then
        ErrorCode := ErrorCode or ErrorCode_Condition3;
      if not c4 then
        ErrorCode := ErrorCode or ErrorCode_Condition4;
      Exit;
    end;
  end;
end;


var TSL : TStringList;
    BL,EC : integer;
    FileName, MsgErr: string;
begin
  FileName := 'c:\mon programme\fichier.txt';

  TSL := TStringList.Create;
  try
    TSL.LoadFromFile(FileName);

    if not control(TSL, BL, EC) then
    begin
      MsgErr := 'Erreur ( ';
      if (ErrorCode_condition1 and EC) > 0 then
        MsgErr := MsgErr + 'C1 ';
      if (ErrorCode_condition1 and EC) > 0 then
        MsgErr := MsgErr + 'C2 ';
      if (ErrorCode_condition1 and EC) > 0 then
        MsgErr := MsgErr + 'C3 ';
      if (ErrorCode_condition1 and EC) > 0 then
        MsgErr := MsgErr + 'C4 ';
      MsgErr := MsgErr + ') a la ligne ['+IntToStr(BL)+']'+#13#10;
      MsgErr := MsgErr + 'Le fichier '+ExtractFileName(FileName)+' est rejeté.';
      MessageDlg(MsgErr, mtError, [mbOk], 0);
    end    
    else
      MessageDlg('Fichier ok', mtInformation, [mbOk], 0);
  finally
    TSL.Free;
  end;
end;
  



deefsign.gif

Re : Ouverture d'un fichier le 11/02/2008 13:35:40

grandyaka54

En modifiant la fonction comme indiqué ça marche tres bien mais le risque et que je ne connais pas la taille du fichier d'origine.

Merci comme meme pour l'aide.



Classé sous : fichier, fonction, controle, reset, assignfile

Participer à cet échange

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS