Bonjour à tous,
J'ai 2 records qui définissent la structure d'un fichier :
'Entente.aCorps' est un tableau dynamique de 'Corps' qui sera fixé en fonction de 'Entete.wNombre'.
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 type Corps = Record bType : Byte; bPart : Byte; bDebut : Byte; bFin : Byte; wLong : Word; wEntite : Word; dwDesc : DWord; dwService : DWord; end; type Entete = Record wReserve : Word; wType : Word; wNombre : Word; aCorps : Array of Corps; end;
Voici mon code :
Et ça ne marche pas. Le tableau 'monEntete.aCorps' n'est pas rempli correctement est j'ai des erreurs du type 'violation d'accès à l'adresse ...'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TForm1.Button1Click(Sender: TObject); var monEntete : Entete; iFileHandle : Integer; i : Integer; begin iFileHandle :=FileOpen('file.bdo',fmOpenRead); FileRead(iFileHandle,monEntete,sizeof(Word)*3); SetLength(monEntete.aCorps,monEntete.wNombre); FileRead(iFileHandle,monEntete.aCorps,monEntete.wNombre*sizeof(Corps)); ...
Par contre si je fais ça ya pas de problème :
Quelqu'un peut-il m'expliquer pourquoi la première solution ne marche pas ?
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 procedure TForm1.Button1Click(Sender: TObject); var monEntete : Entete; iFileHandle : Integer; i : Integer; begin iFileHandle :=FileOpen('file.bdo',fmOpenRead); FileRead(iFileHandle,monEntete,sizeof(Word)*3); SetLength(monEntete.aCorps,monEntete.wNombre); for i:=0 to monEntete.wNombre-1 do begin FileRead(iFileHandle,monEntete.aCorps[i],sizeof(Corps)); end; ...
Merci,
Bobby-B
Partager