Jusqu'à présent j'ai utilisé delphi pour générer des applications 32b.
par exemple j'utilise fréquement le code suivant dans le cadre de fonctions de Bézier ceci sans problème depuis au moins delphi7.
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
26
27
28
29
30
31
32
33
34
35
36
37
 
 
 
procedure BezierForm();
var u         : integer;
    choose    : array[0..Bezier_sz_dv_2] of BZ_Real; // extended
    pp_, cc_  : pointer;
    xy        : D_Bezier_Point; //type record x,y : extended end;
    _up       : Boolean;
   begin
   cc_:=_Bezier_Buffers(1); // [n][1];
   pp_:=_Bezier_Buffers(0); // [n][0];
   Choose[0]:=1;
   u:=0;
   _up:=true;
      repeat
      move(pp_^,xy,SIZE_OF_BEZIER_POINT);
      xy[0] := xy[0] * choose[u];
      xy[1] := xy[1] * choose[u];
      move(xy,cc_^,SIZE_OF_BEZIER_POINT);
      inc(longint(cc_),SIZE_OF_BEZIER_POINT);
      //cc_ := PAnsiChar(cc_) + SIZE_OF_BEZIER_POINT;// constante = sizeof(D_Bezier_Point)
      inc(longint(pp_),SIZE_OF_BEZIER_POINT);
      //pp_ := PAnsiChar(pp_) + SIZE_OF_BEZIER_POINT;
      if _up then
         begin
         if u < Bezier_sz_dv_2  then
            begin
            inc(u);
            choose[u] := choose[u-1] * (Bezier_sz_-u) / u;
            _up:=u < Bezier_sz_dv_2;
            end;
         end
      else
         dec(u);
      until u < 0;
   end;
en essayant de générer une application 64b sous RAD 10.1 V2, l'ordre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
inc(longint(cc_),SIZE_OF_BEZIER_POINT);
n'est pas accepté par le compilateur.

le transcrire par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cc_ := PAnsiChar(cc_) + SIZE_OF_BEZIER_POINT;
comme suggéré dans un des help du compilateur permet de compiler le code mais il génère une erreur "overflow" à l'execution. L'utilisation de PByte ne change rien au comportement.

Je remercie par avance toutes réponses me permettant de débloquer la situation!