PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Überprüfen ob eine Datei existiert


JohnDoe
05.07.2002, 16:02
Hey,
wie kann ich überprüfen ob eine Datei existiert und falls nicht die Datei mit leerem Inhalt erstellen lassen?

Danke

JohnDoe


Cord Worthmann
05.07.2002, 18:21
moinsen!

das machst du mit dem FSO(FileSystemObject).


Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(myfile.txt) Then
'datei ist vorhanden
Else
Set myfile = fso.CreateTextFile(myfile.txt)
End If

du kannst übrigens so nur text-dateien erstellen!

grtz
chief

Cord Worthmann
05.07.2002, 18:23
achso, das ist die variante in VBS - du hast nicht angegeben, womit du das verwenden willst.

JohnDoe
05.07.2002, 18:26
aso ich meinte VB6...

Cord Worthmann
05.07.2002, 19:50
VB6 ist die sprachversion.

was ich meine, ist, dass es unterschiede zwischen VBA (VB für anwendungen) und VBS (VB Script) gibt.

und ich arbeite ausschliesslich mit VBS, und weiss daher nicht, ob die entsprechenden geschichten in VBA genauso laufen.

Chaq
17.07.2002, 20:12
In VB6 (ohne FSO) könnte man es so machen:

Private Function FileExists(sFilename As String) As Boolean
FileExists = Dir(sFilename) <> Empty
End Function

Private Sub CreateEmptyFile(sFilename As String)
Dim ff
ff = FreeFile
Open sFilename For Output As #ff
Close #ff
End Sub

und dann noch beides nett benutzen ::D
Dim temp As String
temp = "C:\config.sys"
If Not FileExists(temp) Then
CreateEmptyFile temp
End If

Gruß

Chaq

gencha
20.07.2002, 10:34
if Dir("C:\autoexec.bat",vbNormal) = vbNullString then MsgBox("Datei nicht vorhanden")

;)


$me mag kein fso

sCHween
05.03.2003, 10:13
hm und was wenn ich anstatt c:/ ein \\server\ habe?

josch
12.01.2005, 07:22
mir gefällt die lösung von genacha sehr gut, ist kurz und klappt gut.

Wieso macht ihr es euch so umständlich, was hat die Version von gencha für nachteile ?

bzw die anderen für Vorteile

#stev#
12.01.2005, 09:01
Weils schöner aussieht - nein aber manschmal ist die kürzeste bzw. einfachste nicht immer die beste bzw. sauberste ... und wer sagt das das FSO eine VBS Variante wäre ? Das FSO gibts genauso in VB6 (Verweis auf MS Scripting Runtime und schon hat man das FSO) und es versteht jeder denn soviel mehr Code ist es auch nicht. Die anderen Lösungsvorschläge mit Open find ich auch nicht prickelnd aber das FSO ist doch ne feine Sache.

Hier der VB6 Code
Dim FSO As New FileSystemObject
If FSO.FileExists "c:\autoexec.bat" then
'tu irgendwas
End If

Diabolo
12.01.2005, 12:18
aber das FSO ist doch ne feine Sache

Uuuuund : braucht wieder eine Runtime, die nicht auf jedem Rechner installiert ist.

Cleverer ist genchas Vorschlag, ich hätte es mit APIs SearchTreeForFile gemacht (aber auch nur weil ich unwissend über Genchas Idee war).

#stev#
12.01.2005, 12:21
Uuuuund : braucht wieder eine Runtime, die nicht auf jedem Rechner installiert ist.


lol also wenn du die Runtime für das FSO ned hast dann hast du auch ned die VB6 Runtime womit egal wie du das coden würdest das komplette Programm ned mehr laufen würde ...

also wenn du das wirklich Rumtimelos haben möchtes dann nimm C++

John Doe
12.01.2005, 12:53
also wenn du das wirklich Rumtimelos haben möchtes dann nimm C++

so ganz richtig ist das nicht: auch c++ braucht eine runtime, nur ist diese fest in Windows integriert. Sonst würde auch Win nicht laufen.

#stev#
12.01.2005, 13:13
nicht unbedingt ... schon mal von cross compiling gehört ? ;)

josch
12.01.2005, 14:03
ok, damit wäre alles soweit klar :)

thx :]

Diabolo
12.01.2005, 14:05
steve, ich habe nicht von mir geredet. Lies mein Posting doch nochmal durch.

#stev#
12.01.2005, 14:08
mein Post war auch auf den von John Doe bezogern

josch
12.01.2005, 16:01
Dim FSO As New FileSystemObject
If FSO.FileExists "c:\autoexec.bat" then
'tu irgendwas
End If

Funktioniert nicht :/

"User-defiened Type not defined" wenn ich es ausführe, und beim einfügen in den code wurde "If FSO.FileExists "\autoexec.bat" then" markiert und gesagt "need then or goto"

#stev#
12.01.2005, 16:12
Weils schöner aussieht - nein aber manschmal ist die kürzeste bzw. einfachste nicht immer die beste bzw. sauberste ... und wer sagt das das FSO eine VBS Variante wäre ? Das FSO gibts genauso in VB6 (Verweis auf MS Scripting Runtime und schon hat man das FSO) und es versteht jeder denn soviel mehr Code ist es auch nicht. Die anderen Lösungsvorschläge mit Open find ich auch nicht prickelnd aber das FSO ist doch ne feine Sache.

Hier der VB6 Code
Dim FSO As New FileSystemObject
If FSO.FileExists "c:\autoexec.bat" then
'tu irgendwas
End If

Wer lesen kann ist klar im Vorteil

butterkeks
12.01.2005, 16:14
da fehlen die Klammern um den Parameter:

Dim FSO As New FileSystemObject
If FSO.FileExists("c:\autoexec.bat") then
'tu irgendwas
End If

butterkeks
12.01.2005, 16:15
@stev: weißt du, was cross compiling ist? Ich denke, du meinst static linking, welches aber ohne weitere Hexerei nicht in VB geht.

butterkeks
12.01.2005, 16:17
@Diabolo:
Die VB Runtime und VBS sind AFAIK getrennt voneinander. VBS hat keinen Zugriff auf VB Objekte wie "App".

VBS Runtimes werden installiert, wenn man scripting im windows Setup aktiviert (oder sogar immer, weil Windows ja manchmal etwas bloat mitinstalliert).

Zumindest ab Win98

#stev#
12.01.2005, 18:30
@stev: weißt du, was cross compiling ist? Ich denke, du meinst static linking, welches aber ohne weitere Hexerei nicht in VB geht.

Schon klar das war auch nur auf C++ bezogen lies mal alle Beiträge dann wird der Zusammenhang klar