Array_in_DLL.zip (Größe: 54,37 KB / Downloads: 359)
Hallo,
ich bin mal wieder auf Probleme gestoßen. Diesmal versuche ich ein Array in einer DLL zu erzeugen und die Daten des Array an LabVIEW zu übergeben.
Der Code in Delphi sieht so aus:
type DArray = array of Integer;
Function arrdll(laenge: Integer; Var arr: DArray):integer; stdcall; export;
var i,n: Integer;
begin
n:=laenge;
SetLength(arr, n);
for i:=0 to n do
begin
arr[i]:=i+3;
end;
end;
Exports
arrdll;
Dabei sollte folgendes passieren: Von LabVIEW übergebe ich einen Wert, der die Göße des Arrays angibt, bei mir im Programm "Arraylaenge" genannt. In der DLL wird dann ein Array dieser Größe erzeugt, und mit Daten aufgefüllt (hier i+3). Die Daten des Arrays sollen anschließend an LabVIEW übergeben werden.
Folgendes passiert dann:
(1) Der erste Wert in der Schleife der DLL ist i:=0. D.h. müsste dann arr[i];=i+3 =0+3=3 sein. Im Ausgabearray in LV erscheint aber der Wert 4.
(2) Im Ausgabearray sind beim ersten Durchlauf schon drei Felder initialisiert mit diesen Werten (4,0,0). Warum?
(3) Erhöht man die "Arraylaenge" werden die drei initialisierten Felder gefüllt (4,5,6). Bei weiterer Erhöhung der Arraylänge, werden keine anderen Werte mehr ausgegeben.
Der Sinn dieser ganzen Aktion ist der, dass in der DLL von einer Messkarte Daten erzeugt werden sollen, die in einem Array gespeichert werden. Parameter für die Messung sollen vom LV an die DLL übergeben werden und die Messdaten von der DLL zu LV.
Ich habe da wohl noch ein paar grundlegende Probleme mit LV und den Parametereinstellungen zur DLL. Leider habe ich in der Uni Bibo keine entsprechende Literatur für diese probleme gefunden. Ich hoffe man kann mir hier noch weiterhelfen
Meine Dateien hänge ich mit an. Bie mir läuft LV 7.0 und Delphi 7.
Schönen Gruß!