![]() |
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:
So geht es leider nicht.. bekomme ne AccessViolation.
TFloatArray = Array of Single;
procedure myFunction(var outPixels: TFloatArray); stdcall; external DLLName; [...] var output: TFloatArray; begin SetLength(output, 100); myFunction(output); Hat jemand ne idee wie das geht?? Au'revoir, Aya~ |
Re: Array Parameter in einer DLL
Versuchs mal nicht als var-Parameter.
Delphi-Quellcode:
procedure myFunction(outPixels: TFloatArray); stdcall; external DLLName;
|
Re: Array Parameter in einer DLL
Das klappt, tausend dank! :D
|
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~ |
Re: Array Parameter in einer DLL
Ich schätz mal **Char, aber da bin ich mir nicht ganz sicher..
|
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:
egal ob ich das "var" weglasse oder nicht, ich bekomme nie "Hello World" angezeigt :(
procedure myFunc(var output: PChar); stdcall; external DLLName;
[...] var output: PChar; begin myFunction(output); ShowMessage(output); Aya~ |
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 :(
|
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