Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Filesystem

Kai
2007-09-11
2007-09-19
  • Kai - 2007-09-11

    hallo

    ich arbeite zur Zeit mit dem Wago 750-841. ich suche momentan nach einer Lösung dafür, wie ich im Programm die verbleibende Größe meines Filesystems ermitteln kann, um angelegte Protokolldateien gegebenenfalls

    wieder zu löschen, wenn sich der Speicherplatz dem Ende neigt.

    Gibt es dafür eine Bilbliothek?

    Desweiteren würde mich interessieren, ob/wie ich Dateien innerhalb des Filesystems von einem Ordner in einen anderen Ordner verschieben bzw. kopieren kann?

    Würde mich sehr über eure Hilfe freuen,

    MfG Kai

     
  • Oberchefe - 2007-09-11

    Für's erste Problem mußt Du Dir warscheinlich was mit der SysLibDir.lib basteln.

     
  • Kai - 2007-09-12

    mein zweites problem hat sich erledigt... habs hinbekommen. wenn man den kompletten pfad+dateinamen angibt, dann ist das kopieren ganz einfach.

    aber bei der anwendung der SysLibDir.lib (funktion SysDirRead) hab ich probleme.

    Gibts dafür irgendwo programmierbeispiele?

     
  • Oberchefe - 2007-09-13

    Hilfe:

    C:\Programme\WAGO Software\CoDeSys V2.3\Help\German\SysLibDir.chm

    Sollte also nach dem Schema ablaufen:

    MeineVariable:=SysDirOpen("Pfadname");
    CheckObNochWasZuLesen:=SysDirRead(MeineVariable,Ergebnisstring,PointerAufEintrag);
    

    Die zweite Zeile wird solange wiederholt bis "CheckObNochWasZuLesen" Null wird.

     
  • Kai - 2007-09-18

    also aus der hilfe-datei werd ich, ehrlich gesagt nicht schlau.

    hier ist mal ein Bsp von mir, wie ich es versucht habe:

    VAR

    Dir_Handle : DWORD;

    eintraege : ARRAY [1..5] OF STRING;

    out : UDINT;

    i: INT;

    strTemp: STRING;

    END_VAR


    Dir_Handle := SysDirOpen('A:\PLC\DATEN');

    i := 0;

    out := 1;

    WHILE out <> 0 DO

    out := SysDirRead(Dir_Handle , strTemp , 0)

    i := i+1;

    eintraege[i] := strTemp;

    END_WHILE

    Der Ordner wird zwar geöffnet, die Dateinamen im Ordner werden aber nicht ausgelesen.

    Hat vielleicht jemand ne Idee, was ich falsch mache?

     
  • Erik Böhm - 2007-09-18

    Mahlzeit

    Bei mir sieht das so aus:

    dwDirHandle := SysDirOpen(strPrgPath);

    FOR i:=1 TO 100 BY 1 DO

    strDirEntry[i]  := '';
    

    END_FOR

    i := 0;

    WHILE SysDirRead(hDir:=dwDirHandle,strTemp,0) <> 0 DO

    strExt  := RIGHT(strTemp,4);
    
    IF strExt = '.txt' OR strExt = '.din' OR strExt = '.DIN' THEN
    
        i   := i+1;
    
        strDirEntry[i]  := strTemp;
    
    END_IF
    

    END_WHILE

    Das funktioniert auf einer RTE wunderbar.

    Gruss Erik

     
  • Kai - 2007-09-19

    tja, bei mir funktioniert es leider nicht. die while-schleife läuft schon so oft durch wie dateien im ordner vorhanden sind, aber die dateinamen werden nicht ausgelesen bzw. die variable "strTemp" ist immer leer.

    was, ausser null, kann ich denn eigentlich auf die 3. eingangsvariable "pDirInfo" von "SysDirRead" schreiben?

     
  • Erik Böhm - 2007-09-19

    Mahlzeit

    Da würde ich jetzt mal vorschlagen die CoDeSys Hilfe zu benutzen.

    Da wird das ausführlich erklärt.

    Gruss

    Erik

     

Log in to post a comment.