I'm currently writing a DLL for a software than only support ascii.
Code: Select all
ProcedureDLL myfunction()
Protected *result = Ascii("myresult!")
ProcedureReturn *result
EndProcedure
Code: Select all
ProcedureDLL myfunction()
Protected *result = Ascii("myresult!")
ProcedureReturn *result
EndProcedure
Code: Select all
Global *result
ProcedureDLL FreeMem()
FreeMemory(*result)
EndProcedure
ProcedureDLL myfunction()
*result = Ascii("myresult!")
ProcedureReturn *result
EndProcedure
Code: Select all
ProcedureDLL myfunctionA(*pResult, ByteSize)
Protected result.s, len
result = "ascii myresult!"
len = Len(result)
If *pResult And ByteSize
PokeS(*pResult, result, ByteSize, #PB_Ascii)
EndIf
ProcedureReturn len
EndProcedure
ProcedureDLL myfunctionW(*pResult, ByteSize)
Protected result.s, len
result = "unicode myresult!"
len = Len(result)
If *pResult And ByteSize
PokeS(*pResult, result, ByteSize / 2, #PB_Unicode)
EndIf
ProcedureReturn len
EndProcedure
; Test
Define len
len = myfunctionA(0,0)
*text = AllocateMemory(len + 1)
len = myfunctionA(*text, len)
Debug PeekS(*text, -1, #PB_Ascii)
FreeMemory(*text)
len = myfunctionW(0,0)
*text = AllocateMemory(len * 2 + 2)
len = myfunctionW(*text, len * 2)
Debug PeekS(*text, -1, #PB_Unicode)
FreeMemory(*text)