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
2
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