Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 12.05.11 15:52 
Hi,

ich versuche Folgende Funktion einer DLL aufzurufen

ausblenden Delphi-Quelltext
1:
procedure Test(S: Stringvar Int : Integer);					


Der String wird richtig übergeben, der Integerwert jedoch nicht.
Versucht man ihn aufzurufen bekommt oder zu ändern bekommt man eine Zugriffsverletzung an der Adresse 00000000.
Übergebe ich allerdings anstatt eines Variablenparameters ein Werteparameter, klappt es.
Ich würde ansonsten eine Funktion schreiben, doch übergebe ich mehrere Integers.
Wenn ich auf die Variable aus dem Hauptprogramm unmittelbar vor dem Aufruf der Procedur zugreife, kommt keine Fehlermeldung.
Hat jemand eine Idee, wodran das liegen könnte?

lg


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 12.05.2011 um 17:58
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 12.05.11 16:23 
Dein größtes Problem ist, dass du einen String übergibst. :shock:
Theoretisch geht das zwar mit der Krücke ShareMem, aber mach es besser gleich sauber und übergib einen PChar.

Die andere Sache:
Welche Aufrufkonvention benutzt du? stdcall wäre üblich.

Für diesen Beitrag haben gedankt: HenryHux
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Do 12.05.11 17:27 
Danke, der String war das Problem.

lg