Seite 1 von 1

Struktur an DLL übergeben?

Verfasst: 07.02.2014 18:53
von Thorsten1867
[PB 5.21 LTS]
Nachdem ich relativ wenig Erfahrung mit DLLs habe, mache ich vermutlich irgendeinen unverzeihlichen Fehler und erhalte stets einen Speicherfehler:
"Ungültiger Speicherzugriff (Lesefehler an Adresse 0)"

Code: Alles auswählen

Structure DLLStructure
  Schule.s{64}
  Lehrer.s{48}
  Schuljahr.s{9}
  Klasse.s{12}
EndStructure
Global kvDCDLL.DLLStructure

kvDCDLL\Schule     = Schule$
kvDCDLL\Lehrer     = Lehrer$
kvDCDLL\Schuljahr = Schuljahr$
kvDCDLL\Klasse     = Klasse$

Prototype.l PT_kvDC_InitDLL(*PtrDLL.DLLStructure)

kvDC_Lib = OpenLibrary(#PB_Any, "kvDC.dll")
If kvDC_Lib
  Global kvDC_InitDLL.PT_kvDC_InitDLL = GetFunction(kvDC_Lib, "kvDC_InitDLL")
EndIf

kvDC_InitDLL(@kvDCDLL)

Re: Struktur an DLL übergeben?

Verfasst: 07.02.2014 19:42
von mk-soft
Deine Struktur kann nicht passen.

Bei externen DLL kannst du nicht die PB-Interna Stringverwaltung so verwenden.

Nehme an das ide DLL Strings mit fester länge erwartet...

Code: Alles auswählen

Structure DLLStructure
  Schule.s{100}
  Lehrer.s{100}
  Schuljahr.s{100}
  Klasse.s{100}
EndStructure

Re: Struktur an DLL übergeben?

Verfasst: 07.02.2014 19:57
von Thorsten1867
Ich fürchte, dass war es nicht.
Erhalte immer noch den gleichen Fehler.

Re: Struktur an DLL übergeben?

Verfasst: 07.02.2014 20:05
von Bisonte
Dann wäre eine Info zu der zu erwartenden Struktur nicht schlecht.... (Also ohne Doku schlecht)

Evt. (ich rate auch mal so blind)

Code: Alles auswählen

Structure DLLStructure
  Schule.c[64]
  Lehrer.c[48]
  Schuljahr.c[9]
  Klasse.c[12]
EndStructure

Re: Struktur an DLL übergeben?

Verfasst: 07.02.2014 21:00
von Thorsten1867
Sorry, nach stundenlangem Suchen habe ich das Problem endlich entdeckt.
Statt ProcedureDLL stand Procedure in der DLL. :angry:

Re: Struktur an DLL übergeben?

Verfasst: 08.02.2014 12:22
von Chimorin
Da können wir dann auch nicht helfen...

Re: Struktur an DLL übergeben?

Verfasst: 08.02.2014 15:19
von NicTheQuick
Und wie immer das leidige Thema: Rückgabewerte überprüfen! Selbst Schuld, wenn man das nicht tut. 'GetFunction()' gibt 0 zurück, wenn es die Funktion nicht gibt.

Re: Struktur an DLL übergeben?

Verfasst: 08.02.2014 15:24
von Thorsten1867
NicTheQuick hat geschrieben:Und wie immer das leidige Thema: Rückgabewerte überprüfen! Selbst Schuld, wenn man das nicht tut. 'GetFunction()' gibt 0 zurück, wenn es die Funktion nicht gibt.
Gut zu wissen.
Da ich keine wirkliche Erfahrung mit DLLs habe, war ich wohl zu sehr auf die übergebene Struktur fixiert, um das Offensichtliche zu bemerken.