| Autor |
Beitrag |
DSeven
      
Beiträge: 39
|
Verfasst: So 21.09.03 21:53
Hallo
Ich möchte die Com-Schnittstelle eines Programms ansprechen um mit diesem zu arbeiten aber wie mach ich das? Eine interface Unit von dem Programm für delphi hab ich schon aber was nun?
|
|
mstuebner
      
Beiträge: 132
Win2000, XP
D7
|
Verfasst: Mo 22.09.03 01:32
| DSeven hat folgendes geschrieben: | Hallo
Ich möchte die Com-Schnittstelle eines Programms ansprechen um mit diesem zu arbeiten aber wie mach ich das? Eine interface Unit von dem Programm für delphi hab ich schon aber was nun? |
Wie meinst Du das? Wenn Du eine Unit hast die Funktionen enthält die den Com Port ansprechen, dann tät ich sagen: Funktionen aufrufen!
Ansonsten: More Input please.
_________________ mfg Matthias
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Mo 22.09.03 13:00
Hallo
Nur die Funktionen aufrufen? Ich bin etwas verwirrt weil da sachen stehen wie:
{9419B6A2-9D73-11D4-BB79-B0BBF3DE2E23}
die werden als const Variablen definiert keine ahnung warum.
naja ich werds mal versuchen. Das ist ein Com-Server denn ich irgendwie ansprechen möchte.
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Mo 22.09.03 13:36
Schau dir mal die Funktionen: BuildCommDCB, SetCommState, TransmitCommChar etc. in der W32 hilfe an.
damit sollte es möglich sein, den Comport anzusprechen.
grez
msch
_________________ ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 22.09.03 14:22
Nicht doch! Es geht um COM = Component Object Model, nicht um die Commports!
@DSeven:
Hast du eine Pasdatei, die dir die Interface-Deklaration zu dem Programm, das du ansteuern möchtest, enthält? Da müsste etwas in der Art
Quelltext 1:
| IMeinProgramm=interface |
drinstehen.
Auch ganz wichtig: Die CLSID des Programms. Mit dieser Guid erstellst du eine Verbindung zu dem zu benutzenden Proggie. Steht meist ebenfalls in der Pasdatei.
So läuft´s in etwa:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var MeinProgramm:IMeinProgramm; begin //Verbindung mit Programm herstellen MeinProgramm:=(CreateComObject(CLSID_MeinProgramm) as IMeinProgramm); //Programm benutzen MeinProgramm.TuEtwas; //Programm wieder freigeben MeinProgramm:=NIL; end; |
Cu,
Udontknow
Zuletzt bearbeitet von Udontknow am Mo 22.09.03 14:23, insgesamt 1-mal bearbeitet
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mo 22.09.03 14:23
In der Unit zu deinem Com-Server werden irgenwelche Intefaces definiert sein (InteressantesInterface = interface(IDispatch)). Daneben gibt es auch ein paar Co-Klasen (CoInteressantensInterface).
verwenden kannst Du es folgendermaßen
var
myIntfVariable: InteressantesInterface;
begin
myIntfVariable := CoInteressantensInterface.Create;
myIntfVariable.InteressanteMethode(....);
end;
Freigeben brauchst Du den COM-Server nicht mehr. Wird von Delphi durch die automatische referenzzählung freigegeben sobald keine Interfacezeiter mehr auf das COM-Objekt vorhanden ist.
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Mo 22.09.03 14:25
| Udontknow hat folgendes geschrieben: | Nicht doch! Es geht um COM = Component Object Model, nicht um die Commports!
@DSeven:
Hast du eine Pasdatei, die dir die Interface-Deklaration zu dem Programm, das du ansteuern möchtest, enthält? Da müsste etwas in der Art
Quelltext 1:
| IMeinProgramm=interface |
drinstehen.
Auch ganz wichtig: Die CLSID des Programms. Mit dieser Guid erstellst du eine Verbindung zu dem zu benutzenden Proggie. Steht meist ebenfalls in der Pasdatei.
So läuft´s in etwa:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| var MeinProgramm:IMeinProgramm; begin //Verbindung mit Programm herstellen MeinProgramm:=CreateComObject(CLSID_MeinProgramm); //Programm benutzen MeinProgramm.TuEtwas; //Programm wieder freigeben MeinProgramm:=NIL; end; |
Cu,
Udontknow |
Hallo
Danke genau das habe ich gesucht.
Ja dort steht die Interface Deklaration.
Werde mal etwas rum programmieren
@Bernhard Geyer: Danke ich werds mal probieren. Habe eigentlich noch nie mit Com gearbeitet. Gibt es irgendwie ein Buch zu diesem Thema oder eine Homepage?
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mo 22.09.03 14:45
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Mo 22.09.03 14:49
Danke
Ich werde mir die Bücher mal bestellen um einen besseren überblick über dieses Thema zu erhalten.
|
|
mstuebner
      
