Guten Morgen Gerhard,
ich danke Dir für Dein Feedback. Ich habe mal noch etwas recherchiert
und widersprüchlichen Umgang von Variablen mit Typ-Deklarationszeichen
festgestellt:
[1] https://de.libreoffice.org/ [Hilfe] [Handbücher] [Kurzanleitungen]
[Makroprogrammierung]
+
http://wiki.documentfoundation.org/images/8/82/Makroprogrammierung_V41.odt
+
http://wiki.documentfoundation.org/images/6/63/Makroprogrammierung_V41.pdf
Beispielsweise Seite 14: "Dim iSystem%" und später nur "iSystem =
GetGUIType"
[2] Dannenhöfer
Ebenso wie [1] !
http://www.dannenhoefer.de/faqstarbasic/WelcheVariablentypengibtes.html#Zweig82
[3] Pitonyak
Nicht wie [1] und [2] !
https://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.pdf
Seite 38 - Listing 13. Demonstration von Double-Variablen.
Sub ExampleDoubleType
Dim GallonsUsed As Double, Miles As Double, mpg#
GallonsUsed = 17.3
Miles = 542.9
mpg# = Miles / GallonsUsed
Print " Benzinverbrauch = " & mpg#
End Sub
[4] Bei [1] und [2] wird das Typ-Deklarationszeichen bei der Verwendung
der Variablen im Makro-Code weggelassen, bei [3] nicht.
[5] Das Problem tritt nur bei DoubleVar# auf, nicht aber bei
IntegerVar%, SingleVar!, CurrencyVar@ und StringVar$:
Sub Print_To_File
Dim Datei As String
Dim KanalNr As Integer
Dim IntegerVar%
Dim SingleVar!
Dim CurrencyVar@
Dim StringVar$
Dim DoubleVar#
IntegerVar% = 123
SingleVar! = 1.23
CurrencyVar@ = 1.23
StringVar$ = "ABC"
DoubleVar# = 1.23
Datei = "E:\TMP\HWH.txt" ' Gegebenenfalls anpassen !
KanalNr = Freefile
Open Datei For Output As #KanalNr
Print #KanalNr,"IntegerVar% = " & IntegerVar% ' OKAY
Print #KanalNr,"SingleVar! = " & SingleVar! ' OKAY
Print #KanalNr,"CurrencyVar@ = " &CurrencyVar@ ' OKAY
Print #KanalNr,"StringVar$ = " & StringVar$ ' OKAY
Print #KanalNr,"DoubleVar = " & DoubleVar ' OKAY
'Print #KanalNr,"DoubleVar# = " & DoubleVar# ' Syntaxfehler-Meldung des
Compilers: "Unzulässiger Wert oder Datentyp.Datentypen unverträglich."
Close #KanalNr
[6] Dass dies ein Compiler-Fehler und kein Ablauf-Fehler ist, kann man
auch daran erkennen, dass [Ausführen][Übersetzen] schon zu der
Übersetzungs-Fehlermeldung "Unzulässiger Wert oder Datentyp.Datentypen
unverträglich." führt (Syntaxfehler).
[7] Ob das Angehängte Typ-Deklarationszeichen Bestandteil des
Variablennamen ist ? Ich denke schon. Zum einen wegen [3] und zum
anderen deshalb, weil die Typ-Deklarationzeichen %, !, @ und $ keinerlei
Problem machen, nur eben # - das ist meiner Meinung schon ein "starker"
Hinweis auf einen Fehler des Compilers, der beim Kompilieren der
Makro-Zeile "Print #KanalNr,"DoubleVar# = " & DoubleVar#" einen
Syntax-Fehler meldet - was er nicht tun sollte.
[8] Mit der LibreOffice-API bin ich nur bis dahin
https://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1reflection_1_1TypeDescriptionManager.html#details
gekommen und dann wusste ich nicht mehr weiter Hinweise zum
Typ-Deklarationzeichen zu finden ...
Viele Grüße
Hans-Werner :-))
PS
Nur ergänzend:
Ich persönlich halte Typ-Deklaration der Art "angehängtes Zeichen" ( % !
@ $ # ) oder "vorangestelltes Zeichen" ( DefBool DefDate DefDbl DefInt
DefLng DefObj DefVar ) für "GEMURKSE" aus der Zeit, als man in FORTRAN
noch die EQUIVALENCE-Anweisung (
https://craftofcoding.wordpress.com/2020/01/14/fortran-re-engineering-equivalence-statements-i/)
nutzte und bin deshalb ein "Anhänger" von:
Option Explicit
Dim IntegerVar As Integer
Dim StringVar As String
Dim ObjectVar As Object
:
:
:
Auf diese Art der Typ-Deklaration (angehängtes Zeichen) bin ich nur beim
Test meines "CodeColorizerBasic"-Makros gestoßen um mit einem kleinen
Makro (s.o.) zu überprüfen, ob der reguläre Ausdruck zum Färben des
angehängten Typ-Deklarationszeichens alles "richtig macht" - tut er ;-))
...
------ Originalnachricht ------
Von: "Gerhard Weydt" <gerhard.we...@t-online.de>
An: users@de.libreoffice.org
Gesendet: 22.08.2020 00:12:18
Betreff: Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable
via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
Hallo Hans-Werner,
ich kann dir bestätigen, dass die Fehlermeldung kommt. Allerdings denke ich,
dass du da etwas falsch verstehst, meiner Meinung nach ist das # nicht
Bestandteil des Variablennamens, sondern nur ein Kürzel bei der Deklaration.
Wenn man den problematischen Befehl ohne # verwendet (Print
#KanalNr,DoubleVar1), wird die Datei ordentlich geschrieben.
Es kommt übrigens eine Warnmeldung, die den Wert der Variablen ausgibt, die
nicht aus deinem Code stammt, der bin ich nicht nachgegangen; da sie zweimal
kommt, also auch bei dem nicht beanstandeten Befehl, sollte das eine andere
Ursache haben.
Herzlichen Gruß
Gerhard
Am 21.08.2020 um 21:01 schrieb OoOHWHOoO:
Sub Print_DoubleVar_To_File
Dim Datei As String
Dim KanalNr As Integer
Dim DoubleVar1#
Dim DoubleVar2 As Double
DoubleVar1# = 0.123456789
DoubleVar2 = DoubleVar1#
Print DoubleVar1# ' OKAY
Print DoubleVar2 ' OKAY
Datei = "E:\TMP\HWH.txt" ' Gegebenenfalls anpassen !
KanalNr = Freefile
Open Datei For Output As #KanalNr
Print #KanalNr,DoubleVar2 ' OKAY
' Print #KanalNr,DoubleVar1# ' ERROR "Unzulässiger Wert oder Datentyp.Datentypen
unverträglich."
Close #KanalNr
End Sub
-- Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme?
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy