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 

Einbinden einer Delphi-dll



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!

17.10.2006, 10:17
Beitrag #1

Svenni Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 227
Registriert seit: Mar 2005

7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE

23843
Deutschland
Einbinden einer Delphi-dll
Hallo,

ich kämpfe gerade mit einer dll, die ich in meine Applikation einbinden will. Vielleicht kann mir jemand von Euch helfen. Ich habe leider keine Ahnung von Delphi.
Es geht konkret um die Übergabe der Daten. Leider steige ich nicht durch die Datentypüen in Delphi durch.

Hier einmal ein Besipiel. Zuerst die Beschreibung aus der Doku:

   

Und hier der Code eines Delphibeispieles, dass die DLL einbindet:

   

Kann auch die gesamte Doku zur Verfügung stellen.

Wäre sehr dankbar, wenn mir einer Tipps geben könnte.

Gruß
sven
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.10.2006, 10:26
Beitrag #2

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Einbinden einer Delphi-dll
Hallo Sven,

als erstes musst du herausfinden was die Datentypen "TProcWithPChar", "vPort" und "PChar" bedeuten. Du kannst es mit Bytearray versuchen. Ich bin auch kein Delfin, aber es sollte machbar sein.

Gruss, Eugen

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.10.2006, 10:36
Beitrag #3

Svenni Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 227
Registriert seit: Mar 2005

7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE

23843
Deutschland
Einbinden einer Delphi-dll
Habe schon mehrere Mails an den Hersteller der DLL und der Hardware (Elnec Programmiergeräte) geschrieben. Leider kommen die Infos sehr zäh rüber.
Der Entwickler von dort schrieb mir...

> data is TProcWithPChar? Is it a pointer?

Pointer to null-terminated string.


Daraufhin habe ich einen Kollegen hier in der Firma gefragt. Er arbeitet jedoch mit C und könnte mir auch nicht richtig helfen. Sad
Was mich stutzig macht ist, dass die Variable eine Prozedur aufruft. Mein Kollege sagte, dass man dadurch zwei Pointer bekommt. Wacko

Kann ich so etwas überhaupt in LV verarbeiten?

Gruß
sven
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.10.2006, 10:49
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Einbinden einer Delphi-dll
' schrieb:Kann ich so etwas überhaupt in LV verarbeiten?
Zwar weis ich das nicht genau, ich bin aber der Meinung: eher nicht.

PChar ist ein nullterminierter String, das geht auf jeden Fall. TProcWithPChar ist eine Funktion, die von der DLL heraus aufgerufen wird. Diese Funktion muss im Anwenderprogramm liegen. Die Funktion CreateClientAnd... teilt also der DLL mit, dass die eine Funktion cProcessProc eben über diesen Pointer ansprechbar ist. Ebenso mit der Funktion vWriteToLogProc.

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
17.10.2006, 10:55
Beitrag #5

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Einbinden einer Delphi-dll
' schrieb:Zwar weis ich das nicht genau, ich bin aber der Meinung: eher nicht.

PChar ist ein nullterminierter String, das geht auf jeden Fall. TProcWithPChar ist eine Funktion, die von der DLL heraus aufgerufen wird. Diese Funktion muss im Anwenderprogramm liegen. Die Funktion CreateClientAnd... teilt also der DLL mit, dass die eine Funktion cProcessProc eben über diesen Pointer ansprechbar ist. Ebenso mit der Funktion vWriteToLogProc.


Meinst du es ist eine Callbackfunktion? Dann geht es in LV nicht. Callbackmechanismus funktioniert in LV nur bei ActiveX, bei DLLs geht es nicht.


Aber hier steht doch, es wäre ein Pointer auf String.

> data is TProcWithPChar? Is it a pointer?

Pointer to null-terminated string.


Dann sollte es auch mit Stringtyp laufen.

Gruss, Eugen

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
17.10.2006, 11:51
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Einbinden einer Delphi-dll
' schrieb:Meinst du es ist eine Callbackfunktion?
Ja. So in der Art.

Zitat:Aber hier steht doch, es wäre ein Pointer auf String.
Das was da steht und das, was in der zweiten Graphik steht "type TProcWithPChar = procedure(line: PChar); stdcall;" passt aber nicht zusammen. Und da halt ich mich doch zuerst einmal an die Graphik. PChars, also der Parameter line in der Funktion sowie die beiden anderen Parameter, sind Pointer auf Strings.

Im übrigen muss ich noch dazusagen, dass ich meine Zeit mehr mit Delphi verbringe als mit LabVIEW.

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
17.10.2006, 12:05
Beitrag #7

Svenni Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 227
Registriert seit: Mar 2005

7.1, 8.0, 8.2, 8.21, 8.5, 8.6, 2009, 2010, 2011, 2012, 2013, 2014
2000
DE

23843
Deutschland
Einbinden einer Delphi-dll
Hallo IchSelbst,

ich hatte auch schon das Gefühl, dass der Support des Herstellers nicht genau wußte, worum es geht.
Scheinbar ruft die DLL Funktionen im Anwenderprogramm auf. Leider kann man dies in LabVIEW nur bei ActiveX und .net verarbeiten. Schade.

Vielen Dank für die Hilfe, dann werde ich mich mal darauf konzentrieren, dass ich das Telnetprotokoll rausbekomme.

Gruß
sven
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Fehler beim Schließen des VIs nach Delphi-DLL-Aufruf Bärbel 10 14.220 11.11.2013 11:44
Letzter Beitrag: andreaskoller
  Einbinden einer DLL mit mehr Output-Parametern, als Input-Parametern Herm 3 6.244 14.06.2011 11:12
Letzter Beitrag: rolfk
  DLL in LV einbinden. Geht es nur mit einer anderen Wrapper-DLL Dimitri 24 27.165 02.07.2010 15:16
Letzter Beitrag: Dimitri
  Einbinden einer dll (*.so) Apu 3 6.327 08.03.2010 19:51
Letzter Beitrag: rolfk
  Datenübergabe aus Delphi-DLL in LabVIEW kokisan2000 5 7.054 13.11.2009 19:42
Letzter Beitrag: Y-P
  Einbinden einer DLL, Speichermanagement Mictlantecutli 3 7.927 14.10.2009 08:33
Letzter Beitrag: Mictlantecutli

Gehe zu: