![]() |
MyExportedFunction with VAR Params : ARRAY OF PChar?
Ich möchte folgende exportierte Function aus meiner DLL aus einer anderen Programmiersprache aus aufrufen:
Delphi-Quellcode:
'Param1 : INTEGER' ist dann ein 32Bit Integer
MyExportedFunction( Param1 : INTEGER; VAR Params : ARRAY OF PChar )
Ist aber 'VAR Params : ARRAY OF PChar' einfach eine Folge von 32Bit Addressen (Pointer auf PChars)? Dies scheint aber nicht zu funktionieren! Was erwartet delphi da? |
Re: MyExportedFunction with VAR Params : ARRAY OF PChar?
Das liegt daran, wie dynamische Array's in Delphi verwaltet werden. Dazu gab es hier schön öfter was. Ein dynamisches Array ist ein Pointer auf einen Speicherbereich, bei dem die ersten vier Bytes die Länge darstellen und danach die einzelnen Elemente (in deinem Fall viele PChars). übergibts du jetzt ein dynamisches Array als var Paramater dann wird quasi ein Zeiger auf einen Zeiger übergeben.
Wenn du kompatibel zu anderen Programmiersprachen sein möchtest musst du auf Strings und dynamische Arrays verzichten. Du könntest allerdings ein statisches Array daraus machen und nur die Adresse übergeben
Delphi-Quellcode:
Dann sollte man entweder mit Params^[0] oder Params[0] (weiss jetzt nicht was funktioniert) auf die Elemente zugreifen können. Allerdings brauchst du dann noch einen Paramater um die Elementanzahl zu übergeben.
type
PPCHarArray = ^TPCharArray; TPCharArray = Array[0..65535] of PChar; MyExportedFunction( Param1 : INTEGER; Params : PPCharArray) Ob es generell mit PChars korrekt klappt kann ich jetzt nicht versprechen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11: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-2025 by Thomas Breitkreuz