Code archives/Miscellaneous/Delphi DLLs in B3D

This code has been declared by its author to be Public Domain code.

Download source code

Delphi DLLs in B3D by superqix
(Posted 25 years ago)
DelphiBBDLL is is a 32-bit Windows dynamic-link library wrapper which provides access to a Windows 9X/NT/2000/XP DLL written in Delphi.

Full project download here, http://turbo.gamedev.net/BBDelphiDLL.zip
; -------------------------------------------
; TEST.BB is a 32-bit Windows dynamic-link
; library wrapper which provides access
; to a Windows 9X/NT/2000/XP DLL
; -------------------------------------------

Const dll$ = "test.dll"

; Peek/Poke String functions by Rob Hutchinson

Function PokeString(mBankAddr,sStringOut$,iBufferOffset = 0)
	For n = 1 To Len(sStringOut$)
		PokeByte mBankAddr,iBufferOffset,Asc(Mid$(sStringOut$,n,1))
		iBufferOffset = iBufferOffset + 1
	Next
	PokeByte mBankAddr,iBufferOffset,0 ; Null terminate
End Function

Function PeekString$(mBankAddr,iBufferOffset = 0)
	Local sOutStr$ = "",iByte
	For n = 0 To BankSize(mBankAddr)
		iByte = PeekByte(mBankAddr,iBufferOffset)
		If iByte <> 0 
			sOutStr$ = sOutStr$ + Chr(iByte)
		Else
			Exit
		EndIf
		iBufferOffset = iBufferOffset + 1
	Next

	Return sOutStr$
End Function

; Function call(s)

Function UCase$(s$) ; make a string upper case

	iBankSize=Len(s$)+1
    mBankIn = CreateBank(iBankSize)
	mBankOut = CreateBank(255) ; out bank always 255
	PokeString(mBankIn,s$)

	error = CallDLL(dll$,&quot;DLLUcase&quot;,mBankIn,mBankOut)

	t$ = PeekString$(mBankOut) ; return string
	FreeBank mBankIn  	
	FreeBank mBankOut
	
	; get errors from Delphi DLL
	
	Select error
		Case 1
			RuntimeError &quot;Error&quot;
	End Select
	
	Return t$
	
End Function