Autor Beitrag
SweetSharky
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 12.05.05 17:44 
Hallo zusammen!
Ich wollte ein dynamisches Array of Integer in einer dynamischen DLL verarbeiten,
aber es kommt immer eine Fehlermeldung : Ungültige Zeigeroperation
(Obwohl die richtigen Werte zurück übergeben werden)

Was ist hier im Code falsch?
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TNArray = array of Integer;
 TDLLFunktion = function(var ListOfNumbers:TErrorsArray):Boolean;
 TForm1 = class(TForm)
   ...
 end;

 var
 Form1: TForm1;
 Zahlenfeld : TDLLFunktion;
 DLLHandle : THandle;

implementation

{$R *.dfm}

procedure TForm1.ButtonClick(Sender: TObject);
var
 ListOfNumbers : TNArray;
 DLLEnable     : Boolean;
begin
 DLLEnable := true;
 try
   DLLHandle := LoadLibrary(PChar('Test.dll'));
 except
   on E:Exception do DLLEnable := false;
 end;
 @Zahlenfeld := GetProcAddress(DLLHandle,'Zahlenfeld');
 if @Zahlenfeld=nil then DLLEnable := false;

 if DLLEnable then Zahlenfeld(ListOfNumbers);
 ...

 FreeLibrary(DLLHandle);
end;

end.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
library Test;

uses
 Windows, Classes, SysUtils;

type
 TNArray = array of Integer;

{$R *.res}

function Zahlenfeld(var ListOfNumbers:TNArray):Boolean; export;
begin
 SetLength(ListOfNumbers,2);
 ListOfNumbers[0]:=123;
 ListOfNumbers[1]:=45678;
 result := true;
end;

exports
 Zahlenfeld;

begin
end.


Gruß SweetSharky