Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array Parameter in einer DLL (https://www.delphipraxis.net/73723-array-parameter-einer-dll.html)

Aya 22. Jul 2006 23:04


Array Parameter in einer DLL
 
Hi,

ich bastle gerade eine DLL in VC++ und binde die in Delphi ein. Klappt soweit alles ganz gut..

Nur, jetzt muß ich einen Array von Delphi an die DLL übergeben, in dieser DLL soll der Array gefüllt werden und wieder zurück zu Delphi.. :)

Wie mach ich das?

Code:
void myFunction(float *output);
{
  for (int i = 0; i < 10; i++)
    output[i] = 5.0f;
}
Delphi-Quellcode:
TFloatArray = Array of Single;

procedure myFunction(var outPixels: TFloatArray); stdcall; external DLLName;

[...]
var
  output: TFloatArray;
begin
  SetLength(output, 100);
  myFunction(output);
So geht es leider nicht.. bekomme ne AccessViolation.

Hat jemand ne idee wie das geht??

Au'revoir,
Aya~

mkinzler 22. Jul 2006 23:09

Re: Array Parameter in einer DLL
 
Versuchs mal nicht als var-Parameter.

Delphi-Quellcode:
procedure myFunction(outPixels: TFloatArray); stdcall; external DLLName;

Aya 22. Jul 2006 23:10

Re: Array Parameter in einer DLL
 
Das klappt, tausend dank! :D

Aya 22. Jul 2006 23:36

Re: Array Parameter in einer DLL
 
Hi,

hab dochnoch ne frage.. :)
Wie sieht die deklaration in C++ aus, wenn ich einen "Array of PChar" statt des "Array of Single" haben will??

Aya~

Dax 23. Jul 2006 00:06

Re: Array Parameter in einer DLL
 
Ich schätz mal **Char, aber da bin ich mir nicht ganz sicher..

Aya 23. Jul 2006 00:16

Re: Array Parameter in einer DLL
 
Hi,

und wie schreib ich dann in den *char??

Code:
void myFunc(char *output);
{
  output = "Hello World";
}
Delphi-Quellcode:
procedure myFunc(var output: PChar); stdcall; external DLLName;

[...]
var
  output: PChar;
begin
  myFunction(output);
  ShowMessage(output);
egal ob ich das "var" weglasse oder nicht, ich bekomme nie "Hello World" angezeigt :(

Aya~

Dax 23. Jul 2006 00:27

Re: Array Parameter in einer DLL
 
Wahrscheinlich musst du vorher den Speicher für deine Rückgabe reservieren (im Delphi-Programm), und dann irgendwie den String, den du zurückgeben willst, in output kopieren.. Aber frag mich nicht wie :(

chaoslion 23. Jul 2006 02:15

Re: Array Parameter in einer DLL
 
hey ich weiß nicht ob es daran liegt, aber du willst den Wert von output ändern, also musst
du das so schreiben:

Code:
void myFunc(char *output);
{
  *output = "Hello World";
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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