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


Hallo Gerhard,

"[...] dass wohl alles ohne das Zeichen funktioniert. [...]" stimmt mittlerweile (nach weiteren Test meinerseits) nicht mehr.

Um das angehängte "#" als Typ-Deklarationszeichen geht es gar nicht mehr, sondern:

Wenn im "Ausdruck" für "Print" ein "#" vorkommt, dann MUSS im "Ausdruck" für "Print " irgendwo vor dem "#" ein " " sein, ansonsten gibt's eine Syntaxfehler-Fehlermeldung:

Sub Print_To_Output
Dim VarDouble#
Dim Pfad_Datei As String
Dim Datenkanal As Integer
VarDouble# = 0.123123
Pfad_Datei = "E:\TMP\Output.txt"
Datenkanal = Freefile
Open Pfad_Datei For Output As #Datenkanal
Print #Datenkanal," VarDouble# = ",VarDouble# ' O.K.
'Print #Datenkanal,"VarDouble# = ",VarDouble# ' ERROR
Print #Datenkanal," ABC#DEF" ' O.K.
Print #Datenkanal,"AB C#D EF" ' O.K.
Print #Datenkanal," ","ABC#DEF" ' O.K.
'Print  #Datenkanal,"ABC#DEF" ' ERROR
'Print #Datenkanal,"ABC#D EF" ' ERROR
Close #Datenkanal
End Sub

Wenn das kein BasicCompiler-Fehler ist ...

Viele Grüße
Hans-Werner :-))



------ Originalnachricht ------
Von: "Gerhard Weydt" <gerhard.weydt@t-online.de>
An: users@de.libreoffice.org
Gesendet: 22.08.2020 15:51:04
Betreff: Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch

Hallo Hans-Werner,

wenn etwas bei Pitonyak steht, ist es deshalb auch nicht besser begründet als bei den anderen 
Quellen, die du genannt hast, auch beschreibt das, was er feststellen konnte und nicht, was er 
selbst aus dem Compiler-Code ermittelt hätte; ich bin mir ziemlich sicher, dass ich eine 
entsprechende Aussage von ihm selbst einmal gelesen habe. Ob die ursprüngliche Idee war, dass das 
ürzel nach dem eigentlichen Namen dazugehört oder nur für die Deklaration gebraucht wird, können 
wir kaum entscheiden, für letzteres spricht aber die Tasache, dass wohl alles ohne das Zeichen 
funktioniert.
Und auch der folgende Text zu Microsofts Visual Basic geht in die gleiche Richtung:

In addition to specifying a data type in a declaration statement, you can force the data type of 
some programming elements with a /type character/. The type character must immediately follow the 
element, with no intervening characters of any kind.

The type character is not part of the name of the element. An element defined with a type character 
can be referenced without the type character.

Wenn man das Ende wörtlich nehmen darf, dann ist die Hinzufügung des Kürzels erlaubt, aber nicht 
nötig. In diesem Sinn wäre natürlich die Fehlermeldung bei der Double-Variable ein Fehler, aber mir 
geht es wie dir, ich mag diese Kürzel nicht und verwende sie nicht, ich weiß auch nicht recht, 
warum sie eingeführt wurden, vielleicht noch zu Lochkartenzeiten, wo man dann weniger Karten 
brauchte, so wie das Unterbringen mehrerer Befehle in einer Zeile durch die Trennung mit dem 
Doppelpunkt?

Was mich betrifft, würde ich es nicht für nötig halten, das als Fehler zu melden.

Viele Grüße

Gerhard



Am 22.08.2020 um 15:23 schrieb OoOHWHOoO:
Hallo Gerhard,

so wie's ausschaut, hat das "Print" (und auch das "Write") - beziehungsweise der Compiler - beim 
"Print"/"Write" in eine Datei "sein Kreuz mit dem Doppelkreuz" ;-)) ...

Völlig unabhängig von einer Double-Variablen der Art "VarDouble#":

Im Zusammenhang mit "#" muss das erste Zeichen in der auszugebenden Zeichenkette ein " " 
(Leerzeichen) sein.

Fehlt dieses Leerzeichen, meldet der Compiler den Syntax-Fehler "Unzulässiger Wert oder 
Datentyp.Datentypen unverträglich." !

Sub Print_To_Output
Dim Pfad_Datei As String
Dim Datenkanal As Integer
Pfad_Datei = "E:\TMP\Output.txt"
Datenkanal = Freefile
Open Pfad_Datei For Output As #Datenkanal
Print #Datenkanal," #"
Close #Datenkanal
End Sub

Einen kleinen Hinweis, dass das "#" bei Print/Write in eine Datei "eine besondere Rolle spielt" 
könnte eine Textpassage bei Pitonyak liefern, wobei die internen Zusammenhänge völlig im Dunkeln liegen, da muss man 
schon den Compiler-SourceCode kennen:

8.8. Daten aus einer Datei lesen und in eine Datei schreiben
Um Daten in Dateien zu schreiben oder aus Dateien zu lesen, die im Modus Random oder Binary 
geöffnet wurden, verwenden Sie die Anweisungen Put und Get. Für jeden anderen Modus verwenden Sie 
die Anweisungen Line Input, Print und Write. Wenn keine Eingabedaten angegeben sind, wird eine 
Leerzeile in die Datei geschrieben. Die Anweisung Write akzeptiert mehrere Argumente zur Eingabe 
und fügt beim Schreiben automatisch Trennzeichen ein. In der Datei werden die Eingabeausdrücke 
voneinander durch Kommas getrennt, Zeichenketten werden in doppelte Anführungszeichen gesetzt, 
Zahlen werden nicht gekennzeichnet, und Datums- sowie boolesche Werte werden zwischen Doppelkreuze 
(#) gesetzt. Zahlen mit Dezimaltrennzeichen werden gemäß dem eingestellten Gebietsschema 
konvertiert.

https://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.pdf

Warum bei dem "Print", wenn nicht in eine Datei, das "Warnung"-Symbol verbunden mit dem Text "Warnung" 
ausgegeben wird, ist nicht nach vollziehbar, denn es passiert auch bei dem sehr einfachen Beispiel in der "LibreOffice Hilfe":

Sub ExamplePrint
Print "ABC"
Print "ABC","123"
i = FreeFile()
Open "C:\Temp.txt" For Output As i
Print #i, "ABC"
Close #i
End Sub

Grüße
Hans-Werner :-))



-- 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.