Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: WinCC_VBS_FileExist_oder_Dir

  1. #1
    Registriert seit
    02.04.2013
    Beiträge
    15
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Böse


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mahlzeit,

    ich bin gerade dabei in WinCC (Version 7.2) ein VB-Script zu schreiben, welches u.a. überprüfen soll, ob eine bestimmte Datei vorhanden ist.

    Folgender Code läuft bei mir auf Fehler:
    Code:
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExist(Verzeichnis) Then
    Artikelnummer = 1
    End If
    Ebenfalls ausprobiert habe ich:
    Code:
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.Dir(Verzeichnis) <> "" Then
    Artikelnummer = 1
    End If
    Bei beiden Versuchen kommt folgende Fehlermeldung:
    Das Objekt unterstützt diese Eigenschaft oder Methode nicht.: 'fso.FileExist' (oder eben 'fso.Dir').

    Ich nehme mal an, dass mir hier wieder die eingeschränkte VBS-Bibliothek im Wege steht? Oder mache ich irgendetwas falsch?

    Sollte es bei einem FileSystemObject weder die Methode "FileExist" noch "Dir" (im abgespeckten WinCC-VBS) geben, bräuchte ich einen alternativen Lösungsvorschlag.

    Danke im Voraus für eure Mühen.
    LG Huan90
    Zitieren Zitieren WinCC_VBS_FileExist_oder_Dir  

  2. #2
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Code:
    If fso.Dir(Verzeichnis)
    Gibt es nicht
    Der Aufruf müsste dann
    Code:
    fso.FolderExists(Verzeichnis)
    heissen.
    FileExist unterstützt keine Verzeichnisse. Hie musst du einen Dateinamen inklusive Pfad übergeben.
    Code:
    If fso.FileExist(Datei)
    Holger

  3. #3
    Huan90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.04.2013
    Beiträge
    15
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Guten Morgen,
    danke für die Antwort. Ich hätte vielleicht erwähnen sollen, dass in "Verzeichnis", neben dem Verzeichnis auch der Dateiname steht.

    Mittlerweile bin ich auf eine Lösung gekommen. (In der Hoffnung, dass niemals jemand aus jux eine Datei in das Verzeichnis schiebt)...

    Code:
    Set folder = fso.GetFolder(Verzeichnis)
       Set files = folder.Files
       n = 0
       For Each d In files
       n = n + 1
       Next
       
       If n > 0 Then
    (Natürlich entspricht der Inhalt von "Verzeichnis" nun tatsächlich seinem Namen).

    Danke fuer eure Hilfe,
    LG Huan90

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Huan90 Beitrag anzeigen
    ich bin gerade dabei in WinCC (Version 7.2) ein VB-Script zu schreiben, welches u.a. überprüfen soll, ob eine bestimmte Datei vorhanden ist.
    Zitat Zitat von Huan90 Beitrag anzeigen
    Mittlerweile bin ich auf eine Lösung gekommen. (In der Hoffnung, dass niemals jemand aus jux eine Datei in das Verzeichnis schiebt)...

    Code:
    Set folder = fso.GetFolder(Verzeichnis)
       Set files = folder.Files
       n = 0
       For Each d In files
       n = n + 1
       Next
       
       If n > 0 Then
    Verrätst Du uns auch, was Deine Lösung mit Deinem Problem zu tun hat?
    Nicht daß jemand den Code für die Lösung hält und nachmacht.

    btw: Als professioneller(?) Programmierer darfst Du nicht "hoffen", daß die Ablaufumgebung Deinen Code nicht negativ beeinflußt - Du mußt schon selber den Code korrekt und robust schreiben und mögliche externe Probleme abfangen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Huan90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.04.2013
    Beiträge
    15
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Nabend,
    einmal für "Jemanden":
    Der code:
    Code:
    Set folder = fso.GetFolder(Verzeichnis)
    Set files = folder.Files
    n = 0
    For Each d In files
    n = n + 1
    Next
    
    If n > 0 Then
    Sucht nicht nach einer speziellen Datei, sondern durchsucht ein Verzeichnis und zählt die darin enthaltenen Dateien. Mit der Überprüfung "If n>0 Then" prüfe ich also, ob (irgend) eine Datei im angegebenen Verzeichnis vorhanden ist.

    @Harald
    Professioneller Programmierer bin ich nicht, ich habe eine Ausbildung zum Fachinformatiker Systemintegration abgeschlossen. Das Programmierern haben wir nur "nebenbei" gemacht. Mir fehlt hier schlichtweg die Erfahrung. Darüber, dass ich den code robuster schreiben sollte bin ich mir im Klaren. Allerdings wird diese Schnittstelle morgen getestet und da musste eine vorläufige Notlösung her.

    LG Huan90
    p.s. Sicher ist es sinnvoll für die Nachwelt noch einmal darauf hinzuweisen, dass meine Notlösung nicht genau das anfängliche Problem behandelt, aber wie wäre es eig. mal mit einem konkreten Lösungsvorschlag anstelle der "Klugscheißerei"?
    p.p.s. Ein Verweis auf die Dokumentation der im WinCC enthaltenen VBS-Bibliotheken würde, zumindest mir, schon ausreichen.
    Geändert von Huan90 (03.02.2015 um 22:21 Uhr) Grund: Code wieder "schoen machen"

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Konkreter Lösungsvorschlag: bei Deinem fso.FileExist fehlt am Ende ein s: fso.FileExists
    Code:
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(Datei) Then
      Artikelnummer = 1
    End If
    Ich bin jetzt nicht sicher, ich meine, in WinCC 7.2 ist eine VBS-Dokumentation dabei. Doch ganz sicher: in WinCC flexible 2008 ... ist eine sehr umfassende Scripting Referenz in Deutsch dabei. Bei Microsoft finde ich die VBS Referenz nur auf englisch. Daß FileExists am Ende mit s geschrieben wird, das weiß Google sogar schon beim eintippen.

    Oder schau mal hier in die FAQ, da sind viele VBS-Beispiele rund um Datei-funktionen, u.a. auch Funktionen FileExist(), FolderExist()...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.351
    Danke
    452
    Erhielt 692 Danke für 517 Beiträge

    Standard

    FileExists funktioniert auf jeden Fall.
    In der WinCC Scripting Reference ist FileExists/FolderExists aber anscheinend nicht drin.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Oder schau mal hier in die FAQ, da sind viele VBS-Beispiele rund um Datei-funktionen, u.a. auch Funktionen FileExist(), FolderExist()...
    FileExists(), FolderExists()...
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  8. #8
    Huan90 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    02.04.2013
    Beiträge
    15
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Okay, diese Fehler häufen sich mittlerweile zu sehr, ich glaub das mit dem Programmieren geb ich besser auf -.-
    Danke und... *schäm*

    p.s.
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •