Hi,
ich hab nochmal ´ne Frage:
Wie geht das mit mehrdimensionalen dynamischen Arrays?
Ich poste hier mal meinen Code:
Für die
Exe:
Code:
unit Projekt1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
ZweiDim = Array of Array of Integer;
PZweiDim = ^ZweiDim;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen}
public
{ Public-Deklarationen}
end;
var
Form1: TForm1;
aZweiDim: ZweiDim;
Procedure Modifiziere(p: PZweiDim); external 'matrix.dll';
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(aZweiDim,2,2);
aZweiDim[0][0] := 1;
aZweiDim[0][1] := 1;
aZweiDim[1][0] := 1;
aZweiDim[1][1] := 1;
Modifiziere(@aZweiDim);
end;
end.
Für die
DLL:
Code:
library matrix;
uses
SysUtils,
Classes;
type
ZweiDim = Array of Array of Integer;
PZweiDim = ^ZweiDim;
procedure Modifiziere(p: PZweiDim); stdcall;
var i,k : integer;
begin
For i := 0 to high(p) do
begin
For k := 0 to high(p) do
begin
p^[i][k] := 17;
end;
end;
end;
exports Modifiziere;
begin
end.
Kann mir einer von Euch sagen, was daran falsch ist?
Ich sehe vor lauter Pointern und Dimensionen schon gar nicht mehr durch.
So, wie ich das mitbekommen habe, liegt der Fehler in der
DLL (von den Fehlermeldungen her).
__________
Ex0rzist