Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi DLL, DDE oder OLE ??? (https://www.delphipraxis.net/13919-dll-dde-oder-ole.html)

cheatzs 29. Dez 2003 11:14


DLL, DDE oder OLE ???
 
Hi Leute,
also ich arbeite gerade an einem größeren Projekt.
Nun bin ich an die Grenzen meines Verständinisses gelangt:
Ich habe ein Programm dass verschiedenste Daten auswerten lassen soll. Dass soll ein anderes Programm oder DLL erledigen. Dann das Ergebnis der Auswertung dem ersten Programm wieder übermitteln. Das Auswert-Programm sollte vom Benutzer nich wahrgenommen werden.
Nun weiß ich allerdings nicht für welche Variante ich mich entscheiden soll, da ich von allen 3 noch nicht gerade viel verstehe:
Übertragen zwischen den Programmen muss:

ein String und ein Integer, also nicht viel

Da die Auswertung der Daten wahrscheinlich sehr lange dauern wird wollte ich irgendeine Fortschrittsanzeige einbinden. Bei DLL's könnte man ja ein Form einblenden, das würde zwar nicht so schön aussehen, würde aber den Zweck erfüllen. Nun weiß ich nich was bei DDE oder OLE Möglich ist, allerdings hoffe ich das es möglich wäre eine Art Feld in dem ersten Programm freizuhalten in dem man dann diese Fortschrittsanzeige direkt anzeigen kann.
Das ganze muss deshalb so kompliziert sein, da die Fortschrittsanzeige und auch das Auswertprogramm völlig variable sein müssen; also auch von anderen Programmieren erweiterbar sein sollen, usw. Außerdem könnte ich mir vorstellen vielleicht über andere Programmiersprachen, z.B Java, oder unter Linux auf dieses Auswertprogramm zugreifen zu können, ohne es neu programmieren zu können.

Wäre gut wenn jemmand Erfahrung mit DLL, DDE oder OLE hatt und mir erklären kann, welches am sinnvollsten ist bzw. ob das überhaupt möglich ist. Vielleicht kennt jemmand auch noch eine andere Methode? ( hab mal was von XML Kommunikation zwischen 2 Programmen gehört )

Rainer_Unger 29. Dez 2003 11:29

Re: DLL, DDE oder OLE ???
 
Hallo,

grundsätzlich:

Eine DLL ist im Prinzip nichts anderes als ausgelagerter Code. Die läuft auch nicht von selber.

OLE und DDE sind Verbindungsmechanismen, also etwas ganz anderes.

Wenn du also einen Thread laufen hast, könntest du mit DDE deine Daten übertragen. Hab ich schon gemacht klappt einwandfrei.
Nachteil:
Es sind clevere Handshakemechanismen erforderlich damit nichts verloren geht.

Dein Problem lösen kannst du mit keinem dieser Dinge. Du musst schon einen Prozess im Hintergrund laufen lassen und auf diesen mittels dde zugreifen.

Solltest du nähere Informationen brauchen stehe ich gerne zur Verfügung!

Rainer Unger

Wormid 29. Dez 2003 11:32

Re: DLL, DDE oder OLE ???
 
Moin,

ich persönlich würde es mit einer DLL versuchen...

Deiner Function/Procedure in der DLL übergibst du als zusätzlichen Parameter das Handle einer ProgressBar in deiner Hauptanwendung... Und dann kannst du z.B. per Messages (beschrieben z.B. auf Seite 76 ff. in Luckies Win32Api-Tutorials -> http://www.luckie-online.de/tutorial...orials_pdf.pdf ) die Progressbar in der Hauptanwendung updaten.

Der Vorteil dieser Lösung wäre, das es relativ einfach zu realisieren sein sollte und das es nicht nötig ist, dicke Forms usw. in die DLL mit reinzupacken.

Mit freundlichem Gruß

Wormid

Generalissimo 29. Dez 2003 11:44

Re: DLL, DDE oder OLE ???
 
Moins,

also das was du suchst klingt ziemlich genau nach nem Automation-Server.
Dort wird die Aufgabe über ein Interface an das COM-Objekt im Automation-Server weitergegeben.
Die komplette Aufgabe wird dann unabhängig von deiner Clientanwendung durchgeführt.
Ist alles erledigt benachrichtigt der Automation-Server die Clientanwendung, dass
die Arbeit erledigt ist und das Ergebnis vorliegt.

Nachteil: Es ist COM, sprich bissl Einarbeitung nötig!

cheatzs 29. Dez 2003 12:00

Re: DLL, DDE oder OLE ???
 
@Generalissimo
von COM hab ich noch nichts gehört, deswegen weiß ich nich was du meinst

@Rainer_Unger
Ein andere Prozess im Hintergrund würde mich nicht stören, mir gehts dann eigentlich bloß um folgende Sache:

@Wormid
Das klinkt schon sehr gut, aber eine Frage:
könnte man über die DLL auch die Progressbar im Hauptprogramm initialisieren, nicht "nur" steuern (bzw. auch andere Komponenten)?

Generalissimo 29. Dez 2003 12:26

Re: DLL, DDE oder OLE ???
 
Nix gehört? Hast du bestimmt schon! Lief mal ne Weile unter ActiveX.
Wenn du Delphi6 hast, dann geh mal unter Datei->Neu auf die Reiterseite ActiveX.
Zudem stehen unter Delphi6 unter der Komponentenpalette "Server" die ganzen
Automation-Server von Word, Excel, Outlook ... zur Verfügung.
Die sind nichts anderes als Wrapper-Kompos von COM-Objekten die auf deinem System
auch vorhanden sein müssten.
Kannst ja mal in Delphi unter Projekt->Typbibliothek importieren gehen und dort in der
Liste nach "Microsoft Word ... Object.." suchen.

cheatzs 29. Dez 2003 12:42

Re: DLL, DDE oder OLE ???
 
Hi,
also ActiveX kenn ich und hab auch Infos dazu, bloß kann man diese auch dynamisch einbinden?
Also wenn ich das ActiveX Element irendwo runterlade und dem laufenden Programm sage das er das benutzen soll. Geht das?
Soweit ich weiß muss man die ActiveX Elemente zur Entwicklung des Programms einfügen, oder?

Generalissimo 29. Dez 2003 13:13

Re: DLL, DDE oder OLE ???
 
Halt dich nicht zu fest an Active X fest.
Active X ist wie ein eignes Programm. In sich abgeschlossen "nur" keine Exe (bitte jetzt mich nicht
verprügeln. Ich weiss das das nicht korrekt beschrieben ist)
Active X war dazu gedacht z.B. fürs Web in die Page ein Programm einzubinden.
(Vorgänger war OCX. Active X war die abgespeckte Version von OCX da im Web die Übertragungszeit
entscheidet.) Das ging natürlich auch mit normalen Programmen.

Zu deiner Frage: Ja kann man dynamisch machen. Geh mal in D6 auf Komponente->Active X importieren
Wenn du z.B. Acrobat hast, müsste dort irgensowas auftauchen oder halt ne andere Kompo.
Die installierst du unter der Reiterseite Active X und in ein gewünschtes Package (am besten ein neues
da dann die Deinstallation am leichtesten ist.)
Dann mal auf ein Form ziehen. Danach kann mann ja sich mal in der Unit des ActiveX-Controlls umschauen.
Dort wirst du dann ein Create Prozedure finden.

Ein Buchtipp hätte ich noch. Wenn du dich mit dem Thema näher beschäftigen willst.
COM/DCOM/COM+ mit Delphi ISBN: 3935042019
Das Buch ist von Andreas Kosch geschrieben. Unter Entwickler Forum bekommt man
auch direkt von ihm Antworten.
Ist aber ein sehr komplexes Thema!!! Überleg ob sich der Aufwand mit dem Nutzen deckt und ob du das nötige
Vorwissen mitbringst. Ich bin selber noch am lernen in dem Bereich.

Ich jedenfalls fand und finde es ein sehr interessantes Thema (COM meine ich). Da es vorallem immer wichtiger wird.
Stichwort NET Enterprise Services.

woki 29. Dez 2003 13:16

Re: DLL, DDE oder OLE ???
 
Zitat:

Zitat von cheatzs
Hi,
also ActiveX kenn ich und hab auch Infos dazu, bloß kann man diese auch dynamisch einbinden?

ActiveX und OLE basieren auf COM, oders anders gesagt sind Teilbereiche von COM
Zitat:

Zitat von cheatzs
Also wenn ich das ActiveX Element irendwo runterlade und dem laufenden Programm sage das er das benutzen soll. Geht das?

ja
Zitat:

Zitat von cheatzs
Soweit ich weiß muss man die ActiveX Elemente zur Entwicklung des Programms einfügen, oder?

Zur Entwicklungszeit muß das Interface bekannt sein, daß man ansprechen will, nicht die implementation. Etwas mehr wird benötigt, wenn man visuell entwickeln will, aber auch dann wird nur die Typelibrary wirklich benötigt.

cheatzs 29. Dez 2003 13:38

Re: DLL, DDE oder OLE ???
 
Danke an die vielen Antworten, jetzt weiß ich erstmal wo ich stehe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 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