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.weydt@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+unsubscribe@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+unsubscribe@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
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.