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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Prüfen, ob Datei existiert.

  1. #1
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich würde gerne mit Codesys V3 und der SysFile Lib ein Baustein schreiben, welcher mir Prüft, ob eine Datei existiert.

    Dies würde ich egrne so machen, dass ich den Speicherort, den Dateinamen und die dateiendung an eine methode übergebe.
    Wenn ich nun nach irgendeiner datei mit der endung .txt suchen möchte, würde ich den Dateinamen einfach auf "*" schreiben.

    1. geht das?

    2. Es könnten ja auch mehrere Dateien mit "*.txt" gefunden werden, wie bekomme ich die dann alle raus? mehrfach abfragen, oder kann ich irgendwie ein array abrufen?
    Zitieren Zitieren Prüfen, ob Datei existiert.  

  2. #2
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Moin, also allgemein testen ob eine Datei besteht kannste mit der Open funktion aus der Sysfile ... allerdings brauchste da den vollständigen Dateipfad incl. Dateiname.

    wenn mich aber nicht alles täuscht gibt es in der Sysdir Bibliothek eine Funktion Read mit der du Verzeichnis Einträge lesen kannst.
    so lässt sich ja relativ schnell feststellen ob eine datei vom typ .txt vorhanden ist.

  3. #3
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Und wie funktioniert das? also mit der doku komme ich nicht zurecht. Da kann ma doch auch garnicht sagen, dass es ein .txt oder .xy sein soll, oder?
    Zitieren Zitieren Komme da nicht zurecht  

  4. #4
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    du machst einfach einmalig ein sysdiropen damit du dein handle und deinen ersten verzeichnis eintrag bekommst.
    dann machste so oft sysdirread, bis du am Ende des verzeichnisses angelangt bist und speicherst die dabei gesammelten datei namen in ein array.

    zum schluss einfach bei den dateinamen hinter dem punkt schauen ob da txt steht und dann hast es... grad getestet, klappt auch

  5. #5
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also hatte jetzt erst mal sysfileopen und close versucht. Also er öffnet die datei, dann merke ich mir, dass es sie gibt und schließe sie wieder. wollte jetzt zum testen mal versuchen, dass ich sie einfach im windows umbenenne. dann sagt mir wirndows, dass die datei noch von codesys verwendet wird. daraufhin habe ich sie nochmal geschlossen, und bei versuch sie zu öffnen, ging die steuerung in stop mit schwerem ausnahmefehler, was ist das denn?

  6. #6
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    hier ein kleiner Anstoß ...

    Code:
    PROGRAM PLC_PRG
    VAR
    	sFirstEntry : STRING;
    	DirInfo : SysDir.DirInfo;
    	rtsResult : SysFile.SysTypes.RTS_IEC_RESULT;
    	rtsResult1 : SysFile.SysTypes.RTS_IEC_RESULT;
    	rtsHandle : SysFile.SysTypes.RTS_IEC_HANDLE;
    	
    	xReadfirst : BOOL;
    	xContinue : BOOL;
    END_VAR
    
    IF xReadfirst THEN
    	rtsHandle := SysDir.SysDirOpen('/lib/',sFirstEntry,SIZEOF(sFirstEntry),ADR(DirInfo),ADR(rtsResult));
    	xReadfirst := FALSE;
    END_IF
    
    IF xContinue THEN
    	rtsResult1 := SysDir.SysDirRead(rtsHandle,sFirstEntry,SIZEOF(sFirstEntry),ADR(DirInfo));
    	xContinue := FALSE;
    END_IF

  7. #7
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    /lib/ muss halt dein verzeichnis sein, mit jedem xContinue := TRUE wird der nächste verzeichnis eintrag gelesen und in sFirstEntry gespeichert

    Die sysfile brauchste ja bei deinem Vorhaben garnicht ...

  8. #8
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    mich würd dann noch interessieren, obs geklappt hat oder ob ich dir Stuss ezählt habe

  9. #9
    SY50 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.02.2013
    Beiträge
    271
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich wollte inmal nur nach Dateiendungen suchen und das ander mal nach kompletten dateinamen.

    Wundere mich nur, das codesys die datei anscheinend nicht schließt. Das andere muss ich dann morgen ode rübermorgen noch mal versuchen. (Muss jetzt zum Kunden)
    Zitieren Zitieren Ich muss es mal versuchen  

  10. #10
    Registriert seit
    18.10.2012
    Beiträge
    34
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    mit dem oberen ansatz kannste nach Dateiendungen suchen, mit SysfileOpen nach bekannten Dateinamen.
    SysfileClose klappt auch problemlos.

Ähnliche Themen

  1. Kontrollieren ob Verzeichnis existiert
    Von XX5198 im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 23.07.2012, 15:02
  2. Relais gesucht. Existiert so etwas?
    Von forellengarten im Forum PC- und Netzwerktechnik
    Antworten: 19
    Letzter Beitrag: 18.11.2010, 20:54
  3. CP342-5 Profibus - Slave existiert nicht
    Von ssound1de im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 16.03.2009, 14:45
  4. Prüfen ob Variable existiert (WinCC 6.2)
    Von Jochen Kühner im Forum HMI
    Antworten: 5
    Letzter Beitrag: 20.06.2008, 12:03
  5. Panel PC 577 existiert nicht in der Bibo
    Von geduldiger im Forum HMI
    Antworten: 4
    Letzter Beitrag: 05.06.2007, 17:07

Lesezeichen

Berechtigungen

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