Date: prev next · Thread: first prev next last
2020 Archives by date, by thread · List index


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.