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: Mi 17.04.13 16:26 
Hi,

da ich leider (gezwungenermaßen) ein Delphi Projekt auf C/C++ umschreibe, habe ich eine Frage zu der Parameterübergabe von DLLs.
Und zwar muss ich eine Delphi DLL einbinden, an die ein record übergeben wird.
Leider habe ich den source von der DLL nicht und kann somit nicht ausprobieren, wie die einzelnen Parameter übergeben werden.
Daher folgende Fragen :

- Entspricht ein Delphi record 100% dem C++ struct Konstrukt?
- Entspricht real dem double?
- Wie müssen statische Array deren niedrigster Index über 0 liegt übergeben werden?
- Werden in das record integrierte Prozeduren mit-übergeben?

Wie gesagt, leider kann ich es nicht genau an der DLL testen, deshalb wäre ich sehr dankbar, wenn jemand mehr technisches Wissen als ich besitzt und das teilen will :)

lg
glotzer
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 393
Erhaltene Danke: 49

Win 7
Lazarus
BeitragVerfasst: Mi 17.04.13 20:48 
user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:

- Entspricht ein Delphi record 100% dem C++ struct Konstrukt?

packed record ja

user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:

- Entspricht real dem double?

real ist veraltet und sollte nichtmehr verwendet werden. Extended/float wäre sinnvoller


user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:

- Wie müssen statische Array deren niedrigster Index über 0 liegt übergeben werden?

(warnung eventuell halbwissen) soweit mir bekannt ist baut der compiler das um das es trotzdem bei 0 losgeht und zaubert dann ein bischen mit compilermagic rum das du mit was anderem darauf zugreifen kannst

user profile iconHenryHux hat folgendes geschrieben Zum zitierten Posting springen:

- Werden in das record integrierte Prozeduren mit-übergeben?

Das ist Delphi speziell, da wäre ich extrem vorsichtig und würde es (egal ob es geht) lassen

_________________
ja, ich schreibe grundsätzlich alles klein und meine rechtschreibfehler sind absicht

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: So 21.04.13 16:22 
Danke!
Falls jemand über das gleiche Problem stolpert :
Es war wichtig, das Alignment von den records zu deaktivieren. (In Delphi mit packed record und in C mit #pragma pack(1)).
Ansonsten ist es nur wichtig, dass die Aufrufkonvention übereinstimmt.
Außerdem klappt es anscheinend nicht aus einer Delphi DLL einen Record als funktionsresult zu überreichen, da die beiden Compiler das unterschiedlich handhaben.
Lg