FreeBasic DLL passing parameters.
1. Passing string parameter variant1
FreeBasic DLL side ====================================================
'$include: 'DllMain.bi'
Function TestStringPass (byref
ptrInString As byte ptr)
as long export
dim StringParam as
string
dim ptrOutString As
byte ptr
StringParam=*ptrInParam
RapidQ side ====================================================
declare function
TestStringPass lib "TestStringPass.dll"
alias "TestStringPass@4"
(byref ptrKeyList
as long) as long
DIM
Mem1 AS QMemoryStream
dim ptrbzz as long
ss$="Test string"
print "ss$=" ;ss$
ptrbzz=varptr(ss$) ' pointer to test string
z=TestStringPass (ptrbzz)
Mem1.MemCopyFrom (ptrbzz, z)
Mem1.position=0
ss$=Mem1.ReadStr(z)'new
value of test string
print "3 ss$=" ;ss$
2. Passing
string parameter
variant2 (for
Version 0.13b
and later)
FreeBasic DLL side
====================================================
'$include: 'DllMain.bi'
Function TestStringPass2 (byval
InString As string)
as long export
print "dll InString="
;InString
InString="dll+++++++++"
print "dll 2 InString="
;InString
END function
'RapidQ side
====================================================
declare function TestStringPass
lib "TestStringPass2.dll"
alias "PASSSTRING@4"
( byref KeyList
as string) as long
ss$="Test
string"
print "1 ss$="
;ss$
call TestStringPass
(ss$)
print "2 ss$="
;ss$
application.terminate 'necessary
trick !!!