Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch - RESOLVED @ 6.4.7
Zur Information: Bug 136032 - Basic Compiler Bug - incorrect syntax error message - Print #iNumber,"#" https://bugs.documentfoundation.org/show_bug.cgi?id=136032#c5 Viele Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch - RESOLVED @ 7.0.2
Zur Information Auf Grund der heutigen "RESOLVED FIXED"-Bestätigung wird die Fehlerbehebung bereits in LO 7.0.2 verfügbar sein: https://bugs.documentfoundation.org/show_bug.cgi?id=136032#c4 Viele Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch - DailyBuild OKAY
Zur Information: Ich habe mal eben das "DailyBild LibreOfficeDev_7.1.0.0.alpha0_Win_x64.msi" (inklusive "LibreOfficeDev_7.1.0.0.alpha0_Win_x64_helppack_de.msi") vom "2020-Sep-07 02:47" via "Separate Install GUI" parallel installiert und das Makro (in dieser leicht modifizierten Form bezüglich der Ausgabe) Sub ExampleWorkWithAFile Dim iNumber As Integer Dim aFile As String aFile = "c:\data.txt" ' May be necessary to be modified ! iNumber = Freefile Open aFile For Output As #iNumber Print #iNumber, "#" & "- O.K." Print #iNumber,"#" & " - Incorrect syntax error message !!!" Print #iNumber, "A#B" & " - O.K." Print #iNumber,"A#B" & " - Incorrect syntax error message !!!" Print #iNumber, "AB" & " - O.K." Print #iNumber,"AB" & " - O.K." Close #iNumber End Sub ausgeführt mit diesem Ergebnis in "c:\data.txt": #- O.K. # - Incorrect syntax error message !!! A#B - O.K. A#B - Incorrect syntax error message !!! AB - O.K. AB - O.K. Damit ist die Behebung des Fehlers eindeutig dargelegt, da auch die "Incorrect syntax error message"-Code-Zeilen keinen Syntax-Error bewirkten: https://bugs.documentfoundation.org/show_bug.cgi?id=136032#c3 Viele Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch - RESOLVED @ 7.1.0
Zur Information: https://bugs.documentfoundation.org/show_bug.cgi?id=136032#c2 Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
Guten Morgen Gerhard und *, Bug-Report ist geschrieben: Basic Compiler Bug - incorrect syntax error message - Print #iNumber,"#" https://bugs.documentfoundation.org/show_bug.cgi?id=136032 Schönen Sonntag noch, viele Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
Hallo Gerhard, für den BUG-Report hatte ich jetzt eben noch mit der englischen Variante von LO 7.0.0.3 (x64) getestet, damit ich die Fehlermeldung in Englisch erhalte und auch das Makro aus der LO-Hilfe für "Open" kopiert und entsprechend modifiziert. In diesem Makro steht Print #iNumber, "This is a line of text" . Ich ersetzte die Zeichenkette "This is a line of text" durch "#", startete das Makro und "rieb mir verwundert die Augen" - KEINE FEHLERMELDUNG ! Das Leerzeichen nach dem "," reichte schon aus !!! In der Syntax-Beschreibung ist aber kein Leerzeichen nach dem "," vorgeschrieben Print [#filenum,] expression1[{;|,} [Spc(number As Integer);] [Tab(pos As Integer);] [expression2[...]] und in anderen Konstellationen ohne weiteres "#" außer bei dem "#iNumber" auch nicht notwendig. So kann ich den Bug-Report mit dem nachfolgenden Makro noch etwas präziser formulieren: Sub ExampleWorkWithAFile Dim iNumber As Integer Dim aFile As String aFile = "c:\data.txt" iNumber = Freefile Open aFile For Output As #iNumber Print #iNumber, "#" ' O.K. 'Print #iNumber,"#" ' ERROR Print #iNumber, "A#B" ' O.K. 'Print #iNumber,"A#B" ' ERROR Print #iNumber, "AB" ' O.K Print #iNumber,"AB" ' O.K Close #iNumber End Sub Hier die umfangreichere Variante, falls Du nochmals testen möchtest: Sub ExampleWorkWithAFile Dim iNumber As Integer Dim aFile As String Dim VarDouble# Dim VarSingle! VarDouble# = 0.123123 VarSingle! = 0.123 aFile = "E:\TMP\Output.txt" iNumber = Freefile Open aFile For Output As #iNumber Print #iNumber, VarDouble# ' O.K. 'Print #iNumber,VarDouble# ' ERROR Print #iNumber, "#" ' O.K. 'Print #iNumber,"#" ' ERROR Print #iNumber, "A#B" ' O.K. 'Print #iNumber,"A#B" ' ERROR Print #iNumber,VarSingle! ' O.K. Close #iNumber End Sub Viele Grüße Hans-Werner :-)) -- 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
Hallo Hans-Werner, Am 22.08.2020 um 18:36 schrieb OoOHWHOoO: Hallo Gerhard, "[...] dass wohl alles ohne das Zeichen funktioniert. [...]" stimmt mittlerweile (nach weiteren Test meinerseits) nicht mehr. Dein jetziger Test beweist das aber nicht! Denn hier liegt ein Problem des Print-Befehls mit dem # allgemein vor (weil das # dem Datenkanal vorangestellt werden muss?), das hat also nichts speziell mit dem Typ-Deklarationszeichen zu tun. Das ist also kein Gegenbeispiel für meine Aussage, die ich im Übrigen nicht beschwören kann, es sieht halt bloß bisher so aus. 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 ... Das würde ich auch so sehen, aber eben für den Print-Befehl, der das problem mit # hat, egal, ob es hinter der Variablen hängt oder in einem String steckt. Mit dem Typ-Deklarationszeichen selbst hat es nicht zu tun, wie der abgewandelte Befehl aus deinem Test zeigt: Print #Datenkanal,"VarDouble# = ",VarDouble# ' ERROR Print #Datenkanal,"VarDouble = ",VarDouble# ' kein ERROR Das Problem ist offenbar, wie du schon erkannt hast, dass ein Leerzeichen benötigt wird. Vielleicht wird sonst # noch zu dem Datenkanal gezählt, aber das Komma sollte als Trennzeichen ausreichen. Falls du einen Bug-Report schreibst, würde ich als Hauptargument den String nehmen. Viele Grüße Gerhard Viele Grüße Hans-Werner :-)) -- Originalnachricht -- Von: "Gerhard Weydt" 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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
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" 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 werd
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+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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
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+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
Re: [de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
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@ = " @ ' 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" 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
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
[de-users] Makro Basic - Ausgabe in Datei - DoubleVariable via Typ-Deklarationszeichen # - Makro-Fehler-Abbruch
Hallo *, zufällig bin ich - im Zusammenhang mit einer anderen Angelegenheit - auf folgenden BUG (?) gestoßen: [1] Deklariert man eine Variable via "Dim DoubleVar1#" und will man den Inhalt dieser Variable in eine Datei ausgeben, erhält man die Fehlermeldung "Fehler: Unzulässiger Wert oder Datentyp.Datentypen unverträglich.". [2] Deklariert man eine Variable via "Dim DoubleVar2 As Double" funktioniert die Ausgabe in eine Datei fehlerfrei [3] Das "Print #KanalNr,DoubleVar1#" scheint mit 2 mal # Probleme zu haben ... Kann das jemand bestätigen ? Gruß Hans-Werner :-)) 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