AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterübergabe: was geht hier vor?

Ein Thema von weltaran · begonnen am 6. Mai 2005 · letzter Beitrag vom 6. Mai 2005
 
Benutzerbild von weltaran
weltaran

Registriert seit: 12. Sep 2003
Ort: Offenburg
78 Beiträge
 
Delphi 5 Enterprise
 
#1

Parameterübergabe: was geht hier vor?

  Alt 6. Mai 2005, 12:15
Hallo Leute!

Zunächst ein bisschen Prosa vorweg: Ich schreibe eine DLL in Delphi. An das aufrufende Programm muss ich Zeichenketten zurückgeben. Das Aufrufende Programm kann so konfiguriert werden, dass es eine DLL mit folgender C-Syntax erwartet:

Code:
 (STDCALL)

 long int myfunction(wchar_t a[], wchar_t b[], wchar_t c[], wchar_t d[], wchar_t e[], wchar_t f[]);
Anmerkung: wchar_t ist ein WideChar in C.


Ich habe die entsprechende Funktion in Delphi so nachgebildet:
 function myfunction(a, b, c, d, e, f: Array of WideChar): longint; stdcall; Jetzt das Problem: Ich kann zwar den String a (und c und e) verändern, aber bei den Strings b (und d und f) bekomm ich eine Zugriffsverletzung.

Ich habe dann den Spieß rumgedreht: Eine DLL in C geschrieben mit obigem Aufruf und die Anwendung in Delphi, die die DLL aufruft -> gleiches Ergebnis.

Wenn ich mir die Adressen der Arrays innerhalb der DLL anzeigen lasse, so bekomm ich für a[0], a[1], a[2], ..., c[0], c[1], c[2] ... plausible Werte (z.B. 1241104 dezimal, immer im korrekten Abstand von 2 Byte) angezeigt; für die anderen (b[0], b[1], ..., d[0], d[1], ...) werden jedoch sehr niedrige Adressen ausgegeben (z.B. 100, 102 dezimal).

Hat jemand von Euch eine Erklärung?

Ciao



P.S. die Problematik im Thread "Strings innerhalb DLL verändern" habe ich gelöst, deswegen ein neuer Thread
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz