ich benutze VB6 (nicht VB6.net)
Welche Befehle gibt es da, um abzufragen, ob eine Datei vorhanden ist und welches der Ordner ist, in dem meine Programm-exe liegt.
Gibt es da auch eine Klasse (wie System.Environment in VB6)?
wie schon geschrieben ueber app.path kannst du den Pfad ermitteln, wo sich deine Exe befindet, bzw. von wo sie ausgefuehrt wird
Um zu prüfen ob ein File existiert kannst du folgende Wege waehle
1: Mache dich der Dir Function zu nutze
2: Ueber das FileSystemObject ( FSO)
3: einfach das File zu öffen und dann schliesseb und ggbfls. Fehler abfangen
MFG Alex
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Das mit der app.path funktioniert gut.
Mit der dir-Funktion hab ich auch mal ein bißchen rumhantiert, aber damit konnte ich nicht eine bestimmte Datei abfragen, sondern musste das um 2 Ecken herum programmieren.
Das mit dem Fehler abfangen hab ich noch nicht ganz verstanden. Ich hab da schon öfters was drüber gelesen, aber nicht verstanden wie das funktioniert. Was muss ich da denn machen? (Dann weiß ich das für zukünftige Anwendungen )
Mit der dir-Funktion hab ich auch mal ein bißchen rumhantiert,
Also dir Dir Function nehme ich nur ungern, da sie in manchen Faellen etwas falsches zurueck gibt.
Aber überprüfen kannst du es mit if dir(Filename) ="" then …
Für Filename trage einfach as zu überprüfende File ein.
Erhaelst du eine Leere Zeichefolge, also „“ dann existiert das File nicht. Existiert das File, so erhaelst du den Filenamen zurueck
aber damit konnte ich nicht eine bestimmte Datei abfragen,
sondern musste das um 2 Ecken herum programmieren.
Wieso denn nicht? Bei mir klappt das anstandslos!
Wie hast du es denn realisiert ?
Das mit dem Fehler abfangen hab ich noch nicht ganz
verstanden. Ich hab da schon öfters was drüber gelesen, aber
nicht verstanden wie das funktioniert. Was muss ich da denn
machen? (Dann weiß ich das für zukünftige Anwendungen )
Am besten du schreibst dir eine seperate Function und se gibt dir true oder false zurueck falls das File exitiert.
Eine solche Funktion koennte wiefolgt aussehen.
Hier einige Varianten
Public Function FileExist(Dateiname As String) As Boolean
On Error Goto Fehler
FileExist = Dir$(Dateiname) ""
Exit Function
Fehler:
FileExist = False
Resume Next
End Function
Public Function FileExists(strPath As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(strPath) And (vbDirectory Or vbVolume)) = 0)
End Function
Private Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( \_
ByVal lpFileName As String, \_
ByRef lpFindFileData As WIN32\_FIND\_DATA \_
) As Long
Private Declare Function FindClose Lib "kernel32.dll" ( \_
ByVal hFindFile As Long \_
) As Long
Private Const INVALID\_HANDLE\_VALUE As Long = -1
Private Const MAX\_PATH As Long = 260
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Private Type WIN32\_FIND\_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String \* MAX\_PATH
cAlternate As String \* 14
End Type
Private Function FileExists(ByRef strFileName As String) As Boolean
Dim wfdWFD As WIN32\_FIND\_DATA
Dim hFile As Long
hFile = FindFirstFile(strFileName, wfdWFD)
FileExists = (hFile INVALID\_HANDLE\_VALUE)
Call FindClose(hFile)
End Function
Private Function FileExist(Filename as string) as boolean
on error goto Fehler
dim fn as byte
FileExist =false
fn = freefile
open Filename for binary as #fn
close fn
Fileexist=true
exit function
fehler:
exit function
end Function
Aufruf erfolgt jeweils mit if Fileexist(zu prüfende Datei) then
'File ist vorhanden
else
'File existiert nicht
end if
Das mit der app.path funktioniert gut.
Mit der dir-Funktion hab ich auch mal ein bißchen rumhantiert,
aber damit konnte ich nicht eine bestimmte Datei abfragen,
sondern musste das um 2 Ecken herum programmieren.
Das mit dem Fehler abfangen hab ich noch nicht ganz
verstanden. Ich hab da schon öfters was drüber gelesen, aber
nicht verstanden wie das funktioniert. Was muss ich da denn
machen? (Dann weiß ich das für zukünftige Anwendungen )
Hi Axel,
in VBA sieht ne normale Sub so aus:
sub tt()
dein Code
End sub
mit Fehlerabfangung halt so:
sub tt()
on error goto to behandlung
dein Code
exit sub
behandlung ’ oder auch behandlung: , kenne beides
dein Fehlercode
End sub
Schau mal in der Hilfe nach On Error goto , err usw.
Gruß
Reinhard
so wie du das mit der dir-Funktion machst ist das natürlich viel einfacher. So funktionier es auch bei mir. Ich hab da wohl etwas kompliziert gedacht, als ich so am programmieren war.
Ich hab die dir-Funktion mit dem Ordner, in dem die Datei ist, abgefragt. Als Rückgabewert hat die Funktion ja dann den Namen der ersten Datei in dem Ordner. Den Rückgabewert hab ich dann so lange mit dem Namen der gesuchten Datei verglichen, bis es gleich war oder der Rückgabewert „“ ergab. Ist zwar ein wenig komplizierter, funktioniert aber auch. Das Problem war nur, dass du den Dateinamen in den eigentlichen Dateinamen und den Dateipfad trennen musst.
das mit der Fehlerbehandlung ist mir jetzt auch klar. Ich werd das demnächst wohl gleich ausprobieren können. (Muss ein kleines Progrämmle in meiner Firma schreiben )
Vielen Dank für die geduldigen Erklärungen.