Probleme mit Speicherzugriff in Librarys
Verfasst: 10.07.2011 12:51
Hallo alle zusammen,
ich habe ein Problem mit dem schreiben von Librarys. ich möchte von meinen Programm aus verschiedene Librarys aufrufen. Es geht dabei vor allem darum, dass jeder, der dieses Programm nutzt, einfach eine Library erstellen kann, um die Funktionen einzubauen. Die einzigen Parametertypen die übergeben werden sollen, sind Integer und Strings, wobei für Strings ein Pointer auf einen Speicherbereich übergeben wird. Der String wird vorher mit PokeS in diesen Speicher geschrieben. Mit ProcedureDLL habe ich in der Library einen Befehl erstellt, der einfach nur den angegebenen Speicherbereich mit PeekS ausliest und ausgibt. Es handelt sich übrigens um ein Konsolenprogramm.
Folgender Code funktioniert nicht, sondern verursacht immer einen Fehler (Speicherzugriffsfehler):
Code für die Library:
An dem PrintN kann es nicht liegen, wenn ich den übergebenen Wert als normalen Integer interpretiere, erfolgt eine normale ausgabe. Ich möchte aber nicht die WinApi benutzen, da es auch auf Linux laufen soll.
Edit: Mit Aufruf über Prototypes kommt das selbe raus
mfG Felix
ich habe ein Problem mit dem schreiben von Librarys. ich möchte von meinen Programm aus verschiedene Librarys aufrufen. Es geht dabei vor allem darum, dass jeder, der dieses Programm nutzt, einfach eine Library erstellen kann, um die Funktionen einzubauen. Die einzigen Parametertypen die übergeben werden sollen, sind Integer und Strings, wobei für Strings ein Pointer auf einen Speicherbereich übergeben wird. Der String wird vorher mit PokeS in diesen Speicher geschrieben. Mit ProcedureDLL habe ich in der Library einen Befehl erstellt, der einfach nur den angegebenen Speicherbereich mit PeekS ausliest und ausgibt. Es handelt sich übrigens um ein Konsolenprogramm.
Folgender Code funktioniert nicht, sondern verursacht immer einen Fehler (Speicherzugriffsfehler):
Code: Alles auswählen
CallFunction(0,name$,par1) ; par1 enthält die Speicheradresse
Code: Alles auswählen
ProcedureDLL test(*text.i)
Protected string$
string$ = PeekS(*text)
PrintN(string$)
EndProcedure
Edit: Mit Aufruf über Prototypes kommt das selbe raus
mfG Felix