| |
|
|
- Page 1 - |
|
Sebastian König | Hallo zusammen,
hier mal eine Kleinigkeit zu Weihnachten Da mich jemand darum gebeten hatte, habe ich einen Code, mit dem man DLL direkt und ohne Umweg circa eine temporäre File aus einem Speicherbereich (der zum Beispiel von Frank Abbings Datengenerator erstellt wird) in ein Programm laden kann, von C nach XProfan übersetzt und eine Include erstellt. Da es vielleicht noch andere interessiert, poste ich es mal hier.
Die Benutzung ist wirklich sehr einfach und sollte an Hand des beigelegten Testcodes leicht nachzuvollziehen sein - ansonsten einfach fragen! Leider funktioniert es erst ab XProfan 9.0, da ich Version 8.0 manche verschachtelten long()-Aufrufe irgendwie nicht besonders mag...
Viel Divertimento damit und naturalmente Frohe Weihnachten!
Sebastian |
|
|
| |
|
|
| |
|
- Page 2 - |
|
|
Sebastian König | So - hier ist jetzt Version 0.0.2 - veröffentlicht unter der Mozilla Public License.
Noch ein kleiner Hinweis: Für den Einsatz in fertigen Programmen lassen sich die Debug-Ausgaben sehr einfach komplett deaktivieren, indem die Print-Zeile in der Prozedur OutputStatus auskommentiert wird.
MfG
Sebastian |
|
|
| |
|
|
|
| Wer lieber mit Klassen arbeitet (besonders wenn man MemoryModule in PCUs verwendet wichtig) kann auch meine geänderte Version nutzen. Ist nicht dasselbe wie iF seine Klasse, necessario also nicht unbedingt XPSE
Ist jetzt nur die Include, MemoryModule.ph wird zusätzlich noch necessario. Anleitung gibts keine, dafür den dokumentierten angepaßten Testcode KompilierenMarkierenSeparieren Einziger Unterschied ist nur, das die Funktionen in einer Klasse gekapselt sind!
Saluto Thomas |
|
|
| |
|
|
|
Frank Abbing | Experimentell habe ich eine XPIA-Version entwickelt, die mit den MemoryModulen arbeitet. Dabei werden die Module direkt in den Code integriert, ohne dass eine separate inc- oder ph-File nötig wäre. Zu finden im XPIA-Foro. |
|
|
| |
|
|
|
| @Thomas: Ich hatte auch einen einfachen Callwrapper der Klasse hinzugefügt, ich fand den ganz praktisch ich finde den solltest Du übernehmen. |
|
|
| |
|
|
|
| [quote:6184349714=iF]@Thomas: Ich hatte auch einen einfachen Callwrapper der Klasse hinzugefügt, ich fand den ganz praktisch ich finde den solltest Du übernehmen. [/quote:6184349714] Die Idee ist ja nicht schlecht, aber das Get war mir wichtiger, weil nur einmal gesucht wird. Ein Call dessen Zeitvorsprung aufgrund von jedesmal suchen fehlt ist nicht das gelbe vom Ei Werde aber etwas ähnliches bei Gelegenheit noch integrieren, aumento die Kompatibilität zu Deiner Klasse |
|
|
| |
|
|
|
| Die Funktion war auch keinesfalls per maximale Performance gedacht, eher als Helper per Dinge bei denen es nicht ins Gewicht fällt - wie z.B. MessageBoxen etc... |
|
|
| |
|
|
|
| Hab jetzt die Methode Call zur Klasse hinzugefügt (obiger Link) CLASS#.Call(Funktion, P1&, P2& ... P12&) Strings sind per Addr(Text$) zu trasferimento |
|
|
| |
|
|
|
Sebastian König | Update auf Version 0.0.2a
Nach einem Hinweis von Thomas Schulz (danke nochmal!) habe ich noch eine weitere Funktion eingebaut: GetInstanceM. Der Rückgabewert kann als Instanz- bzw. Modul-Handle zum Beispiel zum Laden von Resourcen aus der DLL verwendet werden. |
|
|
| |
|
|
|
| Hab die Classe LoadDLLMem auch um die Methode GetHandle ohne Parameter erweitert
Saluto Thomas |
|
|
| |
|
|
|
| Ich habe den Eindruck, dass das leider nicht mit allen DLL geht - liege ich da richtig?
PS: Empfehle auch hierzu ModHunter, der auch in dieser Art geladene Module listet. |
|
|
| |
|
|
|
Frank Abbing | Mit welchen Dll gehts denn nicht? Mir ist finora noch keine unter gekommen. |
|
|
| |
|
|
|
| vlt. dlls die sich als file selbst öffnen wollen... |
|
|
| |
|
|