Seite 1 von 2
dll Funktion soll float an pb übergeben
Verfasst: 01.09.2005 16:47
von ChrisB
Hallo.
Ich habe hier eine c++ dll die mir bei einer Funktion ein float wert zurückgibt. Aber Irgendwie bekomm ich bei CallFunction() kein float sondern nur long.
Nach ein bisschen suchen bin ich im Forum auf dieses CodeSchnippsel gestoßen:
Code: Alles auswählen
retvalue=CallFunction(0,"getVertX")
float.f = PeekF( @RetValue)
Doch auch da kommt nur Käse raus.
Hat jemand ne Idee woran das liegen könnte?
Danke.
Re: dll Funktion soll float an pb übergeben
Verfasst: 01.09.2005 17:01
von Leo
Code: Alles auswählen
retvalue=CallFunction(0,"getVertX")
float.f = PeekF(RetValue)
Re: dll Funktion soll float an pb übergeben
Verfasst: 01.09.2005 17:09
von DarkDragon
Leo hat geschrieben:Code: Alles auswählen
retvalue=CallFunction(0,"getVertX")
float.f = PeekF(RetValue)
Hab ich ihm schon vorgeschlagen, klappt anscheinend auch nicht.
Verfasst: 01.09.2005 17:13
von remi_meier
Ev. so?
Code: Alles auswählen
Procedure.f test(x.f)
ProcedureReturn x
EndProcedure
*p = @test()
n.f
CallFunctionFast(*p, 1.023)
!FSTP dword[v_n]
Debug n
Also ein FSTP dword[v_VARNAME].
Verfasst: 01.09.2005 17:56
von ts-soft
Oder so?
Code: Alles auswählen
Procedure VertX()
CallFunction(0,"getVertX")
ProcedureReturn
EndProcedure
Float.f = VertX()
Verfasst: 01.09.2005 18:02
von DarkDragon
ts-soft hat geschrieben:Oder so?
Code: Alles auswählen
Procedure VertX()
CallFunction(0,"getVertX")
ProcedureReturn
EndProcedure
Float.f = VertX()
Wenn dann Procedure.f
Verfasst: 01.09.2005 18:02
von hardfalcon
ts-soft hat geschrieben:Oder so?
Code: Alles auswählen
Procedure VertX()
CallFunction(0,"getVertX")
ProcedureReturn
EndProcedure
Float.f = VertX()
Wie soll das denn funktionieren? Hinter ProcedureReturn steht doch gar nix!

Verfasst: 01.09.2005 18:04
von DarkDragon
hardfalcon hat geschrieben:ts-soft hat geschrieben:Oder so?
Code: Alles auswählen
Procedure VertX()
CallFunction(0,"getVertX")
ProcedureReturn
EndProcedure
Float.f = VertX()
Wie soll das denn funktionieren? Hinter ProcedureReturn steht doch gar nix!

Die Werte bleiben im EAX.
Verfasst: 01.09.2005 18:11
von hardfalcon
Sooo weit kann ich ja gar nicht mehr logisch nachdenken... Noch dazu mit meinem praktisch nicht vorhandenen ASM-Skill...

Verfasst: 01.09.2005 18:17
von ts-soft
hardfalcon hat geschrieben:Sooo weit kann ich ja gar nicht mehr logisch nachdenken... Noch dazu mit meinem praktisch nicht vorhandenen ASM-Skill...

Mit ProcedureReturn packste das Ergebnis auf dem Stack, manche DLLs legen es aber bereits dahin, so das Du den Stack nicht mehr verändern darfst um an das Ergebnis zu gelanden. Naja, so ungefähr