![]() |
Pointer auf Record an DLL - so richtig?
Hallo DP-Gemeinde.
Ich bin auf dem Gebiet noch etwas unsicher, darum wollte ich mal nachfragen, ob das, was ich hier gerade fabriziert habe, einigermaßen hinhaut. Also funktionieren tut es, nur ob es auch gesund ist... Code sagt ja bekanntlich mehr als 1000 Worte, darum leg ich einfach mal los:
Delphi-Quellcode:
In der DLL soll der Inhalt verändert werden und danach im Formular weiterbenutzt werden können.
// gemeinsame Unit
TMyRecord = packed record str: string; int: integer; end; PMyRecord = ^TMyRecord; //Hauptform procedure Modify(p_r: PMyRecord); stdcall; external 'my.dll'; {...} procedure BtnClick; var r: TMyRecord; begin r.str:='hallo'; r.int:=3; Modify(@r); showmessage(r.str+' '+IntToStr(r.int)); end; //DLL procedure Modify(p_r: PMyRecord); stdcall; begin p_r.str:='huhu'; p_r.int:=5; end; Ist das so in Ordnung? Oder kompletter Murx? Wär nett, wenn mir jemand ein paar Tipps geben könnte. :stupid: Danke, Björn. |
Re: Pointer auf Record an DLL - so richtig?
Wenn die DLL auch von nicht Delphiprogrammen genutzt werden soll musst du aus deinem Record den Typ String verbannen. Wird die DLL nur von Delphianwendungen verwendet musst du bei Verwendung von Strings bedenken das die ShareMem benötigt wird. Zudem ist dann stdcall nicht notwendig (wird ja eigentlich nur verwendet damit auch Programme auf die Funktion zugreifen können welche die Delphiaufrufkonvention nicht beherschen)
|
Re: Pointer auf Record an DLL - so richtig?
Zitat:
Würde WideString anstatt String in dem record das Problem lösen? |
Re: Pointer auf Record an DLL - so richtig?
Ja. Widestrings werden von COM verwaltet und diese Schnittstelle kann aus praktisch allen Sprachen angesprochen werden (in C/C++ heißt der Typ BSTR).
|
Re: Pointer auf Record an DLL - so richtig?
Super. Vielen Dank für die schnellen Antworten.
Frohes Programmieren! Björn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz