Autor Beitrag
sourcehunter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Di 21.12.04 09:28 
Ich habe folgendes Problem:

Ich habe eine Funktion in eine DLL gepackt:

function name(Params:TPointerList):TPointerList;

Jetzt habe ich diese in den Speicher geladen und ausgeführt, aber er gibt mir immer eine Zugriffsverletzung. Nachdem ich das Problem untersucht hatte, habe ich gemerkt, dass die Parameter nicht richtig übergeben wurden.

Warum? Liegt es daran, dass ich Objektinstanzen übergebe?

_________________
Linux und OpenSource rulez!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 21.12.04 09:45 
Versuch mal ShareMem als erste Unit sowohl in die DLL als auch in die Anwendung einzubinden. Eventuell liegt das daran, da Objekte benutzt werden.
Grendel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 443

Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
BeitragVerfasst: Di 21.12.04 10:35 
Stichwort "stdcall" (die Delphi Hilfe erklärt genaueres)
Daran könnte es u.U. liegen.

Bis neulich ...
sourcehunter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Mi 22.12.04 12:39 
@jaenicke daran kann es nicht liegen, weil ich die schon drin hab. Aber auch sonst denke ich nicht, dass es daran liegen könnte, weil ShareMem nur dann eingestzt werden muss, wenn man keine Zeiger benutzt, aber Objektvariablen sind ja eigentlich nichts weiter als Zeiger. Aber ich kann mich da auch irren, jedenfalls liegt es nicht daran, dass ich ShareMem nicht eingebunden hab.

@Grendel meinst du etwa, dass ich die Funktion in der DLL als stdcall deklarieren soll? Das hab ich nämlich schon.

_________________
Linux und OpenSource rulez!
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mi 22.12.04 13:22 
sourcehunter hat folgendes geschrieben:
@Grendel meinst du etwa, dass ich die Funktion in der DLL als stdcall deklarieren soll? Das hab ich nämlich schon.

Hast du sie dann auch in deinem Programm als stdcall importiert??

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
sourcehunter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 482

Win XP | Suse 10.1
Delphi 2005 Pers.
BeitragVerfasst: Mi 22.12.04 14:16 
Meinst du etwa so:
ausblenden Delphi-Quelltext
1:
TFunktion=function name(params:TPointerListe):TPointerList; stdcall;					


//Edit: Da ist ein Fehler in der Highlight-Funktion, eigentlich sollte stdcall auch gehighlighted sein.
nochwas zu dem Fehler: entweder ihr habt den behoben, oder der tritt nur im Konqueror auf.

P.S: Danke für die Antwort, so funktionierts jetzt.

_________________
Linux und OpenSource rulez!