Append de fichier typé

gibono Messages postés 16 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 20 décembre 2004 - 21 mai 2004 à 15:13
gibono Messages postés 16 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 20 décembre 2004 - 25 mai 2004 à 17:21
bonjour j'ai un gros problème de fichier typé.... voici mon code:

TDvd = Record
name : string[20];
nbrVisionnage : Integer;
duree : Integer;
end;

var
myFile : File of TDvd; // A file of customer records
dvd : TDvd;
begin
// Try to open the Test.cus binary file for writing to
AssignFile(myFile, fichierName);
Append(myFile);
// Write a couple of customer records to the file
dvd.name := edtNom.text;
dvd.nbrVisionnage := StrToInt(edtNbvisio.text);
dvd.duree := StrToInt(edtDuree.text);
Write(myFile, dvd);
// Close the file
CloseFile(myFile);

Voilà ce code ne marche pas car le compilateur me signal une incompatibilité avec le append de myFile....car celui-ci est reservé au fichier text..... existe-t-il une méthode me permettant de le faire sans devoir passer par un rewrite car je ne veux pas écraser mon fichier.....

merci pour les réponses.

5 réponses

DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
21 mai 2004 à 19:58
j'ai essayé comme ton code, il marche :je l'ai ainsi testé :
var
  Form1: TForm1;
  type
TDvd = Record
name : string[20];
nbrVisionnage : Integer;
duree : Integer;
end;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
myFile : File of TDvd; // A file of customer records
dvd : TDvd;
begin
// Try to open the Test.cus binary file for writing to
AssignFile(myFile, 'c:\a.a');
Append(myFile);
// Write a couple of customer records to the file
dvd.name := 'rty';
dvd.nbrVisionnage := StrToInt('89');
dvd.duree := StrToInt('56');
Write(myFile, dvd);
// Close the file
CloseFile(myFile);
end;


si je comprend tu essaie de faire un autre append mais qui ne marche pas...c'est bizarre, moi ça marche...

mystère...
0
gibono Messages postés 16 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 20 décembre 2004
23 mai 2004 à 12:00
bizarre car dans la doc de delphi, il est dit que le append est reservé au fichier de type text (textfile) et chez moi ça marche toujours pas..... je suis au bord du gouffre....
0
Emandhal Messages postés 194 Date d'inscription dimanche 2 mars 2003 Statut Membre Dernière intervention 10 octobre 2006 3
24 mai 2004 à 13:16
essaye de voir avec ça (je ne file pas de code parce que je n'ai pas le temps maintenant d'en faire un :s ) :

var
  Fichier: TFileStream;
begin
  Fichier := TFileStream.Create('LeCheminDuFichier', fmOpenRead);
  Fichier.ReadBuffer(dvd, SizeOf(dvd));
  Fichier.Free;
end;

normalement ca devrai lire la première portion de la taille Tdvd et l'enregistrer dans dvd :)
pour écrire il faut utiliser WriteBuffer
Il est possible de mélanger les Types mais il faut savoir ce que l'on fait ^^

Tout problème a sa solution... Mais en général, c'est jamais la bonne...
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
25 mai 2004 à 10:59
D'habitude, je me sers d'un tableau de record. Je trouve plus pratique pour la manipulation, et aussi simple pour l'enregistrement dans un fichier. De même pour la lecture...
Mais pour répondre à ta question, j'ai fait chauffer les méninges, et voici la méthode que je te propose, garantie 100% fonctionnelle.

type
  TDvd = Record
    name : String[20];
    nbrVisionnage : Integer;
    duree : Integer;
  end;

procedure TForm1.EnregistreDansFichier;
var
  myFile : File of TDvd;
  dvd : TDvd;
begin
  dvd.name := edtNom.text;
  dvd.nbrVisionnage := StrToInt(edtNbvisio.text);
  dvd.duree := StrToInt(edtDuree.text);
  AssignFile(myFile, 'MonFichier.rcd');// attribue le fichier
  {$I-}
  Reset(myFile);              // essaye d'ouvrir le fichier
  {$I+}
  if IOResult = 0 then        // le fichier existe...
  begin
    Seek(myFile, FileSize(myFile)); // on se place à la fin
    Write(myFile, dvd);       // écriture
  end
  else                        // le fichier n'existe pas...
  begin
    Rewrite(myFile);          // ouvre en écriture
    Write(myFile, dvd);       // écriture
  end;
  CloseFile(myFile);          // referme le fichier
end;


Bonne prog' :-p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gibono Messages postés 16 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 20 décembre 2004
25 mai 2004 à 17:21
:o) merci nickel c'est tout à fait ce que je voulais. Heureseusment que ce forum existe.
0
Rejoignez-nous