CallFunction und PB 4.50

Anfängerfragen zum Programmieren mit PureBasic.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

CallFunction und PB 4.50

Beitrag von Angelo »

Hallo zusammen,

ich benutze eine Funktion aus einer DLL, wobei ich CallFunction() einsetze. Das hat unter PB 4.41 gut geklappt. Aber PB 4.50 steigt in der Zeile mit CallFunction() aus und ich bekomme die Error-Meldung "Ungültiger Speicherzugriff (Schreibfehler an der Adresse 2)". Außerdem erscheint, wenn ich mit dem Mauszeiger über CallFunction() gehe, ein Tag mit folgendem Text:
Debugger: Variable nicht gefunden: 'CallFunction'.
Woran kann das liegen, ist PB 4.50 weniger "tolerant" in bezug auf Variablendeklaration?
PB 5.50; Win 7
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: CallFunction und PB 4.50

Beitrag von Kiffi »

Hallo Angelo,

CallFunction() ist zwar noch Bestandteil des PB-Befehlsumfanges, sollte aber nach
Möglichkeit durch Prototype() ersetzt werden.
Angelo hat geschrieben:Debugger: Variable nicht gefunden: 'CallFunction'.
Seltsame Fehlermeldung. Kannst Du den Code mal posten?

Grüße ... Kiffi
a²+b²=mc²
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: CallFunction und PB 4.50

Beitrag von Angelo »

Hallo kiffi,

ich habe praktisch aus einem C-Programm abgeschrieben:

Code: Alles auswählen

[DLLImport("xcontrol.dll", EntryPoint="GetDeviceInfo")]
unsafe public static extern uint GetDeviceInfo(uint* SNum);
.
.
uint inf = 0;
uint res = GetDeviceInfo(&inf);
Und das habe ich daraus in PB 4.41 gemacht:

Code: Alles auswählen

OpenLibrary(0, "xcontrol.dll")
.
.
inf = 0
erg = CallFunction(0, "GetDeviceInfo", @inf) 
PB 5.50; Win 7
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: CallFunction und PB 4.50

Beitrag von Rings »

nix
Zuletzt geändert von Rings am 15.06.2010 15:11, insgesamt 2-mal geändert.
Rings hat geschrieben:ziert sich nich beim zitieren
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: CallFunction und PB 4.50

Beitrag von Angelo »

Nachdem der vorherige Beitrag in "nix" geändert wurde, macht meine ursprüngliche Antwort keinen Sinn mehr. Also ändere ich sie ebenfalls in "nix" ab.
Zuletzt geändert von Angelo am 15.06.2010 17:53, insgesamt 2-mal geändert.
PB 5.50; Win 7
Benutzeravatar
hörmi
Beiträge: 106
Registriert: 10.07.2007 15:20
Kontaktdaten:

Re: CallFunction und PB 4.50

Beitrag von hörmi »

Also eine Prototypelösung könnte so ausschauen:
Leider kenn ich die Parameter und den Rückgabewert der Funktion nicht

Code: Alles auswählen

Prototype.l GetDeviceInfo(*inf.l)

If OpenLibrary(0, "xcontrol.dll")
  GetDeviceInfo.GetDeviceInfo = GetFunction(0, "GetDeviceInfo")
Else
  MessageRequester("Fehler","Programm wird beendet!")
  End
EndIf

inf=0
erg=GetDeviceInfo(@inf)
BildBild 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

Re: CallFunction und PB 4.50

Beitrag von ts-soft »

fast:

Code: Alles auswählen

Prototype.i GetDeviceInfo(*inf)
Define GetDeviceInfo.GetDeviceInfo
If OpenLibrary(0, "xcontrol.dll")
  GetDeviceInfo = GetFunction(0, "GetDeviceInfo")
Else
  MessageRequester("Fehler","Programm wird beendet!")
  End
EndIf

inf=0
erg=GetDeviceInfo(@inf)
:mrgreen:
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