Module Based Application

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Module Based Application

Beitrag von Blackskyliner »

Ich habe mir gedacht, als ich vor wenigen Tagen anfing diese Projekt zu schreiben, dass es doch eigentlich mal ein interesanntes proof of concept wäre einfach alles in einem Programm in DLLs auszulagern.

Zuerst fing ich an eine kleine GUI zu schreiben und dann eine DLL. Die ersten Probleme kahmen auf und sind nun mittlerweilen gelöst ;)

Die Idee hinter dem System ist folgende:
Höchst Wiederverwendbaren Code ausgelagert in DLL's oder .so dateien unter Linux können vom Plugin Loader selbst geladen werden. Die DLL startet dann einen Thread in dem die weiter verarbeitung läuft. Einzige Funktion die diese DLL's implementieren können, aber nicht müssen, ist registerSharedFunctions(*FunctionList). Diese Funktion ist dafürda, um diverse Programminterne kommunikation zu ermöglichen. Modul A kann mit Modul B z.B. über diese Funktion Daten austauschen oder sich als Observer Registrieren für ein bestimmtes Event um dann darauf aufbauend die mögliche GUI des Moduls zu Updaten.

Der Grund für diese extreme aufspaltung, ist meiner Idee her entsprungen, dass die Anwendung leichter zu Aktualisieren sein soll.


Einige Dinge sind noch nicht Implementiert wie z.B. die Kommunikation zwischen den einzelnen Modulen oder gar die Registrierung als Observer auf ein bestimmtes Event. Diese Implementierung werde ich im laufe der Zeit noch nach schieben. Auch werde ich einen kleinen UpdateServer und ein Modul zum Updaten öffentlich stellen aber dafür muss erstmal das Hauptprogramm funktionieren und alles derzeitige implementiert haben.

Die Frage die ich mir stelle, was könnte man denn sonst noch so alles über die Schnittstelle an Programmiertechniken implementieren. Observer werden implementiert und was anderes was sich für eine solche Feingleiderung eignet ist mir bisher noch nicht eingefallen.

Die derzeitige Version ist erstmal ein bisschen eher zum "rumspielen" geeignet, da ja wichtige Teile noch fehlen.

Auch nett wäre es, wenn jemand kurz drüber fliegt und mir sagt, was man besser machen könnte...

Achja... der Debugger muss fürs Ausführen des Hauptprogramms deaktiv sein, da er sonst beim Aufrufen einer Hauptprogrammfunktion aus der DLL einen MemoryAccess Error bringt [PB 4.2, k.A. obs auch bei 4.3 ist].

Sagt mir einfach was ihr von diesem Konzept haltet, was man verbessern oder noch enbauen könnte. Bin für alle Vorschläge offen.


Hier noch der Downloadlink: http://blacky.happyscripts.de/Downloads ... System.rar

Credits:
- Thorium für sein Sacred2HackIt Pluginsystem
- Alle anderen die mir geholfen haben und helfen werden <)

EDIT: Hab mal den Namen des Threads angepasst... da man sich unter Plugin Manager nicht viel verstellen kann <)
Zuletzt geändert von Blackskyliner am 25.02.2009 18:51, insgesamt 1-mal geändert.
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Kompiliert mit 4.30 nicht, da einer API die Parameter falsch übergeben werden.

Code: Alles auswählen

If PtInRect_(rc, pt\x, pt\y) = 0
War wohl ein Bug in PB 4.20. PB 4.30 zeigt auch weiterhin fälschlich an das 3 Parameter benötigt werden. Spuckt aber beim Kompilieren eine Fehlermeldung aus. Korrekt sind es 2 Parameter. Die Koordinaten werden durch einen Pointer auf eine POINT Struktur übergeben.

Siehe MSDN: PtInRect Function (Windows)
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

> War wohl ein Bug in PB 4.20
Nein, da PB keine Strukturen by Value übergeben kann, war das notwendig.
In PB 4.30 wurden einige geändert, weils sonst probleme mit 64-Bit gibt.
Die noch nicht angepaßten Funktionen funktionieren nicht :mrgreen: ,
aber soviele gibts davon nicht, werden dann bei auftauchen angepaßt!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Jo, sorry hatte vergessen die EasyVENT 4.3 Dateien mit rein zu machen. Nun müsste aber alles funktionieren... Hoffe ich doch mal <)

EDIT:
Zumal ich grade bemerkt habe, dass es doch eigentlich mehr zu Projekte, Ressourcen und Tools passt als zu Anwendungen...

Kann ja ein Moderator verschieben, wenn er der gleichen Ansicht sein sollte <)
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Antworten