Seite 1 von 2
CallFunction(0,"Funktion")
Verfasst: 23.04.2007 22:31
von Tsuki-Namida
Hallo,
ich habe eine dll geschrieben und werwarte einen string zurück. nur ich bekomme stat den String eine zahl.
kann man das um conventieren? oder wie kann ich das machen das ich den string anstat eine zahl bekomme
Verfasst: 23.04.2007 22:35
von ts-soft
Purebasic.chm / Erstellung einer DLL / Hinweise zur Rückgabe von Strings aus DLL's:
Ich hoffe der dort enthaltene Text hilft Dir weiter, weil besser könnte ich es
auch nicht erklären
Verfasst: 23.04.2007 22:36
von al90
Verfasst: 23.04.2007 22:54
von Tsuki-Namida
ich habe leider in der hilfe nichts gefunden was mir helfen könnte
aber der string der zurück gegeben wird ist sehr wichtig...
@al90 naja es war ein versuch deinerseits wert

aber in dem string seht ein name und keine zahl... wenn ich jetzt Str(variabel) mache dann habe ich dennoch die selbe zahl nur dann als string...
Verfasst: 23.04.2007 22:58
von ts-soft
Magix-Soft <Kain> hat geschrieben:ich habe leider in der hilfe nichts gefunden was mir helfen könnte

PureBasic.chm hat geschrieben:String.s = PeekS(CallFunction(0,"FunctionName",Parameter1,Parameter2))
Ich hab so das Gefühl, ihr seid zu Faul zum lesen

Verfasst: 23.04.2007 22:59
von roherter
Wie Ts-Soft schon sagte stehts in der Hilfe,
aber ich habe dir mal den entsprechenden teil hier hin kopiert.
Hinweise zur Rückgabe von Strings aus DLL's:
Bei der Rückgabe von Strings aus einer DLL-Funktion muß der String als Global deklariert sein.
Beispiel:
Code: Alles auswählen
Global ReturnString$
ProcedureDLL.s MyFunction(var.s)
ReturnString$ = var + " test"
ProcedureReturn ReturnString$
EndProcedure
Ohne die Deklaration als Global ist der String nur Lokal in der ProcedureDLL verfügbar und kann somit nicht außerhalb verwendet werden.
Edit:TS-Soft war schneller
Verfasst: 23.04.2007 23:00
von Tsuki-Namida
hmm ich habe das wirklich nicht gefunden... aber danke
Verfasst: 23.04.2007 23:09
von al90
@Magix-Soft <Kain>
Sorry, ich hatte mich darauf bezogen.
Magix-Soft <Kain> hat geschrieben:kann man das um conventieren?
Hab das wohl zu wörtlich genommen.
Aber @ts-soft hat dir ja bereits die lösung gegeben. (PeekS)

Verfasst: 23.04.2007 23:15
von Tsuki-Namida
ja da bin ich ihm auch sehr dankbar
aber ich habe schon wieder einen fehler
und zwar "Invalid memory access" und das in dieser Zeile:
CallFunction(0,"Upload",Loggin$)
Die funktion wird auf gerufen aber wenn sie beendet ist kommt der fehler
die funktion steht in diesem Zusammenhang:
Code: Alles auswählen
OpenLibrary(0,"upload.dll")
Loggin$ = PeekS(CallFunction(0,"Passwort"))
Debug Loggin$
If Loggin$ <> "-1"
CallFunction(0,"Upload",Loggin$)
EndIf
CloseLibrary(0)
Verfasst: 23.04.2007 23:21
von ts-soft
Dein Code sollte zumindest so aussehen:
Code: Alles auswählen
If OpenLibrary(0,"upload.dll")
Loggin$ = PeekS(CallFunction(0,"Passwort"))
Debug Loggin$
If Loggin$ <> "-1"
CallFunction(0,"Upload",Loggin$)
EndIf
CloseLibrary(0)
Else
Debug "upload.dll nicht gefunden"
EndIf
wobei die Variablen davor bereits deklariert sein sollten.
Zu Deinem Problem:
Liegt wohl eher am Code der DLL!