🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

FluidEXL in LibreOffice - DLL einbinden

Alles zur Programmierung im LibreOffice.
theonlytruth
Beiträge: 17
Registriert: Mo 11. Jun 2012, 07:07

FluidEXL in LibreOffice - DLL einbinden

Beitrag von theonlytruth » Mo 2. Nov 2015, 09:15

Hallo zusammen,

ich habe mich jetzt eine Weile damit rumgeärgert, aber immer noch keine funktionierende Lösung gefunden. Es geht um Folgendes: Die Hochschule Zittau/Görlitz stellt eine DLL und ein XLA bereit, um die Stoffwerte von Wasser nach der IAPWS IF97 zu berechnen. Dieses FluidEXL ist hier in der Studentenversion herunterladbar: FluidEXL

Mir würde es reichen, wenn ich aus LibreOffice die Berechnungs-Funktionen aufrufen kann, Diagramme und so weiter brauche ich nicht.

Die Einbindung geschieht in der XLA meiner Erkenntnis nach so (Ausschnitt):

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub LibIF97()
...
ExecuteExcel4Macro _
"Register(""LibIF97_Stud.dll"",""CPPTX97"",""BEEE"",""cp_pTx_97"","" p in MPa, T in K, x in kg/kg"",1,""Water IAPWS-IF97"",,""LibIF97_Stud_Eng.hlp!1020"",""Specific isobaric heat capacity cp in kJ/(kg K)"",""Pressure"",""Temperature"",""Vapor fraction "")"
...
End Sub

Ich habe es jetzt in LibreOffice Basic so versucht:

Code: Alles auswählen

DECLARE Function TEST Lib "LibIF97_Stud.dll" Alias "CPPTX97" (ByVal P As Double, ByVal T As Double, ByVal X As Double) As Double
Dabei sollte ja der Aliasname (hier: CPPTX97 der Name der Funktion in der DLL sein). Diesen habe ich jetzt variiert, da ich nicht sicher weiß, wie er korrekt heißt:
- "CPPTX97" [Dokumentation: "Call as Function from DLL LibIF97"]
- "cp_pTx_97" [Dokumentation: "Function Name"]
- "_CPPTX97@12" [In einem Delphi-Tool verwendet, aber bezogen auf die Vollversion der DLL]

Das Resultat ist immer: #NAME?

Kann mir (und einigen anderen Studenten) hier jemand weiterhelfen?

Vielen Dank und viele Grüße aus Dresden.
Carsten

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von mikele » Mo 2. Nov 2015, 21:05

Hallo,

der Aufruf per Declare scheint korrekt zu sein. Knackpunkt wird der genaue Name der Funktion sein.
Leider kann ich es nicht testen, da ich die dll nicht zur Verfügung habe. Du könntest versuchen die dll zu analysieren (z. B. mit http://www.dependencywalker.com/), um an den korrekten Funktionsnamen zu kommen.
Gruß,
mikele

theonlytruth
Beiträge: 17
Registriert: Mo 11. Jun 2012, 07:07

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von theonlytruth » Di 3. Nov 2015, 19:22

Hallo Mikele,

danke für den Tipp. Ich habe DependencieWalker mal die dll analysieren lassen (in Wine unter Ubuntu 14.04). Das Ergebnis ist im Anhang:
Ergebnis DependencieWalker
Ergebnis DependencieWalker
ScreenDependencieWalker.png (115.3 KiB) 5650 mal betrachtet
Der Alias war also richtig. Was der Unterschied zwischen z. B. _CPPTX97@12 und CPPTX97 ist, bleibt mir aber auch noch unklar.
Funktionieren tut es auch noch nicht.

Muss ich nach dem Einfügen der Declare-Funktion noch irgendwas drücken? "Ausführen" z. B. hat nichts geändert.
Unter Windows hatte ich es gestern auch schon mal probiert ohne Erfolg.

Viele Grüße
Carsten

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von mikele » Di 3. Nov 2015, 22:18

Hallo,

unter Linux wird es nicht funktionieren, da dll hier nicht unterstützt werden.
Durch Declare wird praktisch eine Verbindung zur dll hergestellt. Da muss nichts weiter befohlen werden. Wo hast die Anweisung eingebaut?
Gruß,
mikele

theonlytruth
Beiträge: 17
Registriert: Mo 11. Jun 2012, 07:07

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von theonlytruth » Mi 4. Nov 2015, 11:01

Hallo Mikele,

da ich das Linuxproblem auch irgendwo gelesen hatte, hab ich es auch unter Win 8 getestet, mit genauso wenig Erfolg.
Eingebaut habe ich das DECLARE in Extras -> Makros -> Makros verwalten -> Libre Basic
Screenshot2.png
Screenshot2.png (72.93 KiB) 5628 mal betrachtet
Findest du dort einen Fehler?

Vielen Dank für deine Mühe.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von karolus » Mi 4. Nov 2015, 14:48

Ich finde auf der im OP verlinkten Seite der Hochschule Zittau einige Tools, allen scheint gemeinsam das sie auf M$Windows aufsetzen oder als App für Android oder IPhone.. verhöckert werden?
Oder übersehe ich da etwas?

Es ist schon ein wenig traurig das nichts für Linux angeboten wird oder zumindest OS-neutraler Quellcode bereitgestellt wird.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von mikele » Mi 4. Nov 2015, 16:29

Hallo,
kannst du die dll zur Verfügung stellen?
Gruß,
mikele

theonlytruth
Beiträge: 17
Registriert: Mo 11. Jun 2012, 07:07

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von theonlytruth » Mi 4. Nov 2015, 16:35

Schau mal im ersten Post. Da ist ein Link, wo es die Studentenversion legal gibt, ohne, dass ich sie hier rein raubkopieren muss. Man muss nur seine Daten angeben, dann startet der Download

Danke, dass du es auch nochmal probieren willst :)

theonlytruth
Beiträge: 17
Registriert: Mo 11. Jun 2012, 07:07

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von theonlytruth » Mi 4. Nov 2015, 16:37

karolus hat geschrieben: Es ist schon ein wenig traurig das nichts für Linux angeboten wird oder zumindest OS-neutraler Quellcode bereitgestellt wird.
Vielleicht hat man ja eine Chance, Quellcode zu bekommen, wenn man freundlich fragt. Aber das müsste halt jemand machen, bei dem dann am Ende auch was rauskommt, sprich jemand mit den benötigten Programmierskills.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: FluidEXL in LibreOffice - DLL einbinden

Beitrag von karolus » Mi 4. Nov 2015, 17:36

Hallo

Den nötigen Quellcode hab ich bereits an anderer Stelle gefunden

Du arbeitest mit Ubuntu --- Die Abhängigkeiten:
numpy und scipy suchst und installierst du besser per Paketmanager und vorzugsweise auch die Versionen für python3

iapws geht dann einfach per Kommandozeile:

Code: Alles auswählen

pip3 install iapws --user
DAS Frontend|Backend für die interaktive Benutzung, ist dann IHMO ipython oder gleich ipython notebook
(das letztgenannte ist hier bei mir mit LinuxMint17.2 auch das Werkzeug zum Code-schreiben|entwickeln für Libreoffice)
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten