[Done] An Error problem and a problem with structure import

TailBite specific forum

Moderators: gnozal, ABBKlaus, lexvictory

mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

[Done] An Error problem and a problem with structure import

Post by mpz »

Hello,

i am working on a 3D library for purebasic and have some problems with Tailbite. At first i think i found a bug. You can start the program, but Tailbite brings a error message for the "ProcedureDLL MyDiv" but the error case are both "import" lines (also for the remark line). Tailbite don´t like the : charakter.

not working

Code: Select all


 Import "dxguid.lib" : EndImport
; Import "dxguid.lib" : EndImport
 

   ProcedureDLL MyDiv(a, b)
     ProcedureReturn a/b
   EndProcedure

working !

Code: Select all


 Import "dxguid.lib"
 EndImport
; Import "dxguid.lib"
; EndImport
 
   ProcedureDLL MyDiv(a, b)
     ProcedureReturn a/b
   EndProcedure

Now my big problem with import structures. If you import variables/structures from a lib file you can use them also in a proceduredll. If you make a lib with tailbite the structur in the procedure is empty. Do i something wrong? has anybody a solution for that problem?

Example

Code: Select all

;////////////////////////////////////////////////////////////////
;//
;// Project Title: ImportStructur Variable funktioniert nicht in Tailbite V1.3 PR 1.877 
;// File Title: ImpStruct.pb
;// Geschrieben am: 11.10.2008
;// Update am: 
;// Author: Michael Paulwitz
;// für 3D Engine Michael Paulwitz
;// 
;//
;// Problem mit Tailbite
;//
;// Als ausgeführte Datei wird IID_IDirectInput8A und c_dfDIMouse an die Procedure übergeben, als Tailbite lib
;// wird nur die Struktur ohne Wert übergeben
;//
;////////////////////////////////////////////////////////////////

Structure DIDATAFORMAT
  dwSize.l
  dwObjSize.l
  dwFlags.l
  dwDataSize.l
  dwNumObjs.l
  *rgodf.DIOBJECTDATAFORMAT 
EndStructure 

 Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
; Macro DEFINE_GUID(Name, l.l, w1.w, w2.w, b1.b, b2.b, b3.b, b4.b, b5.b, b6.b, b7.b, b8.b)
    Global Name.GUID
    Name\Data1 = l
    Name\Data2 = w1
    Name\Data3 = w2
    Name\Data4[0] = b1
    Name\Data4[1] = b2
    Name\Data4[2] = b3
    Name\Data4[3] = b4
    Name\Data4[4] = b5
    Name\Data4[5] = b6
    Name\Data4[6] = b7
    Name\Data4[7] = b8
  EndMacro
  
  Macro ImportVariable(VarName, VarType)
    Global VarName.VARTYPE
    EnableASM
    _TempPointer.l
    !EXTRN _#VarName
    !MOV Eax, _#VarName
    MOV _TempPointer, Eax
    DisableASM

    CopyMemory(_TempPointer, VarName, SizeOf(VarName))
  EndMacro
  
  
 Import "dxguid.lib" 
 EndImport
 
 Import "dinput8.lib"
 EndImport
 
 ImportVariable(IID_IDirectInput8A, guid)
 
 ImportVariable(c_dfDIMouse, DIDATAFORMAT)
 
 a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
 a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10)
 MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
 
 ProcedureDLL MeinMist() 

    a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10)
    a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4])
    a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10)
    MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok)
    
    DEFINE_GUID(IID_IDirectInput8A,    $BF798030,$483A,$4DA2,$AA,$99,$5D,$64,$ED,$36,$97,$00)
 
    a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10)
    a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4])
    a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10)
    MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok)

    a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
    a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10)
    MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
 

EndProcedure
  
 MeinMist()


Thanks for your help
Michael
Last edited by mpz on Wed Oct 15, 2008 11:39 am, edited 1 time in total.
ABBKlaus
Addict
Addict
Posts: 1143
Joined: Sat Apr 10, 2004 1:20 pm
Location: Germany

Post by ABBKlaus »

Hi mpz,
mpz wrote:not working

Code: Select all

 Import "dxguid.lib" : EndImport 
; Import "dxguid.lib" : EndImport 
  

   ProcedureDLL MyDiv(a, b) 
     ProcedureReturn a/b 
   EndProcedure 
yes i know its a known limitation, you will have to live with that.

For the second problem, TailBite compiles only code between Procedure´s or ProcedureDLL´s.
You can for example make an Initfunction :

Code: Select all

   ProcedureDLL MyLib_Init()
     ; Do some initializing stuff, allocate memory, etc.
   EndProcedure

   ProcedureDLL MyLib_End()
     ; Do some cleaning, free memory, unload third party DLLs, etc.
   EndProcedure
Regards Klaus
mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

Post by mpz »

Dear Klaus,

thanks for the answer. The MyLib_Init() function is nice, but in this case it does not solve the problem. You can not use an Import (zb. "dxguid.lib")function in a procedure and if i use the ImportVariable in a procedure Tailbite gives an error message. Dou you have an idea in wich case i can use an "importvariable" in a procdure?

Greatings Michael
User avatar
ts-soft
Always Here
Always Here
Posts: 5756
Joined: Thu Jun 24, 2004 2:44 pm
Location: Berlin - Germany

Post by ts-soft »

You have to Import outside a procedure, allways. The same for Structures
For variables, declare it, before import, as global
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Image
ABBKlaus
Addict
Addict
Posts: 1143
Joined: Sat Apr 10, 2004 1:20 pm
Location: Germany

Post by ABBKlaus »

it should look like this (untested since i haven´t got the dx-libs):

Code: Select all

ProcedureDLL ImpStruct_Init()
 ImportVariable(IID_IDirectInput8A, guid) 
  
 ImportVariable(c_dfDIMouse, DIDATAFORMAT) 
  
 a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
 a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10) 
 MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
EndProcedure
Here´s the link to the online documention of TailBite : http://www.tailbite.com/help/index.html

And the important part : http://www.tailbite.com/help/Reference/ ... xused.html
mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

Post by mpz »

Hi Klaus,

the "ImportVariable" function does not work in a ProcedureDll of Tailbite. Taibite brings all times a error message. Now i create my structures and variables into the procedure. It will be a hard work but I have not found another solution.

