AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array Parameter in einer DLL

Ein Thema von Aya · begonnen am 22. Jul 2006 · letzter Beitrag vom 23. Jul 2006
Antwort Antwort
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#1

Array Parameter in einer DLL

  Alt 22. Jul 2006, 22:04
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~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 22:09
Versuchs mal nicht als var-Parameter.

procedure myFunction(outPixels: TFloatArray); stdcall; external DLLName;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#3

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 22:10
Das klappt, tausend dank!
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#4

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 22:36
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~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 23:06
Ich schätz mal **Char, aber da bin ich mir nicht ganz sicher..
  Mit Zitat antworten Zitat
Benutzerbild von Aya
Aya

Registriert seit: 24. Jul 2003
Ort: Kassel
138 Beiträge
 
Delphi 6 Professional
 
#6

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 23:16
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~
I aim for my endless dreams and I know they will come true!
S: String = #86^)^3^)^4#58#32^(^4^4^0#58#47#47^7^7^7#46^+^/^3^(^)^'^!^9^!#46^$^%;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

Re: Array Parameter in einer DLL

  Alt 22. Jul 2006, 23:27
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
  Mit Zitat antworten Zitat
chaoslion

Registriert seit: 1. Mär 2006
52 Beiträge
 
#8

Re: Array Parameter in einer DLL

  Alt 23. Jul 2006, 01:15
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";
}
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz