Questionnement File of encore une fois ;)
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 :
Code:
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; |
Je m'attends donc, dans ce cas à avoir, dans mon fichier toto.dat :
- 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 8O ! J'ai bien 04 avec les code ASCII de TITI mais on me rajoute 2 caractères de remplissage :evil:
- 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 :oops:
D'avance, je vous en remercie.
Cordialement,
James.
Ben la voilà la réponse ;)
Merci beaucoup !
Et c'est dans l'aide de Delphi qu'on apprend (un F1 sur packed)
Citation:
Par défaut, les valeurs d'un type structuré sont alignées sur des limites de mot ou de double-mot afin de disposer d'un accès plus rapide.
Et c'est tout à fait ce que je voulais confirmer !
Merci beaucoup !
James.