Aktuelle Zeit: 18.07.2019 05:01

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 14.10.2018 14:15 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Das hier funktioniert...
Code:
;-TOP

; *******************************************************************

; -------------------------------------------------------------------

Prototype newLispEvalStrProto(EvalStr.p-utf8)
Prototype newlispCallbackStrProto(input.p-utf8, callbackaddress.i , calltype.p-utf8 )

Global _newLispEvalStr.newLispEvalStrProto
Global newlispCallbackStr.newlispCallbackStrProto
Global newlispLib

; -------------------------------------------------------------------

Procedure InitNewLisp()
   
  newlispLib = OpenLibrary(#PB_Any,"newlisp.dll")
  If newlispLib
    _newLispEvalStr = GetFunction(newlispLib,"newlispEvalStr")
    newlispCallbackStr = GetFunction(newlispLib, "newlispCallback")
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

; -------------------------------------------------------------------

Procedure.s newLispEvalStr(EvalStr.s)
  Protected *result, result.s
 
  *result = _newLispEvalStr(EvalStr)
  If *result
    result = PeekS(*result, -1, #PB_UTF8)
  Else
    result = "Error: No result"
  EndIf
  ProcedureReturn result
EndProcedure

; *******************************************************************

Global result.s, evalstr.s, r1

; -------------------------------------------------------------------

Procedure callme(*Info)
  Protected text.s
  If *Info
    text = PeekS(*info, -1, #PB_UTF8)
    ProcedureReturn MessageRequester("newLisp", "Result = " + text, #PB_MessageRequester_YesNoCancel)
  Else
    ProcedureReturn MessageRequester("newLisp", "No Info")
  EndIf
EndProcedure

; -------------------------------------------------------------------

If InitNewLisp()
 
  evalstr = "(callme 'Hello world')"
  evalstr = ReplaceString(evalstr, "'", #DQUOTE$)
 
  r1 = newlispCallbackStr("callme", @callme(), "stdcall")
  If r1
    result.s = newLispEvalStr(evalstr)
    Debug "result = " + result
  Else
    Debug "Error: Register Callback"
  EndIf
EndIf

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 14.10.2018 15:03 
Offline

Registriert: 30.08.2004 17:32
Hallo mk-soft,

Danke für deine Mühe. Aufgrung deines ersten Hinweisses sind bei mir aber auch schon die richtigen Ideen gekommen.

Und nochmals Danke an alle anderen die dazu beigetragen haben.

Anbei das komplette Projekt mit der Dll (32bit):

http://www.hpwsoft.de/anmeldung/html1/newLISP/hpwNewLisp_PB.zip

Screenshot:

Bild

Grüsse,

Hans-Peter

_________________
Hans-Peter


Zuletzt geändert von HPW am 14.10.2018 17:05, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 14.10.2018 16:33 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Deine "newlisp_utf8.dll" ist wohl alt und das Programm schmiert ohne debugger ab

Mit der aktuellen DLL "newlisp.dll" funktioniert es...

Link: http://www.newlisp.org/downloads/

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner v1.x / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 14.10.2018 16:52 
Offline

Registriert: 30.08.2004 17:32
Hallo,

Also die Dll ist schon aktuell, aber kann es sein das du eine 64 bit Version hast?
Ich hatte nicht erwähnt, das ich noch auf 32 bit bin. Damit wäre das erklärt.
Wäre aber gut zu wissen das es mit der 64bit Paarung auch läuft! :)

Grüsse,

_________________
Hans-Peter


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 14.10.2018 17:34 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
Eine 64-Bit DLL nutzt immer Fastcall Konventionen, so das zwischen Prototype und PrototypeC nicht unterschieden werden muss.
Eine 32-Bit DLL nutzt entweder StdCall (Prototype) oder CDECL (PrototypeC).

Ohne das ganze zu probieren, vermute ich mal das dies der Fehler ist :)

_________________
PureBasic 5.70 | SpiderBasic 2.21 | Windows 10 Pro (x64) | Linux Mint 19.1 (x64)
"Die Jugend von heute mit ihren Ballerspielen, hocken nur in der Bude - wir haben früher die Leute noch draußen erschossen!"
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: callback procedure in Exe
BeitragVerfasst: 17.10.2018 19:06 
Offline

Registriert: 30.08.2004 17:32
Hallo,

Update für das demo mit 2 weiteren Callbacks mit Integer and Double parameter.

Hier nochmal die komplete purebasic source mit der newlisp utf8 dll (32 bit):
Diesmal auch die compilierte Demo mit 52224 Bytes.

http://www.hpwsoft.de/anmeldung/html1/n ... isp_PB.zip

Grüsse,
Hans-Peter

_________________
Hans-Peter


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye