AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi C-Programm in Delphi einbinden
Thema durchsuchen
Ansicht
Themen-Optionen

C-Programm in Delphi einbinden

Ein Thema von pats · begonnen am 6. Jun 2006 · letzter Beitrag vom 7. Jun 2006
Antwort Antwort
pats

Registriert seit: 16. Mai 2006
3 Beiträge
 
#1

C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 16:43
Hallo!

Ich waere sehr dankbar fuer jede Information, die ich zu meiner Frage erhalten kann!

Hintergrund:
Ich verwende einen Eyetracker um zu bestimmen welchen Bildschirmteil eine Testperson zu einem bestimmten Zeitpunkt anschaut. Dieser Eyetracker sendet alle paar Millisekunden ein paar Integer Zahlen ueber ein Netzwerk an meinen PC. Diese Werte werden von einem C-Programm aufgefangen und in ein textfile geschrieben. Ich moechte diese Werte real-time (also moeglichst ohne Zeitverscheibung) wieder verwenden in einem Delphi-Programm. Eigentlich koennte ich einfach das textfile mit meinem Delphi Programm in regelmaessigem Abstand auslesen (ca. alle 20ms) und die Werte dann in Variablen setzen. Ich suche aber nach einem Weg um den Umweg ueber das textfile zu umgehen. Das C-Programm habe ich nicht geschrieben und ich verstehe auch kein C. Ich kann das Programm auch nicht in Delphi nachbauen, dazu reicht meine Kenntnis nicht aus. Es ist allerdings schon moeglich das C-Programm anzupassen (ein Kollege kann mir dabei helfen).

Frage:
Ist es moeglich, das C-Programm irgendwie in mein Delphi-Programm einzubinden, sodass die Werte, die das C-Prog auffaengt direkt in Delphi Variablen geschrieben werden mit denen ich weiterarbeiten kann? Oder gibt es einen anderen Weg um das schreiben und lesen des textfiles zu umgehen?

Mehr Infos? Einfach nachfragen!
Schonmal vielen Dank!
Viele Gruesse,
Pats
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 16:59
Wenn dein Kollete die Quelltexte hat könnte er das C-Programm in eine DLL wandeln/packen und diese DLl bindest du dann in dein Delphiprogramm ein. Die DLL muss dann einfach nur Callbackfunktionen aufrufen. Eine andere Möglichkeit wäre dass, das C-Programm deinem Programm eine Nachricht schickt (mit SendMessage/PostMessage). Wenn du die Latenz so gering wie möglich halten willst ist es jedoch das beste das C-Programm als DLL umzusetzen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 17:01
Herzlich willkommen in der Delphi-PRAXiS, pats.

Mein erster Ansatzpunkt wäre die technische Dokumentation zu dem EyeTracker. Vermutlich lässt sich mit Hilfe eines developer kits zu diesem Produkt recht schnell eine Schnittstelle zu Delphi realisieren. Hast du Zugriff auf entsprechende Informationen oder kannst du die genaue Produktbezeichnung geben? Vielleicht weiß dann schon jemand mehr.

Zu dem C-Programm wäre interessant zu wissen, ob du die Quellen dazu besitzt. Deiner BEschreibung nach zu urteilen handelt es sich um ein Demo-Programm.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
pats

Registriert seit: 16. Mai 2006
3 Beiträge
 
#4

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 18:00
Hallo,

vielen Dank fuer die Antworten.

Ja, ich habe Zugang zum Quelltext des C-Programms, mein Kollege hat es geschrieben.

Ich habe auch Zugang zur technischen Dokumentation des Eyetrackers (soweit diese noch vorhanden war, das Equipment ist ueber 10 Jahre alt). Es hat uns ca. 2 bis 3 Wochen gekostet, bis wir mit Hilfe des C-Progs die Daten ueber ein Netzwerk empfangen konnten. Da ich selbst nur Hobby Programmierer bin, war dieses Netzwerkproblem eine grosse Aufgabe (es handelt sich hier auch noch um ein Netzwerk zwischen einem Mac und zwei PCs). Mein Kollege, der das C-Prog geschrieben hat, versteht mehr von Netzwerken, aber leider kein Delphi und ich verstehe kein C - daher das Problem mit den beiden Programmiersprachen. Ich wuerde gerne mit dem C-Programm weiterarbeiten, einfach, weil es ziemlich schwierig war es so hinzukriegen und jetzt gerade endlich funktioniert.

Der Vorschlag, eine dll-datei zu verwenden erscheint mir daher sinnvoll. Eine dll zu erstellen ist kein Problem (sagt mein Kollege). Ich hab mich gerade mal schlau gemacht, was eine dll ist. Jetzt die Frage, wie binde ich eine dll in Delphi ein? Wuerdet ihr mir darueber ein paar Detailinfos verraten? Vielen Dank schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 18:18
Eigentlich ganz einfach, wenn man auf ein paar Unterschiede zwischen C und Delphi achtet.

Grundsätzlich:

MSDN-Library durchsuchenLoadModule - Lädt eine DLL in den Prozess, MSDN-Library durchsuchenGetProcAdress - damit bekommst du die Sprungadresse, also einen Pointer auf, einer exportierten Funktion, außerdem gibt es auch die Möglichkeit des Delphi-Referenz durchsuchenstatisch linkens von Modulen.

C/Delphi:

Struct = packed record, strings übermitteln - schweirig, immer mit Aufrufkonvention stdcall arbeiten.

Du solltest mit diesen Infos auch im Forum einiges finden können.
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#6

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 19:39
Ist es nicht möglich in delphi *.obj Dateien einzubinden ? Damit sollte auch möglich sein ?!
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 19:50
Zitat von arbu man:
Ist es nicht möglich in delphi *.obj Dateien einzubinden ? Damit sollte auch möglich sein ?!
Bedingt. Allerdings unterscheiden die sich je nach Compiler. Also Watcom <> Microsoft <> Borland
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 20:31
anstelle von Loadmodule würde ich LoadLibrary nehmen. Und ein gutes DLL-Tutorial gibts hier:
http://www.dsdt.info/tutorials/dlls/
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

Re: C-Programm in Delphi einbinden

  Alt 6. Jun 2006, 22:59
Wenn ich das ganze richtig verstanden habe, schickt doch Dein C-Programm Daten an einen Rechner im Netzwerk. Wenn das der Fall ist, warum schreibst Du nicht ein Delphi-Programm, welches Deine Daten empfangen kann. Dann kannst die Daten, die Du empfängst direkt weiterverarbeiten.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
pats

Registriert seit: 16. Mai 2006
3 Beiträge
 
#10

Re: C-Programm in Delphi einbinden

  Alt 7. Jun 2006, 16:22
Vielen, vielen Dank!!! Problem geloest!!!

Ich habe jetzt das Programm zum Auffangen der Daten ebenfalls in Delphi nachgeschrieben. Das erschien mir zuerst zuviel Aufwand, aber mit dem Wissen, wie das Prog aussehen muss, war es ziemlich einfach es in eine andere Sprache zu uebersetzen. Und wieder was ueber TCP Verbindungen in Delphi gelernt, was will man mehr...

Nochmal Danke an alle und bis zum naechsten Mal!
Pats
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz