VBS Fehler bei WriteLine
Hallo zusammen,
ich verwende ein Script in OL2016, welches E-Mail -Inhalte in eine Textdatei schreibt. Das läuft schon seit Jahren!
Es schreibt den Mail-Betreff in die erste Zeile der Datei und den Body in die 2. Zeile.
Jetzt läuft das Script häufig in den Fehler 800A0005 - Ungültiger Prozeduraufruf oder ungültiges Argument.
Der Fehler tritt beim Schreiben der 2. Zeile auf. Ich habe das nun geändert und in mal in eine Zeile schreiben wollen - gleiches Ergebnis. Ich gehe davon aus, das der Inhalt des Bodys ein Problem verursacht.
Trivialtexte a „Das ist ein Test“ funktionieren. Längere Zufallszeichenfolgen gehen schief...
Hat jemand eine Idee?
Danke und Grüsse
ich verwende ein Script in OL2016, welches E-Mail -Inhalte in eine Textdatei schreibt. Das läuft schon seit Jahren!
Es schreibt den Mail-Betreff in die erste Zeile der Datei und den Body in die 2. Zeile.
Jetzt läuft das Script häufig in den Fehler 800A0005 - Ungültiger Prozeduraufruf oder ungültiges Argument.
Der Fehler tritt beim Schreiben der 2. Zeile auf. Ich habe das nun geändert und in mal in eine Zeile schreiben wollen - gleiches Ergebnis. Ich gehe davon aus, das der Inhalt des Bodys ein Problem verursacht.
Trivialtexte a „Das ist ein Test“ funktionieren. Längere Zufallszeichenfolgen gehen schief...
Hat jemand eine Idee?
Danke und Grüsse
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 531434
Url: https://administrator.de/contentid/531434
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
11 Kommentare
Neuester Kommentar
Vermutlich nutzt du das falsche Encoding beim Öffnen/Erstellen der Datei. Glaskugel da Code fehlt ...
Das FS Object beschwert sich dann mit d o.g. Fehler bei nicht supporteten Zeichen, per Default werden Files ja als Plain ASCII geöffnet.
https://www.devguru.com/content/technologies/vbscript/filesystemobject-o ...
Ich würde alles statt mit dem FS Object auszugeben, als UTF-8 wegschreiben, und zwar so
https://developer.rhino3d.com/guides/rhinoscript/read-write-utf8/
Das FS Object beschwert sich dann mit d o.g. Fehler bei nicht supporteten Zeichen, per Default werden Files ja als Plain ASCII geöffnet.
https://www.devguru.com/content/technologies/vbscript/filesystemobject-o ...
Ich würde alles statt mit dem FS Object auszugeben, als UTF-8 wegschreiben, und zwar so
https://developer.rhino3d.com/guides/rhinoscript/read-write-utf8/
Erstens
Zweitens
Außerdem prüfst du nicht ob die Dateien schon existiert, du wirst sie also im Extremfall überschreiben.
Drittens
Also nochmal VBS Grundkurs zur Fehlerbehandlung besuchen 😜.
Inhalt = LEFT(TRIM(objEMail.body),300)
erster Fehler, die Zeile geht davon aus das der Body mindestens 300 Zeichen lang ist, ist er das nicht wird dein Skript in einen Fehler laufen!Zweitens
Set f = fso.OpenTextFile(PATH_SMS_DIR & "\" & Cstr(tmp) & "_" & Cstr(Int((9999 - 0 + 1) * Rnd + 5)) & ".txt", 2, True)
Definiert das File als ASCII, siehe Link von mir oben zum definieren des Encodings der Datei (Parameter 4)! Oder besser gleich wie im Link als UTF-8 kodiert weg schreiben.Außerdem prüfst du nicht ob die Dateien schon existiert, du wirst sie also im Extremfall überschreiben.
Drittens
f.WriteLine Inhalt
Wenn Inhalt durch den Fehler leer ist, ebenfalls Exception.Also nochmal VBS Grundkurs zur Fehlerbehandlung besuchen 😜.
Deswegen gleich per UTF-8 wegschreiben wie ich gesagt habe dann bist du den Fehler sofort los.
Zitat von @Graudon:
Erstens: die 300 Zeichen sollen den Inhalt begrenzen. Ich habe mal auf 30 Zeichen reduziert und 50 geschickt.- hat aber keinen Effekt, bzw. Es hat einmal funktioniert, dann nicht mehr (gleicher Fehlercode an gleicher Stelle …
Erstens: die 300 Zeichen sollen den Inhalt begrenzen. Ich habe mal auf 30 Zeichen reduziert und 50 geschickt.- hat aber keinen Effekt, bzw. Es hat einmal funktioniert, dann nicht mehr (gleicher Fehlercode an gleicher Stelle …
LEFT(TRIM(objEMail.body),300)
Warum baust du dann nicht einfach ein If drumherum?
If len((TRIM(objEMail.body)) > 200 then
...
End if
Dann nutz halt Regex um ungültige Zeichen auszufiltern, oder eben ANSI 1252 .
Ein Replace z.B.mit folgendem Regex
Damit werden alle Zeichen die nicht a-z A-Z 0-9 oder underscore sind gelöscht. Kannst du natürlich um weitere Zeichen ergänzen die du zusätzlich erlauben willst.
Oder als weiteres Beispiel alle Zeichen die keine ASCII Zeichen sind ersetzen
Weitere Info zu Regular Expressions findest du hier
https://docs.microsoft.com/de-de/dotnet/standard/base-types/regular-expr ...
Wie man mit VBS Regex anwendest kannst du hier nachlesen
https://developer.rhino3d.com/guides/rhinoscript/vbscript-regexp-objects ...
[^\w]
Oder als weiteres Beispiel alle Zeichen die keine ASCII Zeichen sind ersetzen
[^\x00-\x7F]
Weitere Info zu Regular Expressions findest du hier
https://docs.microsoft.com/de-de/dotnet/standard/base-types/regular-expr ...
Wie man mit VBS Regex anwendest kannst du hier nachlesen
https://developer.rhino3d.com/guides/rhinoscript/vbscript-regexp-objects ...