VisualBasic Simples Problem mit WriteLine

Atreju93

Lieutenant
Registriert
Nov. 2010
Beiträge
594
Hallo zusammen

ich habe eine Einfache kleine VBS Datei geschrieben um mir VB(S) etwas näher zu bringen.
Leider erhalte ich beim Ausführen von meinem VBS Progrämmchen immer die Fehlermeldung "Bad File Mode" und den Bring ich beim besten Willen nicht raus.

Ich habe Erfahrung in C# Programmieren, daher kenne ich VBS nicht so gut.

Hier mal den Code:

Code:
Dim Fso, Inhalt
   Const ForReading = 1, ForWriting = 2
WScript.CreateObject("Scripting.FileSystemObject")
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")

if (Fso.FileExists("C:\autoexec.try")) then
	WScript.Echo "Die Datei existiert"
	set Datei=Fso.OpenTextFile("c:\Autoexec.try", ForWriting, True)
	'Text = inputbox("Bitte Text angeben")
	Datei.WriteLine "test"
	Inhalt = Inhalt & Datei.ReadAll
	Msgbox Inhalt
else	
	WScript.Echo "Die Datei existiert nicht, das Script wird beendet"
	WScript.quit
end if

Es scheint nur etwas simpels zu sein, aber ich habe die Datei mit der Option 2 (ForWriting) geöffnet, sogar wenn ich am Ende anhängen will (8) bekomme ich die Fehlermeldung.

Gruss
 
Hi,

hmm, mit Datei.Writeline schreibst du rein und in der nächsten Zeile liest du mit Datei.ReadAll

Hab ich was übersehen oder wo schließt du die Datei nach dem schreiben und öffnest sie im Lese-Modus?

In C# versuchst du doch auch nicht mit dem Streamwriter zu lesen ...

Gruß,
 
In welcher Zeile bekommst du einen Fehler?

Vielleicht ist es das:
Datei.WriteLine("Text")
 
Zuletzt bearbeitet:
wie d2boxSteve schon gemeint hat, du musst ja auch erst reinspeichern, was du schreibst, das geschieht, indem du die Datei (bzw. den Stream) wieder schließt. Dann musst du das zum Lesen wieder öffnen...

BTW: Inhalt ist ja leer, warum also
Inhalt = Inhalt & Datei.ReadAll
und nicht einfach
Inhalt = Datei.ReadAll

Hat dein Programm Schreibrechte auf die Datei?
 
Dim Fso, Inhalt
Const ForReading = 1, ForWriting = 2

WScript.CreateObject("Scripting.FileSystemObject")
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")

sDatei = "C:\autoexec.try"

if (Fso.FileExists(sDatei)) then
WScript.Echo "Die Datei existiert"
set Datei=Fso.OpenTextFile(sDatei, ForWriting, True)
'Text = inputbox("Bitte Text angeben")
Datei.WriteLine "test"
Datei.Close
set Datei=Fso.OpenTextFile(sDatei, ForReading, True)
Inhalt = Inhalt & Datei.ReadAll
Datei.Close
Msgbox Inhalt
else
WScript.Echo "Die Datei existiert nicht, das Script wird beendet"
WScript.quit
end if


Denk aber daran, dass bei Vista und Win7 nicht direkt auf C: geschrieben werden darf ;)

Zur Info:
statt ForWriting kannst Du auch ForAppending verwenden, damit Du neue Zeilen in die Datei schreiben kannst.
Die Zeile Inhalt = Inhalt & Datei.Readall macht in diesem Beispiel noch nicht wirklich sinn, da Inhalt immer leer ist. Daher reicht auch Inhalt = Datei.Readall

PS: Wie kann ich eigentlich den Code in so ein Code Fenster eingeben?
 
Zuletzt bearbeitet:
(QUOTE)(/QUOTE) - Funktion nutzen und dann "QUOTE" durch "CODE" ersetzen...

Code:
Dim Fso, Inhalt
Const ForReading = 1, ForWriting = 2

WScript.CreateObject("Scripting.FileSystemObject")
Set Fso = WScript.CreateObject("Scripting.FileSystemObject")

sDatei = "C:\autoexec.try"

if (Fso.FileExists(sDatei)) then
WScript.Echo "Die Datei existiert"
set Datei=Fso.OpenTextFile(sDatei, ForWriting, True)
'Text = inputbox("Bitte Text angeben")
Datei.WriteLine "test"
Datei.Close
set Datei=Fso.OpenTextFile(sDatei, ForReading, True)
Inhalt = Datei.ReadAll
Datei.Close
Msgbox Inhalt
else
WScript.Echo "Die Datei existiert nicht, das Script wird beendet"
WScript.quit
end if
 
Danke, dies werde ich ausprobieren und dann hier Melden ob es funktioniert hat :)
 
Danke, die Version von Alkor35 hat funktioniet. Lag daran, dass ich die Datei nicht sauber geschlossen hatte :)
 
Zurück
Oben