Beiträge: 132
Win2000, XP
D7
|
Verfasst: Mo 22.09.03 15:13
| DSeven hat folgendes geschrieben: | Hallo
Nur die Funktionen aufrufen? Ich bin etwas verwirrt weil da sachen stehen wie:
{9419B6A2-9D73-11D4-BB79-B0BBF3DE2E23}
die werden als const Variablen definiert keine ahnung warum.
naja ich werds mal versuchen. Das ist ein Com-Server denn ich irgendwie ansprechen möchte. |
Asche auf mein Haupt, ich war irgendwie auf die serielle Schnittstelle fixiert. Ergo war mein Hinweis sinnfrei.
_________________ mfg Matthias
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Mo 22.09.03 20:17
Hallo
Also ich habe die methode von Udontknow versucht ging nicht. Folgende Fehlermeldung kommt: "Klasse nicht registriert".
Vieleicht handelt es sich auch um Dcom weil ich die ms dcom dll brauche.
Würde mir irgendjemmand besser helfen wenn ich ihm die unit schicke?
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 23.09.03 07:56
Hmmm... Du hast auch garantiert die CLSID an CreateComObject übergeben? Und nicht etwa irgendeine IID?
Evtl. muss tatsächlich noch die DLL, in der die Klasse zu finden ist, registriert werden. Da gab es ein Kommandozeilenprogramm, das das machte, mir fällt der Name aber nicht ein. Du kannst es auch durch ein Delphi-Programm registrieren lassen, das gibt es in dem Borland-Unterverzeichnis Demos\ActiveX\TRegServer.
Cu,
Udontknow
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Di 23.09.03 11:06
regsvr32 <DLL-zu-registrieren> registriert die Schnittstelle der DLL
Falls es sich um eine Exe handelt: <Exe-zu-registrieren> /REGSERVER
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Di 23.09.03 12:49
| Bernhard Geyer hat folgendes geschrieben: | regsvr32 <DLL-zu-registrieren> registriert die Schnittstelle der DLL
Falls es sich um eine Exe handelt: <Exe-zu-registrieren> /REGSERVER |
Danke ich werds mal versuchen.
Also muss ich die exe registrieren.
Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen?
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mi 24.09.03 12:33
| Zitat: | | Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen? |
Kommt drauf an was die Anwendung macht. Evtl. hat das COM-Objekt noch einen Server-Teil mit dem es sich verbinden muß um etwas zu erledigen.
Was steht in der Beschreibung zur Komponente?
|
|
em-zed
      
Beiträge: 17
Win 2003 Server Pro
D1
|
Verfasst: Mi 24.09.03 13:43
Must halt einfach den Com Modulator trimmen, das ist doch total einfach!
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mi 24.09.03 14:22
Geht doch nicht! Die Grafikkarte verhindert doch einen Zugriff der Autoexec.bat über den Vesa-Local-Bus, Port X23A! Mensch! 
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mi 24.09.03 14:34
Titel: Forumsoftware verwirrt?
Ist die Forums-Software verwirrt oder was sollen die letzten beiden Einträge?
|
|
DSeven 
      
Beiträge: 39
|
Verfasst: Mi 24.09.03 15:14
| Bernhard Geyer hat folgendes geschrieben: | | Zitat: | | Es handelt sich um ein programm welches irgendwie eine IP hat über das ich das progg anspreche und port ist das normal bei dcom anwendungen? |
Kommt drauf an was die Anwendung macht. Evtl. hat das COM-Objekt noch einen Server-Teil mit dem es sich verbinden muß um etwas zu erledigen.
Was steht in der Beschreibung zur Komponente? |
Hmm also es ist keine Kompo.
Laut hersteller gibts auch keine Dokumentation.
Ja das ist ein Server habs gerade gesehen.
Hmm schaut es euch einfach mal an:
dd.cron.ru/dbg/
Das progg ist in C++
|
|
Bernhard Geyer
      
Beiträge: 721
Erhaltene Danke: 3
|
Verfasst: Mi 24.09.03 16:23
| Zitat: | | Hmm also es ist keine Kompo. |
Vielleicht keine Kombo im Delphi-Sinn aber im allgemeinen SW-Entwickler Sprachgebrauch schon.
| Zitat: | Ja das ist ein Server habs gerade gesehen.
Hmm schaut es euch einfach mal an: |
Ich denke mit der IP/Port-Adress ist die IP/Port-Adresse des PHP Debugger and Profiler mit dem du dich verbinden kannst.
|
|