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.
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
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;
n'est pas accepté par le compilateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 inc(longint(cc_),SIZE_OF_BEZIER_POINT);
le transcrire par
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part cc_ := PAnsiChar(cc_) + SIZE_OF_BEZIER_POINT;
Je remercie par avance toutes réponses me permettant de débloquer la situation!
Partager