*如何使用 GET-POINTER-VALUE.... 获得一个有进度的内存指针?在 Windows 中工作正常:
DEFINE VARIABLE vUNO AS MEMPTR.
DEFINE VARIABLE vDOS AS MEMPTR.
DEFINE VARIABLE vTRES AS MEMPTR.
DEFINE VARIABLE sUNO AS CHARACTER.
DEFINE VARIABLE sDOS AS CHARACTER.
DEFINE VARIABLE sTRES AS CHARACTER.
DEFINE VARIABLE rUno AS MEMPTR.
/*Para prueba, poner algo a UNO, DOS y TRES.*/
DEFINE VARIABLE PTR AS MEMPTR.
ASSIGN sUNO = "Uno"
sDOS = "Dos"
sTRES = "Tres"
SET-SIZE(vUNO ) = LENGTH(sUNO ) * 2
SET-SIZE(vDOS ) = LENGTH(sDOS ) * 2
SET-SIZE(vTRES ) = LENGTH(sTRES) * 2
PUT-STRING(vUNO , 1) = sUNO
PUT-STRING(vDOS , 1) = sDOS
PUT-STRING(vTRES, 1) = sTRES.
SET-SIZE(PTR) = 4 /*Apuntador a vUNO -> 1*/
+ 4 /*Apuntador a vDOS -> 5*/
+ 4. /*Apuntador a vTRES -> 9*/
/*
NOTA:
4 porque en arquitcturas a 32 bits apuntadores miden 4 bytes.
Checar en Unix porque Hp-Ux (de Axa) es a 64 bits (apuntadores a 8 bytes).
*/
/* [1] 2 3 4 [5] 6 7 8 [9] 10 11 12 */
MESSAGE PROGRAM-NAME(1) SKIP
GET-STRING(vUNO,1 ) "/" GET-POINTER-VALUE(vUNO) SKIP
GET-STRING(vDOS,1 ) "/" GET-POINTER-VALUE(vDOS) SKIP
GET-STRING(vTRES,1) "/" GET-POINTER-VALUE(vTRES) SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.
/ * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** / 它返回:
---------------------------
Información
---------------------------
C:\GMM2000\Temp\p19350.cmp
Uno / 87066920
Dos / 85914720
Tres / 85914744
---------------------------
Aceptar
---------------------------
但使用相同的代码 Unix 返回:
---------------------------
Información
---------------------------
/gmm2000/p13659.cmp
Uno / ?
Dos / ?
Tres / ?
---------------------------
Aceptar
---------------------------
请 HEEEEEELLLLPPPPP!!!!*