CallFunction(0,"Funktion")

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

CallFunction(0,"Funktion")

Beitrag 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
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Vielleicht so ?

Code: Alles auswählen

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

Debug String$
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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...
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag 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
Zuletzt geändert von roherter am 23.04.2007 23:01, insgesamt 2-mal geändert.
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

hmm ich habe das wirklich nicht gefunden... aber danke
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag 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:
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag 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)
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten