Je crée par un programme des données correspondant à un record de taille variable du type
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
25
 
type xxx = record 
                   position, value : double; 
                   end;
 
var V = record 
               f1, f2, f3,  : double; 
               ndata        : integer; 
               data         : array of xxx; 
               end;
 
var i : Integer;
   begin
   V.ndata:=N;
   setlength(v.data, N);
   assignfile(f, FILENAME);
   rewrite(f,1);
   blockwrite(f, v.f1,sizeof(double));
   blockwrite(f, v.f2,sizeof(double));
   blockwrite(f, v.f3,sizeof(double));
   blockwrite(f, v.ndata,sizeof(integer));
   for i:=0 to v.ndata-1 do
      blockwrite(f, v.data[i],sizeof(xxx));
   closefile(f);
   end;

après quoi le fichier est mis dans une resource via

a- un fichier YYY.rc contenant la ligne

identification_1 RCDATA "FILENAME"
b- et l’exécution de la batch
brcc32.exe YYY.RC

on dispose alors de YYY.res

Dans un autre programme devant recharger ces données avec la ressource, j'utilise un code du type:
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
 
 
{$R YYY.res}
 
type xxx = record 
                  position, value : double; 
                  end;
var  TmpRes   : TResourceStream;
       H           :  record 
                          f1, f2, f3,  : double; 
                          ndata       : integer; 
                          data         : array of xxx; 
                          end; // même structure que celle utilisée pour la création
  begin
...
TmpRes := TResourceStream.Create(HInstance, 'identification_1', RT_RCDATA);
...
TmpRes .free();
end;
ceci va bien mais je n'arrive pas à transférer le contenu de tmpres dans ma variable H en y assignant les bons champs et setlength().

Je vous remercie pour vos réponses.