Code: Select all


  Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
    Global Name.GUID
    Name\Data1 = l
    Name\Data2 = w1
    Name\Data3 = w2
    Name\Data4[0] = b1
    Name\Data4[1] = b2
    Name\Data4[2] = b3
    Name\Data4[3] = b4
    Name\Data4[4] = b5
    Name\Data4[5] = b6
    Name\Data4[6] = b7
    Name\Data4[7] = b8
  EndMacro


 ProcedureDLL MeinMist() 

     DEFINE_GUID(IID_IDirectInput8A,    $BF798030,$483A,$4DA2,$AA,$99,$5D,$64,$ED,$36,$97,$00)


     Dim PTR_fmt.DIOBJECTDATAFORMAT(6) ;{ 

     PTR_fmt(0)\pguid = GUID_XAxis :PTR_fmt(0)\dwOfs = 0 :PTR_fmt(0)\dwType = $00FFFF03 :PTR_fmt(0)\dwFlags = #Null 
     PTR_fmt(1)\pguid = GUID_YAxis :PTR_fmt(1)\dwOfs = 4 :PTR_fmt(1)\dwType = $00FFFF03 :PTR_fmt(1)\dwFlags = #Null 
     PTR_fmt(2)\pguid = GUID_ZAxis :PTR_fmt(2)\dwOfs = 8 :PTR_fmt(2)\dwType = $80FFFF03 :PTR_fmt(2)\dwFlags = #Null 
     PTR_fmt(3)\pguid = GUID_Button :PTR_fmt(3)\dwOfs = 12 :PTR_fmt(3)\dwType = $00FFFF0C :PTR_fmt(3)\dwFlags = #Null 
     PTR_fmt(4)\pguid = GUID_Button :PTR_fmt(4)\dwOfs = 13 :PTR_fmt(4)\dwType = $00FFFF0C :PTR_fmt(4)\dwFlags = #Null 
     PTR_fmt(5)\pguid = GUID_Button :PTR_fmt(5)\dwOfs = 14 :PTR_fmt(5)\dwType = $80FFFF0C :PTR_fmt(5)\dwFlags = #Null 
     PTR_fmt(6)\pguid = GUID_Button :PTR_fmt(6)\dwOfs = 15 :PTR_fmt(6)\dwType = $80FFFF0C :PTR_fmt(6)\dwFlags = #Null

     c_dfDIMouse.DIDATAFORMAT  

     c_dfDIMouse\dwSize = SizeOf(DIDATAFORMAT) 
     c_dfDIMouse\dwObjSize = SizeOf(DIOBJECTDATAFORMAT) 
     c_dfDIMouse\dwFlags = $00000002 
     c_dfDIMouse\dwDataSize = 16 
     c_dfDIMouse\dwNumObjs = 7 
     c_dfDIMouse\rgodf = @PTR_fmt()  

EndProcedure 

best michael
ABBKlaus
Addict
Addict
Posts: 1143
Joined: Sat Apr 10, 2004 1:20 pm
Location: Germany

Post by ABBKlaus »

i think its TailBite that renames your varname´s :

Code: Select all

    !EXTRN _#VarName 
    !MOV Eax, _#VarName 
to something like this :

Code: Select all

    !EXTRN Libname_#VarName 
    !MOV Eax, Libname_#VarName 
ABBKlaus
Addict
Addict
Posts: 1143
Joined: Sat Apr 10, 2004 1:20 pm
Location: Germany

Post by ABBKlaus »

i made a bugfix to your macro :

Code: Select all

Macro ImportVariable(VarName, VarType) 
  Global VarName.VARTYPE 
  
  TempPointer.l
  !Extrn _#VarName
  !MOV    eax,[_#VarName]
  !MOV    [p.v_TempPointer],eax
  
  CopyMemory(@TempPointer, VarName, SizeOf(VarName)) 
EndMacro 
and the beta version of TailBite is needed to compile : http://www.tailbite.com/downloads/TailB ... R1.878.zip

please report back if it works (or not) :wink:
mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

Post by mpz »

Hi Klaus,

thanks for your work, but if i compile to a exe file it appears the following message:

PureBasic.asm [6530]
MOV [p.v_TempPointer],eax
error: undefined symbols 'p.v_TempPointer'.

And Tailbite say:
Error : Assembler
PureBasic.asm [6530]
MOV [p.v_TempPointer],eax
error: undefined symbols 'p.v_TempPointer'.

Can you open the following sourcecode with windows and check this please?

Greatings Michael

P.S. For now i have declared all inputvariables into there procedures, but i think it is an important function for other including library functions...

Code: Select all


;//////////////////////////////////////////////////////////////// 
;// 
;// Project Title: ImportStructur Variable funktioniert nicht in Tailbite V1.3 PR 1.877 
;// File Title: ImpStruct.pb 
;// Geschrieben am: 11.10.2008 
;// Update am: 
;// Author: Michael Paulwitz 
;// für 3D Engine Michael Paulwitz 
;// 
;// 
;// Problem mit Tailbite 
;// 
;// Als ausgeführte Datei wird IID_IDirectInput8A und c_dfDIMouse an die Procedure übergeben, als Tailbite lib 
;// wird nur die Struktur ohne Wert übergeben 
;// 
;//////////////////////////////////////////////////////////////// 

Structure DIDATAFORMAT 
  dwSize.l 
  dwObjSize.l 
  dwFlags.l 
  dwDataSize.l 
  dwNumObjs.l 
  *rgodf.DIOBJECTDATAFORMAT 
EndStructure 

 Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) 
; Macro DEFINE_GUID(Name, l.l, w1.w, w2.w, b1.b, b2.b, b3.b, b4.b, b5.b, b6.b, b7.b, b8.b) 
    Global Name.GUID 
    Name\Data1 = l 
    Name\Data2 = w1 
    Name\Data3 = w2 
    Name\Data4[0] = b1 
    Name\Data4[1] = b2 
    Name\Data4[2] = b3 
    Name\Data4[3] = b4 
    Name\Data4[4] = b5 
    Name\Data4[5] = b6 
    Name\Data4[6] = b7 
    Name\Data4[7] = b8 
  EndMacro 
  
;  Macro ImportVariable(VarName, VarType) 
;    Global VarName.VARTYPE 
;    EnableASM 
;    _TempPointer.l 
;    !EXTRN _#VarName 
;    !MOV Eax, _#VarName 
;    MOV _TempPointer, Eax 
;    DisableASM 

;    CopyMemory(_TempPointer, VarName, SizeOf(VarName)) 
;  EndMacro 
 
 Macro ImportVariable(VarName, VarType) 
  Global VarName.VARTYPE 
  
  TempPointer.l 
  !Extrn _#VarName 
  !MOV    eax,[_#VarName] 
  !MOV    [p.v_TempPointer],eax 
  
  CopyMemory(@TempPointer, VarName, SizeOf(VarName)) 
EndMacro 
 
  
  
 Import "dxguid.lib" 
 EndImport 
  
 Import "dinput8.lib" 
 EndImport 
  
 ImportVariable(IID_IDirectInput8A, guid) 
  
 ImportVariable(c_dfDIMouse, DIDATAFORMAT) 
  
 a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
 a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10) 
 MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
  
 ProcedureDLL MeinMist() 

    a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10) 
    a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4]) 
    a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10) 
    MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok) 
    
    DEFINE_GUID(IID_IDirectInput8A,    $BF798030,$483A,$4DA2,$AA,$99,$5D,$64,$ED,$36,$97,$00) 
  
    a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10) 
    a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4]) 
    a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10) 
    MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok) 

    a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
    a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10) 
    MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
  

