Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,72 @@
|
|||
== Get ==
|
||||
|
||||
To get the address of a variable without using the Windows API:
|
||||
|
||||
DEF X:INT
|
||||
DEF pPointer:POINTER
|
||||
pPointer=X
|
||||
|
||||
----
|
||||
|
||||
To get the address of a variable using the Windows API Lstrcpy function called in Creative Basic:
|
||||
(This may give users of another language without a native way to get the address of a variable to work around that problem.)
|
||||
|
||||
DEF Win:WINDOW
|
||||
DEF Close:CHAR
|
||||
DEF ScreenSizeX,ScreenSizeY,Col:INT
|
||||
|
||||
'***Map Function***
|
||||
DECLARE "Kernel32",Lstrcpy(P1:POINTER,P2:POINTER),INT
|
||||
'The pointers replace the VB3 variable type of Any.
|
||||
|
||||
'Note: This is translated from VB3 or earlier code, and "Ptr" is *not* a Creative Basic pointer.
|
||||
DEF Ptr:INT
|
||||
DEF X1:INT
|
||||
DEF X2:STRING
|
||||
|
||||
X1=123
|
||||
|
||||
'***Call function***
|
||||
Ptr=Lstrcpy(X1,X1)
|
||||
|
||||
GETSCREENSIZE(ScreenSizeX,ScreenSizeY)
|
||||
|
||||
WINDOW Win,0,0,ScreenSizeX,ScreenSizeY,@MINBOX|@MAXBOX|@SIZE|@MAXIMIZED,0,"Skel Win",MainHandler
|
||||
|
||||
'***Display address***
|
||||
PRINT Win, "The address of x1 is: " + Hex$(Ptr)
|
||||
X2="X2"
|
||||
|
||||
WAITUNTIL Close=1
|
||||
|
||||
CLOSEWINDOW Win
|
||||
|
||||
END
|
||||
|
||||
SUB MainHandler
|
||||
|
||||
SELECT @CLASS
|
||||
|
||||
CASE @IDCLOSEWINDOW
|
||||
|
||||
Close=1
|
||||
|
||||
ENDSELECT
|
||||
|
||||
RETURN
|
||||
|
||||
Note: The Windows Dev Center (http://msdn.microsoft.com/en-us/library/windows/desktop/ms647490%28v=vs.85%29.aspx) says
|
||||
improper use of the Lstrcpy function may compromise security. A person is advised to see the Windows Dev site before using
|
||||
the Lstrcopy function.
|
||||
|
||||
== Set ==
|
||||
|
||||
It appears to the author the closest one can come to setting the address of a variable is to set which bytes will be
|
||||
used to store a variable in a reserved block of memory:
|
||||
|
||||
DEF pMem as POINTER
|
||||
pMem = NEW(CHAR,1000) : 'Get 1000 bytes to play with
|
||||
#<STRING>pMem = "Copy a string into memory"
|
||||
pMem += 100
|
||||
#<UINT>pMem = 34234: 'Use bytes 100-103 to store a UINT
|
||||
DELETE pMem
|
||||
Loading…
Add table
Add a link
Reference in a new issue