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

Antwort per Email an