EndProcedure 
  
 MeinMist() 

gnozal
PureBasic Expert
PureBasic Expert
Posts: 4229
Joined: Sat Apr 26, 2003 8:27 am
Location: Strasbourg / France
Contact:

Post by gnozal »

Imho, it's not a Tailbite problem, I get the same error with compile/run.
Maybe p.v_TempPointer should be v_TempPointer ?
For free libraries and tools, visit my web site (also home of jaPBe V3 and PureFORM).
mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

Post by mpz »

Juhu,

thanks ABBKlaus. Now this code works as Exe and as Tailbite lib without problems. I use the Tailbite 1.878 and Purebasic 4.30 beta3. My old ImportVariable macro works into the procedure fine now...

http://www.tailbite.com/downloads/TailB ... R1.878.zip

Greatings Michael

Code: Select all

;//////////////////////////////////////////////////////////////// 
;// 
;// Project Title: Import of a varibale works fine
;// File Title: Importvariable.pb 
;// Geschrieben am: 11.10.2008 
;// Update am: 
;// Author: Michael Paulwitz 
;// für 3D Engine Michael Paulwitz 
;// 
;// 
;// Import of a Variable into a Procedure for Windows
;// 
;// 
;//////////////////////////////////////////////////////////////// 

Structure DIDATAFORMAT 
  dwSize.l 
  dwObjSize.l 
  dwFlags.l 
  dwDataSize.l 
  dwNumObjs.l 
  *rgodf.DIOBJECTDATAFORMAT 
EndStructure 

 Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) 
; Macro DEFINE_GUID(Name, l.l, w1.w, w2.w, b1.b, b2.b, b3.b, b4.b, b5.b, b6.b, b7.b, b8.b) 
    Global Name.GUID 
    Name\Data1 = l 
    Name\Data2 = w1 
    Name\Data3 = w2 
    Name\Data4[0] = b1 
    Name\Data4[1] = b2 
    Name\Data4[2] = b3 
    Name\Data4[3] = b4 
    Name\Data4[4] = b5 
    Name\Data4[5] = b6 
    Name\Data4[6] = b7 
    Name\Data4[7] = b8 
  EndMacro 

  Macro ImportVariable(VarName, VarType)
    Global VarName.VARTYPE
    EnableASM
    _TempPointer.l
    !EXTRN _#VarName
    !MOV Eax, _#VarName
    MOV _TempPointer, Eax
    DisableASM

    CopyMemory(_TempPointer, VarName, SizeOf(VarName))
  EndMacro
   
 Import "dxguid.lib" 
 EndImport 
  
 Import "dinput8.lib" 
 EndImport 
 
 ProcedureDLL MeinMist() 

 ImportVariable(IID_IDirectInput8A, guid) 
  
 ImportVariable(c_dfDIMouse, DIDATAFORMAT) 

 a$ = "Import variable"+ Chr(10) 
 a$ = a$ + Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10) 
 a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4]) 
 a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10) 
 ;MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok) 
    
 DEFINE_GUID(IID_IDirectInput8A,    $BF798030,$483A,$4DA2,$AA,$99,$5D,$64,$ED,$36,$97,$00) 
 
 a$ = a$+"self definied variable"+ Chr(10) 
 a$ = a$ + Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10) 
 a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4]) 
 a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10) 
 MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok) 

 a$ = a$+"Mousevariable"+ Chr(10) 
 a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags) 
 a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10) 
 MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok) 
 
EndProcedure 
  
 MeinMist() 
ABBKlaus
Addict
Addict
Posts: 1143
Joined: Sat Apr 10, 2004 1:20 pm
Location: Germany

Post by ABBKlaus »

Please note that the above Macro only works in a procedure :!:
For non procedure use just change the variable to v_varname as gnozal said :wink:
mpz
Enthusiast
Enthusiast
Posts: 494
Joined: Sat Oct 11, 2008 9:07 pm
Location: Germany, Berlin > member German forum

Post by mpz »

Dear ABBKlaus,

i used my "old" ImportVariable Macro. Now it working inside AND outside the procedure and with the Tailbite beta 1.878 inside a procedure too. Please see my last sample code.

Sorry to say, but your "bugfixed p.v_TempPointer" macro does not work and brings wrong informations into the variabels/structures.

If you use my last sample code you can put the:
- ImportVariable(IID_IDirectInput8A, guid)
- ImportVariable(c_dfDIMouse, DIDATAFORMAT)
inside and outside the procedure and it works. For Tailbite it is important to use the importVariabte into the procedure. I have tested this with the directx 8 and 9 library ..


best Michael
Post Reply