Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Remote Procedure Call (https://www.delphipraxis.net/66735-remote-procedure-call.html)

Alex_ITA01 3. Apr 2006 13:26


Remote Procedure Call
 
Hallo erstmal,
ich wollte mal fragen, ob jemand von euch schonmal Erfahrungen mit RPC (Remote procedure call) gemacht hat?
Das heißt, ich möchte eine Funktion in einer DLL zur Laufzeit des Programmes "umhängen" können. Ich möchte die Anwendung nicht immer neu starten wenn ich ein Zeichen im Source geändert habe :-)

Wäre nett wenn jemand dazu was schreibt.
MFG Alex

shmia 3. Apr 2006 14:27

Re: Remote Procedure Call
 
RPC hat nichts mit DLLs zu tun. RPC definiert, wie man Prozeduren/Funktionen in einem entfernten
Prozess aufruft und die Funktions-Parameter über Netzwerk transportiert.
http://de.wikipedia.org/wiki/Remote_Procedure_Call

Um eine DLL zu testen geht man so vor:
* man erstellt ein Grundgerüst der DLL (das hast du schon)
* man erstellt eine Testanwendung, die die DLL lädt und dann verschiedene Funktionen aufruft
* man öffnet das DLL-Projekt und trägt die Testanwendung in der Delphi-IDE unter Start->Parameter->Hostanwendung ein

Jetzt braucht man nur noch F9 zu drücken, die DLL wird kompiliert und die Testanwendung wird gestartet.
Man führt seine Test durch, beendet die Testanwendung und kann den Sourcecode ändern.
Mit dieser Arbeitsweise kann man auf schmutzige Tricks verzichten und hat dennoch ein hoher Änderungstempo.

Alex_ITA01 3. Apr 2006 14:36

Re: Remote Procedure Call
 
okay Danke!
Wie kann ich dann zur Laufzeit eine DLL "umhängen". Ich dachte das geht damit RPC hat sich aber anscheind erledigt :-)
Ich habe eine ziemlich große Anwendung und man sollte sie nicht immer neu starten ;-)
Wie kann ich da Funktionen schnell umhängen?

MFG Alex

shmia 3. Apr 2006 14:44

Re: Remote Procedure Call
 
Zitat:

Zitat von Alex_ITA01
Ich habe eine ziemlich große Anwendung und man sollte sie nicht immer neu starten ;-)

Genau das ist dein Denkfehler. Du brauchst ein eigenes Testprogramm und solltest den Test der DLL nicht mit der Hauptanwendung durchführen. Oder du baust ein Testformular in deine Hauptanwendung ein, damit du dich nicht durch mehrere Menus hangeln musst.

Solange die Anwendung die DLL geöffnet hat, ist die DLL schreibgeschützt. Nix zu machen, da hat das Betriebssystem seine Finger drauf.
Du kannst also höchstens zwei Buttons mit "Unload DLL" und "Load DLL" in deine Anwendung einbauen.
Aber auch das ist schwierig, wenn du die DLL nicht selbst mit LoadLibrary geladen hast.

brechi 3. Apr 2006 14:45

Re: Remote Procedure Call
 
Was heißt umhängen?

Wenn du meinst, dass du eine neue DLL hast die das Programm benutzen sollst, musst du die DLL dynamisch laden (am besten in dem Programm dann einne Button einbauen der das dann übernimmt)

Alex_ITA01 3. Apr 2006 15:00

Re: Remote Procedure Call
 
In der DLL ist eine ziemlich große Procedure. Wenn man diese jetzt für den Kunden ändern muss :-) und es sich dabei nur um ein kleinen Wert handelt, will ich nicht die ganze Anwendung neu starten sondern der Anwendung sagen, jetzt nutze eben DLL_2 weil die Procedure aus DLL_1 für den Kunden nicht mehr gewünscht ist.
Also muss ich sie seperat laden bzw. entladen?

MFG Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz