Probleme mit Speicherzugriff in Librarys

Anfängerfragen zum Programmieren mit PureBasic.
felix16
Beiträge: 10
Registriert: 03.11.2009 15:32

Probleme mit Speicherzugriff in Librarys

Beitrag 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
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Probleme mit Speicherzugriff in Librarys

Beitrag 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...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
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: Probleme mit Speicherzugriff in Librarys

Beitrag 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)
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
felix16
Beiträge: 10
Registriert: 03.11.2009 15:32

Re: Probleme mit Speicherzugriff in Librarys

Beitrag 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
Antworten