| Autor |
Beitrag |
xdragon2009
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 13:11
Hallo,
wie kann ich in Delphi eine Klasse in einer DLL speichern?
Danke im Voraus.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 20.11.09 13:12
Wie meinst du das? Wenn du eine neue DLL erstellst, kannst du dort Typen genauso deklarieren wie sonst auch. 
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Fr 20.11.09 13:13
naja, die Klasse halt in der DLL erstellen. Dabei darauf achten, dass sie von einer abstrakten Klasse abgeleitet wurde, die in einer Unit erstellt ist. Jetzt noch den Creator als Objekt deklarieren und fertig?
Müsste zur Not sonst nach Codebeispielen graben.
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 13:40
Hallo ihr beiden,
Funktionen in eine DLL zu packen, ist ja kein Problem. Aber eine Klasse bekomme ich nicht hin. Habt ihr evtl. ein kleines Beispiel? Wäre super.
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 20.11.09 14:01
xdragon2009 hat folgendes geschrieben : | | Aber eine Klasse bekomme ich nicht hin. |
Ich verstehe nicht wo das Problem ist, das ist das Problem... Es funktioniert exakt genauso wie sonst...
Wie hast du es denn versucht (Quelltext) und was ist passiert?
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 16:07
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 20.11.09 16:19
Ach so meinst du das...
Wie soll das gehen? Delphi braucht die Deklaration doch im Programm selbst um damit arbeiten zu können. Also was hat es für einen Sinn das zu exportieren, selbst wenn es möglich wäre?
Du kannst in der DLL und im Programm die selbe Unit (mit der Klasse) einbinden um die selbe Deklaration in beidem zu nutzen.
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 16:21
Funktionen/Prozeduren kann man ja auch exportieren. Geht das also bei Klassen generell nicht?
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 20.11.09 16:24
Nein, wozu auch? Bei der Funktion brauchst du deren Deklaration ja auch im Programm. Und bei der Klasse also auch. Dann ist diese aber ohnehin schon im Programm.
Meinst du vielleicht so etwas wie ein Plugin? Dafür eignen sich Interfaces, so dass die Deklaration im Programm vorhanden ist, aber nicht die Klasse selbst. Damit funktioniert auch dieses Pluginframework:
www.delphi-forum.de/...Version+3_93765.html
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 16:26
Mein Gedanke war, diese DLL mit Funktionen und Klassen in anderen Programmiersprachen verwenden zu können. Mit Funktionen klappt es wunderbar, nur scheitert es bei den Klassen  .
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 20.11.09 16:28
Alles was du aus einer DLL verwenden willst, musst du in der entsprechenden Sprache auch als Headerdatei vorliegen haben...
Genauso ist es bei exportierten Funktionen auch. Du kannst doch auch nicht einfach eine Funktion aus einer DLL verwenden, deren Deklaration du in der Sprache nicht hast.
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 20.11.09 16:30
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 16:34
Bei Funktionen geht es doch ganz einfach, indem man die DLL lädt und die Funktionen mit den entsprechenden Parametern aufruft. Zum Beispiel die Windows API Funktionen...
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 20.11.09 16:50
Funktionen laufen ja auch quasi im eigene Saft. Eine Klasse braucht immer auch seine sämtlichen Vorfahren.
Ich hab da mal Dll's geschrieben, die Objekte zurückgeben, aber das ist was anderes. Diese Objekte sind auch nur mit Delphi der gleichen Version benutzbar
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Fr 20.11.09 18:43
Aber mit Klassen muss es doch auch irgendwie möglich sein oder?
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: Fr 20.11.09 19:09
Was du willst gibt es direkt nicht für Delphi/Win32. Zum einen gibt es zwar die Packages, die DLLs sind, diese können aber nicht ohne weiteres von einer anderen Sprache aus verwendet werden.
Allenfalls kommst du mit COM relativ nahe an dein Ziel ran.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 20.11.09 23:03
xdragon2009 hat folgendes geschrieben : | | Aber mit Klassen muss es doch auch irgendwie möglich sein oder? |
Ein "Nein, das geht nicht.", akzeptierst du irgendwie nicht oder?
|
|
xdragon2009 
Hält's aus hier
Beiträge: 9
|
Verfasst: Sa 21.11.09 09:17
Geht nicht, gibts nicht  . Und es geht! Ein aufmerksamer Leser hat mir den entscheidenen Tip gegeben. Vielen Dank für die Hilfe.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 21.11.09 17:52
|
|
guinnes
      
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Sa 21.11.09 19:26
Luckie hat folgendes geschrieben : | | Könntest du die Lösung noch mal nennen? Da bin ich aber gespannt. |
Da glaubst du doch jetzt nicht wirklich dran, dass da was kommt ?
|
|