INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Delphi DLL in LabVIEW



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

15.11.2006, 13:31
Beitrag #17

s200rs Abwesend
LVF-Gelegenheitsschreiber
**


Beiträge: 75
Registriert seit: Jul 2005

7.1 / 8.5.1
2002
DE

02826
Deutschland
Delphi DLL in LabVIEW
' schrieb:[attachment=30007:attachment]

Der Code in Delphi sieht so aus:
...

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.


Hallo,

Tschuldigung, wenn ich mich hier mal kurz einklinke, habe nämlich nicht so viel Ahnung von Delphi, hab zwar Programmierung mit Turbo Pascal begonnen, bin aber im Studium auf C umgepolt worden...

Vielleicht solltest Du folgendes beachten:
Bei LabVIEW sieht ein eindimensionales Array im Speicher so aus, daß die ersten 4 Byte die Anzahl der folgenden Feldelemente in Form einer vorzeichenbehafteten 32-Bit-Zahl (I32) angeben. Erst danach folgen dann die einzelnen Feldelemente. Ein LabVIEW-Feld hat daher immer mindestens eine Größe von 4 Byte, auch wenn es leer ist. In diesen Bytes stehen bei einem leeren Feld nur Nullen.
Wenn Du dann genau auf diesen vier Bytes herumschreibst, interpretiert LabVIEW das als geänderte Feldlänge und dann bekommst Du eine Fehlermeldung (oder LabVIEW wird mal eben beendet Grrr), weil LabVIEW dann auf Speicherplätzen sucht, die gar nicht dafür reserviert sind, bei der Speicherfreigabe sieht's ähnlich aus.

Daher ist es sicherer, vor dem Aufruf von externem Code, sei's als CIN oder als DLL-Knoten, ein Feld mit der erwarteten Größe zu initialisieren (also muß Elementtyp und Feldgröße vorher bekannt sein), dieses dann an die externe Funktion zu übergeben und dort dann nur die ermittelten Werte auf die jeweilige bereits reservierte Speicherposition des übergebenen Feldes zu kopieren. Dann liegt die Speicherreservierung und -freigabe ausschließlich bei LabVIEW.

Ich glaube, mich daran zu erinnern, daß bei Pascal zumindest bei Strings das erste Byte die String-Länge gespeichert hat. Ein String ist ja auch nur ein Feld. Wenn nun Felder genau so aufgebaut sind, ist das obige Ergebnis nicht verwunderlich. Das erste Byte wird in der nicht angezeigt, weil es die Länge beinhaltet und die 3 angezeigten sind die 3 restlichen des LabVIEW-Feld-Kopfes.

Weiß aber nicht, ob man das von Pascal nun auf Delphi so übertragen kann, habe von der Entwicklung nichts mehr mitbekommen. Aber es ist nur so 'ne Idee.

________________

LV 7.1; 8.5
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Delphi DLL in LabVIEW - brenner2305 - 26.10.2006, 12:32
Delphi DLL in LabVIEW - IchSelbst - 26.10.2006, 15:44
Delphi DLL in LabVIEW - brenner2305 - 26.10.2006, 17:56
Delphi DLL in LabVIEW - IchSelbst - 26.10.2006, 19:30
Delphi DLL in LabVIEW - brenner2305 - 27.10.2006, 08:38
Delphi DLL in LabVIEW - IchSelbst - 27.10.2006, 09:41
Delphi DLL in LabVIEW - brenner2305 - 27.10.2006, 12:56
Delphi DLL in LabVIEW - IchSelbst - 27.10.2006, 16:56
Delphi DLL in LabVIEW - brenner2305 - 28.10.2006, 12:10
Delphi DLL in LabVIEW - brenner2305 - 06.11.2006, 13:57
Delphi DLL in LabVIEW - IchSelbst - 06.11.2006, 15:19
Delphi DLL in LabVIEW - IchSelbst - 06.11.2006, 19:44
Delphi DLL in LabVIEW - brenner2305 - 08.11.2006, 12:54
Delphi DLL in LabVIEW - IchSelbst - 08.11.2006, 14:43
Delphi DLL in LabVIEW - brenner2305 - 09.11.2006, 16:33
Delphi DLL in LabVIEW - IchSelbst - 09.11.2006, 21:26
Delphi DLL in LabVIEW - s200rs - 15.11.2006 13:31
Delphi DLL in LabVIEW - IchSelbst - 15.11.2006, 20:07

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler beim Schließen des VIs nach Delphi-DLL-Aufruf Bärbel 10 13.290 11.11.2013 11:44
Letzter Beitrag: andreaskoller
  Datenübergabe aus Delphi-DLL in LabVIEW kokisan2000 5 6.755 13.11.2009 19:42
Letzter Beitrag: Y-P
  Delphi-DLL mit globalen Variablen Bärbel 4 5.898 15.07.2009 06:32
Letzter Beitrag: rolfk
  LabVIEW DLL für Delphi erstellen hoho 6 8.181 12.01.2007 21:38
Letzter Beitrag: hoho
  Einbinden einer Delphi-dll Svenni 6 8.054 17.10.2006 12:05
Letzter Beitrag: Svenni

Gehe zu: