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 

LabVIEW DLL für Delphi erstellen



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!

22.12.2006, 23:16
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
LabVIEW DLL für Delphi erstellen
' schrieb:Wie sieht dann ein Pascal-String-Zeiger aus?
Der Zeiger selbst ist (bzw. zeigt auf) eine Adresse im Hauptspeicher, an der sich der C- bzw. Pascal-String befindet. Ein Zeiger in Win32 ist 32 Bit lang.

Ein Pascal-String ist eine Zeichenkette, an deren Anfang die Länge der Zeichenkette steht. Die Länge kann zwischen 0 und 255 (also ein Byte) liegen. Ein C-String ist eine Zeichenkette, an deren Ende ein #0 steht. C-String ist unter den Begriff PChar bekannter.

Wenn du in der Onlinehilfe in der LV-IDE nach StringHandle suchst, findest die die Erkärung zu C-String unf Pascal-String.

Im übrigen besteht ein Unterschied zwischen einem Pascal-String und einem String in Delphi. In Delphi benutzt praktisch niemand mehr Pascal-Strings (die dann ShortString heißen oder mit string[len] definiert werden). Auch in Delphi werden C-Strings, also PChar, benutzt. Nur in besonderen Fällen und unter Zwang wird ein Pascal-String verwendet. Delphi-Strings haben neben der 32Bit-Länge noch einen Referenzzähler und werden vom Delphi-Speichermanager verwaltet. Daher ist eine Übergabe von Delphi-Strings (wie bei dem Rückgabewert deiner Funktion, aber auch als Parameter in der Funktion) aus oder nach DLL's außerst kritisch - und sollte vermieden werden (eben wegen der Portierbarkeit zu Sprachen mit anderen Speichermanagern).

Die Parameter in deiner Funktion sind alles PChars.

Im übrigen wirst du Probleme bekommen mit der Übergabe des Wertes von bAbs. LV-DLLs scheinen eine Übergabe "by value", so wie es in deinem Funktionskopf steht, nicht zu können (bzw. wollen). LV-DLLs können anscheinend Daten nur "by reference" (also über Pointer) übergeben.

Wenn mir (oder wem auch sonst) nicht noch was einfällt, wirst du um eine Wrapper-DLL nicht herumkommen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
LabVIEW DLL für Delphi erstellen - IchSelbst - 22.12.2006 23:16

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler beim Schließen des VIs nach Delphi-DLL-Aufruf Bärbel 10 14.249 11.11.2013 11:44
Letzter Beitrag: andreaskoller
  DLL erstellen mit Labview denarco 1 5.468 30.08.2012 21:41
Letzter Beitrag: rolfk
  Datenübergabe aus Delphi-DLL in LabVIEW kokisan2000 5 7.080 13.11.2009 19:42
Letzter Beitrag: Y-P
  Delphi-DLL mit globalen Variablen Bärbel 4 6.267 15.07.2009 06:32
Letzter Beitrag: rolfk
  Delphi DLL in LabVIEW brenner2305 17 17.478 15.11.2006 20:07
Letzter Beitrag: IchSelbst
  Einbinden einer Delphi-dll Svenni 6 8.404 17.10.2006 12:05
Letzter Beitrag: Svenni

Gehe zu: