Bonjour,
merci pour toute votre aide si précieuse.
Voici mon problème.
//---------
Si je crée un 'record':
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Type
  TyStructure = Record
    Entier16  : Word;                                                           // 2 octets
    Double64  : double;                                                        // 8 octets
  End;
//-------------
et que je sauve ces valeurs dans un fichier.
//--------------
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
23
24
 
Const
  NomFichier = './Fichier01.bin';
 
Type
  TyStructure = Record
    Entier16  : Word;                                                           // 2 octets
    Double64  : double;                                                         // 8 octets
  End;
 
procedure TForm1.BtnSaveStructClick(Sender: TObject);
  var
    FSource                  : TFileStream;                                     // Fichier source
    Structure                : TyStructure;
  begin
    FSource:=TFileStream.Create(NomFichier, fmCreate);                          // ouvre le fichier d'entrée en Stream File
    try
      Structure.Entier16:=$1122;                                                // entier sur 16 bits
      Structure.Double64:=100;                                                  // réel sur 64 bits
      Fsource.Write(Structure, SizeOf(Structure))
    finally
      if assigned(FSource) then FreeAndNil(FSource);
    end;
  end;
//-----------------
je retrouve dans le fichier:
- 2 octets ''22 11"
puis 6 octets de bourrage indéfini,
puis mon double de 8 octets.
//------------------
ce ne serait pas très grave si je devais recharger les données comme je les ai sauvées.
//------------------
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
 
procedure TForm1.BtnRestoreStructClick(Sender: TObject);
  var
    FSource                  : TFileStream;                                     // Fichier source
    Structure                : TyStructure;
  begin
    Structure.Entier16:=0;
    Structure.Double64:=0;
    FSource:=TFileStream.Create(NomFichier, fmOpenReadWrite);                   // ouvre le fichier d'entrée en Stream File
    try
      Fsource.Read(Structure, SizeOf(Structure))
    finally
      if assigned(FSource) then FreeAndNil(FSource);
    end;
  end;
//------------------
Le problème, c'est que la structure à été sauvée par un autre logiciel et que le résultat dans le fichier
sauvé est 2 octets (Word), suivit de 8 octets (double) sans octet de bourrage.
//------------------
y a t'il un moyen de restaurer une structure sans octet de bourrage à 8 octets.
//------------------
//------------------
je précise que j'ai simplifié à l’extrême pour montrer le problème et que la structure réelle que je veux restaurer
fait 1024 octets avec des chaines de caractères, des entiers signés ou non en 16 et 32 bits et des réels au format double.
//----------------------
Merci par avance et bonne journée