Seite 1 von 1

Probleme mit Speicherzugriff in Librarys

Verfasst: 10.07.2011 12:51
von felix16
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: Alles auswählen

CallFunction(0,name$,par1)   ; par1 enthält die Speicheradresse
Code für die Library:

Code: Alles auswählen

ProcedureDLL test(*text.i)
  Protected string$
  string$ = PeekS(*text)
  PrintN(string$)
EndProcedure
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

Re: Probleme mit Speicherzugriff in Librarys

Verfasst: 10.07.2011 14:04
von Bisonte
wisch, wiener, polier.... mist ich seh nix...

Völlig aus dem Zusammenhang gesägt... du muss schon ein funktionierendes Beispiel, dass
den Fehler produziert, posten, sonst wird das nix mit der Hilfe...

Re: Probleme mit Speicherzugriff in Librarys

Verfasst: 10.07.2011 14:19
von ts-soft
Ausserdem kannst Du mit PrintN nicht in die Console schreiben, die im MainProgramm geöffnet wurde,
dafür wirste API benötigen!

PS: Pointer sind nicht vom Typ Integer, sondern haben lediglich denselben Speicherbedarf, also:

Code: Alles auswählen

ProcedureDLL test(*text)

Re: Probleme mit Speicherzugriff in Librarys

Verfasst: 12.07.2011 20:06
von felix16
Hallo,

danke das ihr euch meinen Beitrag durchgelesen habt. Der Fehler kam durch einen kleinen Fehler zustande, der dafür gesorgt hat, dass statt der gewünschten Adresse ein völlig aus dem Zusammenhang gegriffener Integerwert wie 1 übergeben wurde. Kaum war das behoben, lief es wie gewünscht. Ich wollte eig. schon früher antworten, doch mein Beispielprogramm produzierte eben nicht den Fehler und ich hatte nichts was ich posten konnte. Trotzdem danke für eure Mühe, das ganze zu verstehen.

mfG Felix