Bonjour,
Dans le but de bien comprendre comment marche le File Of (histoire de faciliter des migrations éventuelles de mes codes vers du C ou du C++), je fais quelques essais.
Et le moins que l'on puisse dire, c'est que c'est pas clair :
Ainsi, j'ai une structure pour le moins basique avec un code tout aussi basique :
Je m'attends donc, dans ce cas à avoir, dans mon fichier toto.dat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Type TContenu=Record Donnee: String[4]; Donnee2: String[4]; TypeDonnee: Integer; End; procedure TForm1.BitBtn1Click(Sender: TObject); Var Fich: File Of TContenu; Contenu: TContenu; begin AssignFile(Fich,'toto.dat'); Rewrite(Fich); Contenu.TypeDonnee:=1; Contenu.Donnee:='TOTO'; Contenu.Donnee2:='TITI'; Write(Fich,Contenu); CloseFile(Fich); end;
- Une chaine de caractère de longueur 4 (taille max définie concernant Donnee) précédée de sa longueur effective (04 dans notre cas)
-> C'est ce que j'ai
- Une chaine de caractère de longueur 4 (taille max définie concernant Donnee2) précédée de sa longueur effective (04 dans notre cas)
-> Ben non ! J'ai bien 04 avec les code ASCII de TITI mais on me rajoute 2 caractères de remplissage
- Mon integer codé sur 4 caractère 01 00 00 00
-> Ok, c'est ce que j'ai...
Alors pourquoi il y a deux caractères de remplissage ne correspondant ni à ma longueur max ni à ma longueur effective définie ?
Cela voudrait-il dire qu'une chaine de caractère est stockée dans le fichier avec une longueur multiple du plus long type stocké ? (Mon integer stocké sur 4 caractères dans mon cas).
Cela servirait-il à avoir des données placées à des places dépendantes de la longueur max du type de données ou y'aurait-il un système qui m'aurait échappé ?
Merci d'éclairer ma lanterne parce que là, je suis un peu perdu
D'avance, je vous en remercie.
Cordialement,
James.
Partager