| |
|
|
- page 1 - |
|
| qui dans seiner Anwendung avec sicherheitstechnisch sensiblen données hantiert, sollte très oui c'est ca sur qui Nutzung qui Profanfunktion @Externe sur).
|
|
|
| |
|
|
|
| |
|
- page 1 - |
|
| si je avec DEF qui externe Funktion am Anfang meines Programmes deklariere, quand wird ensuite qui dagehörige Sprungadresse ermittelt? Beim prochain Aufrufen qui Funktion im Programme ou bien chez qui Deklaration?
Wird cet Sprungadresse irgendwann ermittelt, au cours de mon Prozess fonctionne, peux je im geladenen Programme qui Exporttables qui DLL changement et so qui aufgerufenen Funktionen abgreifen. Wird qui Adresse beim magasin des Programmes am Anfang meines Quelltextes ermittelt, allez cela pas so simple.
cela allez dans aucun Weise vers Profan, sommes Gedanken zum Programmieren schlechthin... |
|
|
| |
|
|
|
RGH | Nachtrag:
Einen Unterschied chez DLL-Aufrufen gibt es (allerdings pas dans einem XProfan-Programme):
DLL peut statisch et dynamisch gelinkt volonté:
statisch: ici volonté juste beim Programmstart qui DLL geladen et qui Funktionsadressen gelesen, so dass chez späteren Aufrufen, cet bereits zur Disposition stehen. Vorteil: Ist quelque chose plus rapide et dans den meisten Programmiersprachen (z.B. Delphi) einfacher trop programmieren. le tort: si qui DLL et/ou bien Funktionen pas vorhanden sommes, startet cela Programme pas et Windows meldet, qui une zum Effectuer des Programmes notwendige DLL fehlt. là qui OpenGL-DLL sur allen de XProfan unterstützten Systemen (ab Windows 95/NT 3.51) vorhanden sommes, sommes cet dans XProfan statisch gelinkt.
dynamisch: ici volonté qui DLL seulement geladen et qui Funktionsadressen ermittelt, si vous im Programme aufgerufen volonté. Vorteil: si bestimmte Funktionalitäten vom Anwender pas nécessaire volonté, braucht il aussi pas qui DLL sur seinem calculateur avons. une Fehlermeldung venez seulement, si le entsprechende Fonctionnalité aufgerufen wird. le tort: c'est un entier petite wenig langsamer et z.B. dans Delphi quelque chose aufwändiger trop implementieren. qui ODBC-DLL pour qui SQL-Schnittstelle habe je dans XProfan dynamisch gelinkt. XProfan startet alors aussi sur Systemen sans installierte ODBC-Treiber (z.B. Win95/98 sans MS-Office) völlig problemlos, erzeugt mais une Fehlermeldung, si on sur solchen Systemen un SQLInit versucht.
Im XProfan-Programme volonté pour alle avec DEF, EXTERNAL ou bien CALL erzeugten DLL-Aufrufen qui notwendigen DLL dynamisch gelinkt. (cela wäre beim Interpreter aussi gar pas anders possible, là cette oui pas savons peux, quoi pour Schweinereien qui geschätzte Programmierer alles avec ihm programmieren veux.)
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.10.2006 ▲ |
|
|
|
|
RGH | [quote-part:b7f9a07702=Andreas Hötker]si je avec DEF qui externe Funktion am Anfang meines Programmes deklariere, quand wird ensuite qui dagehörige Sprungadresse ermittelt? Beim prochain Aufrufen qui Funktion im Programme ou bien chez qui Deklaration?[/quote-part:b7f9a07702] seulement beim Aufruf qui Funktion im Programme. de daher gibt es keinen Unterschied entre DEF et EXTERNAL.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.10.2006 ▲ |
|
|
|
|
| [quote-part:b7ae512a2a=RGH] CALL: qui Aufruf folgt sur qui directe Adresse., en supplément doit alors im XProfan-Programme qui DLL geladen et qui FunktionsAdresse ermittelt volonté. cette Weg ist compliqué (= lente) et nécessaire plusieurs Zeilen im XProfan-Programme. pouvoir eigentlich seulement Sinn, si on, etwa chez COM-Interfaces, seulement qui Adressen zur Disposition hat.[/quote-part:b7ae512a2a] Beim Aufruf avec Funktionsnamen doit interne aussi seulement qui Funktionsadresse ermittelt volonté, so cela es avec Call IMHO pas länger dauern peux, mais genauso vite son sollte et ab dem 2ten Funktionsaufruf une Geschwindigkeitszuwachs bedeutet.
là es dans qui acte umständlicher ist, lohnt qui Verwendung mais meist pas |
|
|
| |
|
|
|
RGH | [quote-part:8841b3a260=TS-Soft]Beim Aufruf avec Funktionsnamen doit interne aussi seulement qui Funktionsadresse ermittelt volonté, so cela es avec Call IMHO pas länger dauern peux, mais genauso vite son sollte et ab dem 2ten Funktionsaufruf une Geschwindigkeitszuwachs bedeutet.[/quote-part:8841b3a260] là XProfan aussi compilé malheureusement toujours pas so vite comment TurboDelphi ist ;) , ist es déjà un kleiner Vorteil, si Delphi qui DLL invite et qui Funktionsadresse ermittelt et pas XProfan. chez mehrfachem Aufruf derselben Funktion peux cela naturellement kompensiert volonté et ensuite une kleinen Tempo-Vorteil bedeuten.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.10.2006 ▲ |
|
|
|
|
| Vorneweg: seulement la fois vielen Dank.
je habs avec TNT grad la fois selbst ausprobiert et qui API MessageBeep aus qui User32 sur qui Funktion MessageBoxA umgeleitet. chez DEF et Externe wird ensuite wirklick MessageBoxA statt MessageBeep fonctionnement. qui sicherere Methode wäre ensuite wirklich qui sur Call et GetProcAddress (wobei GetProcAddress chez Programmstart aufgerufen volonté devrait).
quoi mich gefreut hat,: qui Profanfunktion Beep erzeugte plus un Beep, statt einer Messagebox - je denke la fois, c'est mais pas chez allen Funktionen so - ou bien?? |
|
|
| |
|
|
|
| Juhu ensuite mach ego avec XPSE oui richtig le moi aus Headerfiles genutzte Apis dans Calls umwandle... |
|
|
| |
|
|
|
| oui, c'est pourquoi mon Frage ici. |
|
|
| |
|
|
| |
|
- page 2 - |
|
|
| et si ego richtig verstanden habe ensuite ist qui XPSE-variante sogar encore sicherer comme qui Externe ou bien Def-variante là qui Funktionsadresse oui juste beim Programmstart - et pas seulement chez erster Verwendung bezogen wird. |
|
|
| |
|
|
|
| allô IF...
cela vois je aussi so. Externe et DEF peut oui au cours de des Laufens des Programmes umgeleitet volonté => - ne...aucune changement de DLL sur qui Festplatte - aucun MASM Kenntnisse - aucun Kenntnisse de Disassembling
sommes pour nötig. si qui Sprungadresse déjà beim Start des Programmes feststeht, reicht un Changement qui Exporttabellen qui DLL im grenier pas aus; je dois direct qui Sprünge im Voir le texte source qui DLL détourner - et c'est pas so simple. si on ensuite überhaupt à qui übergebenen paramètre venez, ist aussi fraglich.
tu peux oui selbst la fois avec TNT testen, comment simple c'est, avec DEF ou bien Externe aufgerufene Funktionen umzuleiten. mon kleiner Test hat 10 Sekunden gedauert.
Salut
Andreas |
|
|
| |
|
|
|
RGH | [quote-part:0917fcffa2=Andreas Hötker]quoi mich gefreut hat,: qui Profanfunktion Beep erzeugte plus un Beep, statt einer Messagebox - je denke la fois, c'est mais pas chez allen Funktionen so - ou bien??[/quote-part:0917fcffa2] non, pas alle Profan-Funktionen erzeugen une Beep! ;)
Im Ernst: c'est chez allen Funktionen (sauf SQL) so: qui gesamte Windows-API ist naturellement statisch gelinkt. Lediglich qui ODBC-DLL sommes aus besagten Trouvé dynamisch gelinkt.
Statisch linken allez naturellement seulement chez DLL, qui définitif vorhanden sommes et pas chez DLL, qui optionnel zur Anwendung venons.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 09.10.2006 ▲ |
|
|
|
|
| [quote-part:627b335246=RGH][quote-part:627b335246=Andreas Hötker]quoi mich gefreut hat,: qui Profanfunktion Beep erzeugte plus un Beep, statt einer Messagebox - je denke la fois, c'est mais pas chez allen Funktionen so - ou bien??[/quote-part:627b335246] non, pas alle Profan-Funktionen erzeugen une Beep! ;) [/quote-part:627b335246]
[quote-part:627b335246=RGH]Im Ernst: c'est chez allen Funktionen (sauf SQL) so: qui gesamte Windows-API ist naturellement statisch gelinkt. Lediglich qui ODBC-DLL sommes aus besagten Trouvé dynamisch gelinkt. [/quote-part:627b335246] cela hört sich très bien à. |
|
|
| |
|
|