Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Interface- und Klassenstruktur für entkoppelte GUI und Anwendungslogik (https://www.delphipraxis.net/197822-interface-und-klassenstruktur-fuer-entkoppelte-gui-und-anwendungslogik.html)

stahli 10. Sep 2018 14:51

AW: Interface- und Klassenstruktur für entkoppelte GUI und Anwendungslogik
 
Also wenn Du DLL´s verwendest kannst Du den Datenaustausch direkt ja nur über Interfaces realisieren. Die könnten natürlich eine String-Eigenschaft haben und dort den JSON-Text o.ä. beinhalten.

Wenn Du für die Gui dann VCL-Controls erzeugst ist natürlich die Datenrückgabe bei Änderungen noch nicht geklärt. Das wird sicherlich der schwierigste Part.


Ich verwende für einen ähnlichen Anwendungsfall zwischen Server und Clients (mit eigenen Controls) Sockets (asychrones FTP).
Hier findest Du zwei kurze Videos, die einen kleinen Einblick zeigen: https://www.delphipraxis.net/185623-...-controls.html
Die Datenübertragung ist hier dokumentiert: https://www.delphipraxis.net/190482-...ockettest.html
Im Prinzip werden nur Message-Objekte erstellt und einem Framework zur Übertragung übergeben.

In dem Fall könnten die Geräte mit dem Hauptprogramm direkt kommunizieren, ohne dass dafür Controller über eine DLL eingebunden werden müssen.

Direkt zur Nachnutzung kann ich Dir das nicht anbieten, da ich das gerade nochmal überarbeite. Bei Interesse kann ich Dir aber noch etwas zeigen und Teile bereitstellen.

TiGü 12. Sep 2018 12:24

AW: Interface- und Klassenstruktur für entkoppelte GUI und Anwendungslogik
 
Zitat:

Zitat von Aviator (Beitrag 1412859)
Wie würdet ihr dann den JSON String am besten von der DLL zur Anwendung übertragen? Einfach eine Funktion die einen
Delphi-Quellcode:
string
respektive
Delphi-Quellcode:
PChar
liefert, oder gibt es da andere Ansätze?

Nehme den Typ WideString, dass kannst du dann problemlos in anderen Sprachen nutzen (C#/Visual C++ -> BSTR).

Aviator 12. Sep 2018 19:39

AW: Interface- und Klassenstruktur für entkoppelte GUI und Anwendungslogik
 
Zitat:

Zitat von TiGü (Beitrag 1413018)
Zitat:

Zitat von Aviator (Beitrag 1412859)
Wie würdet ihr dann den JSON String am besten von der DLL zur Anwendung übertragen? Einfach eine Funktion die einen
Delphi-Quellcode:
string
respektive
Delphi-Quellcode:
PChar
liefert, oder gibt es da andere Ansätze?

Nehme den Typ WideString, dass kannst du dann problemlos in anderen Sprachen nutzen (C#/Visual C++ -> BSTR).

WideString hatte ich ausprobiert, als ich eine Funktion aus einer C# DLL aufrufen wollte. Die Funktionen in der C# DLL wurden mit dem Tool UnmanagedExports exportiert. Das hat aber alles nicht funktioniert. Bis ich auf PChar umgestellt hatte. Meine schlussendliche Lösung wie es funktioniert hatte war wie folgt (aus dem Kopf, kann also ein paar kleine Fehler enthalten).

Code:
return: [MarshalAs(UmanagedType.BStr)]
public string TestMethod()
{
    string s = "Test";
    return s;
}
Delphi-Quellcode:
function TestMethod: PChar; stdcall; external 'Test.dll'


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 Uhr.
Seite 2 von 2     12   

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