tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
6624
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von wOp
    wOp wOp ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Ort
    Aus dem grünen Herz Deutschlands
    Beiträge
    56
    aHoi,

    ich möchte Prüfen ob eine bestimmte Datei, beispielsweise c:\test.ini vorhanden ist. Bitte um ein kleines Code Beispiel.
     
    Programmieren ohne Becks und Gauloises... .geht nicht!

    motivierende Grüße
    wOp

  2. #2
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Hi,

    eine Möglichkeit wäre das FileSystemObject aus der MS Scripting Runtime:
    Code :
    1
    2
    3
    4
    5
    6
    
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
     
    If fso.FileExists("C:\Test.txt") Then
        ' ...
    End If
    Es gibt aber noch mehrere andere Möglichkeiten.
     

  3. #3
    Avatar von wOp
    wOp wOp ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Ort
    Aus dem grünen Herz Deutschlands
    Beiträge
    56
    Eine reicht mir. Danke für die schnelle Hilfe.
     
    Programmieren ohne Becks und Gauloises... .geht nicht!

    motivierende Grüße
    wOp

  4. #4
    VB_Freak_goes_C VB_Freak_goes_C ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    25
    never use fso, its bad....

    mach es lieber händisch über die Dir funktion

    Public Function CheckPath(ByVal sPath As String) As Boolean
    On Error GoTo ErrCheck
    If Dir$(sPath, vbDirectory) = "" Then
    CheckPath = False
    Else
    CheckPath = True
    End If
    Exit Function
    ErrCheck:
    CheckPath = False
    Err.Clear
    End Function

    ist zwar ne funktion um auf Ordner abzuprüfen, ob vorhanden oder net, aber mit Dateien genauso, lass dich durch vbDirectory net iritieren.
    Geändert von VB_Freak_goes_C (11.02.04 um 15:54 Uhr)
     

  5. #5
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    Was ist denn der Vorteil der Dir-Funktion gegenüber dem FSO? Ich hab's nämlich genau andersrum in Erinnerung.
    FSO gehört zwar zur Scripting Runtime, ist aber einfacher zu bedienen und bietet einen (wenn man das für VB überhaupt so sagen darf, ohne auf dem Scheiterhaufen zu landen) objektorientierteren Ansatz.
     

  6. #6
    VB_Freak_goes_C VB_Freak_goes_C ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    25
    der wohl überhaupt wesentlichste Aspekt gegen das FSO ist, das es potentiellen Angreifern, Tür und Tor auf deinen Rechner, den Rechner des Anwenders öffnet.
    Ob das immer noch so ist weis ich nicht, aber man muss es ja nicht ausprobieren.

    Aber ich hab noch was besseres gefunden, zum Thema existenz prüfung.

    Schaut euch mal das hier an, ziemlich edel würd cih sagen, sogar UNC Pfade sind kein Prob

    http://www.aboutvb.de/khw/artikel/khwpathexists.htm
     

  7. #7
    Registriert seit
    Nov 2001
    Ort
    Gießen
    Beiträge
    4.091
    der wohl überhaupt wesentlichste Aspekt gegen das FSO ist, das es potentiellen Angreifern, Tür und Tor auf deinen Rechner, den Rechner des Anwenders öffnet.
    Wenn's danach geht, dürfte man Windows und VB überhaupt nicht benutzen.
     

  8. #8
    Bump Digger Bump Digger ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    12
    Ich will aus meinem Programm heraus Anwendungen und Spiele starten.
    Und um Laufzeitfehler zu vermeiden, wenn die Datei nicht existiert, will ich vorher überprüfen ob die Datei vorhanden ist.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub RingBomberman_Click()
    If Dir("c:\intrplay\bomberman\bm95.exe") Then
    Call Shell("c:\intrplay\bomberman\bm95.exe", vbNormalFocus)
    Else
    MsgBox ("Datei nicht vorhanden")
    End If
    End Sub

    Nur gibt er mit jetzt eine Meldung das die Typen unverträglich sind.
    Kann mir jemand helfen?
    Ich find die Methode mit dem dir-Befehl schon nicht schlecht, wenn sie funktionieren würde.
    Es muss ja nicht gleich ein ellenlanger Code sein wenn eine Zeile auch reicht.
     

  9. #9
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Das hier:
    Code :
    1
    
    If Dir("c:\intrplay\bomberman\bm95.exe") Then ...
    kann gar nicht funktionieren. Denn das Ergebnis der Dir-Funktion wird für die IF-Abfrage in eine Variable vom Typ Boolean konvertiert. Wenn die Datei nun aber nicht existiert, dann ergibt die Dir-Funktion als Ergebnis einen Null-String. Dieser kann nicht nach Boolean konvertiert werden und es gibt einen Laufzeitfehler.

    Wenn du die Dir-Funktion verwenden willst, dann könntest du es so machen, indem du die Länge des Dir-Ergebnisses auswertest:
    Code :
    1
    
    If Len(Dir("c:\intrplay\bomberman\bm95.exe"))>0 Then ...

    Ich selber prüfe die Existenz von Dateien und Verzeichnissen meistens mit dieser Funktion:
    Code :
    1
    2
    3
    4
    5
    6
    
    Private Function Existiert(ByVal Pfad As String) As Boolean
    On Local Error Resume Next
    VBA.GetAttr Pfad
    Existiert = (Err.Number = 0)
    If Not Existiert Then Err.Clear
    End Function
    Hier verwende ich die GetAttr-Funktion, die die Eigenschaften einer Datei oder eines Verzeichnisses ermittelt. Wenn GetAttr einen Fehler erzeugt, dann gehe ich davon aus, dass die Datei oder das Verzeichnis nicht existiert.
    Ich hoffe ich konnte helfen.
    Geändert von Shakie (24.07.05 um 19:01 Uhr)
     
    hihi = -h²

  10. #10
    Bump Digger Bump Digger ist offline Mitglied
    Registriert seit
    Jun 2004
    Beiträge
    12
    Danke Shakie, das hat mir sehr weitergeholfen.
    Ich will nun aber einen Schritt weitergehen und will keinen festen Pfad haben. Sondern eine Variable die den Pfad enthält.
    Ich kann den Pfad auch durch den Öffnen-Dialog in die Variable schreiben, nur kann ich das Programm nicht mehr ausführen.
    Ich denke das mein Fehler im Quelltext des Programmaufrufs ist.

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub RingAmp_Click()
    If Len(Dir(Amp)) > 0 Then
    Call Shell(Amp, vbNormalFocus)
    Else
    MsgBox ("Datei nicht vorhanden")
    End If
    End Sub

    In der Variable Amp steht "E:\Winamp\Winamp.exe" drin (ohne Gänsefüsse).
    Und die Abfrage wird ja passiert da der Pfad länger als null ist.
    Nur beim Call bricht er dann mit "Datei nicht gefunden ab".

    Kann mir da bitte jemand weiterhelfen?

    Edit:

    Hab das jetzt auch mal mit

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub RingAmp_Click()
    If Len(Dir(Amp)) > 0 Then
    Call Shell("Amp", vbNormalFocus)
    Else
    MsgBox ("Datei nicht vorhanden")
    End If
    End Sub

    versucht. Ergebniss ist das gleiche: Laufzeitfehler 53/ Datei nicht gefunden.

    Edit2:
    Hab gemerkt das das nicht hier her gehört, sorry.
    Aber zur Aufklärung des Problems:

    Der Code

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub RingAmp_Click()
    If Len(Dir(Amp)) > 0 Then
    Call Shell(Amp, vbNormalFocus)
    Else
    MsgBox ("Datei nicht vorhanden")
    End If
    End Sub

    funktioniert. Hab nur nicht bedacht das ich die Variable Amp in einer anderen Form dem Pfad zugewiesen habe und somit konnte das natürlich nicht funktionieren, da in der Form wo die Datei geöffnet werden soll die Variable immer noch leer war.
    Geändert von Bump Digger (28.07.05 um 19:37 Uhr)
     

Ähnliche Themen

  1. Objekt auf Existenz prüfen
    Von A319 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 17.06.08, 00:13
  2. Dateipfad auf Existenz prüfen
    Von jorgeHX im Forum Java
    Antworten: 2
    Letzter Beitrag: 30.06.05, 14:57
  3. Existenz von Datei prüfen
    Von DeChecka im Forum C/C++
    Antworten: 9
    Letzter Beitrag: 19.06.05, 17:59
  4. Registryeintrag auf Existenz prüfen
    Von DerStatist im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 24.03.05, 14:33
  5. session_start() auf existenz prüfen ?
    Von methodus im Forum PHP
    Antworten: 6
    Letzter Beitrag: 20.04.02, 22:50