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
Vielleicht so ?

Code: Alles auswählen

zahl.l = 1024
String$ = Str(zahl)

Debug String$

Verfasst: 23.04.2007 22:54
von Tsuki-Namida
ich habe leider in der hilfe nichts gefunden was mir helfen könnte :oops:
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 :oops:
PureBasic.chm hat geschrieben:String.s = PeekS(CallFunction(0,"FunctionName",Parameter1,Parameter2))
Ich hab so das Gefühl, ihr seid zu Faul zum lesen :twisted:

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. :oops:

Aber @ts-soft hat dir ja bereits die lösung gegeben. (PeekS) :allright:

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!