Mit CAA File Dirlist Ordner auflisten

Marty

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich benutze eine Lenze Steuerng die auf Codesys V3 läuft.
Dort möchte ich gerne aus einem Ordner die Namen der Unterordner auslesen und in ein Array packen.
Ich benutze dazu den DirList Baustein aus der CAA File library.
Hab das ganze im moment als Schrittkette gebaut und es funktioniert auch bis auf eine Kleinigkeit.
Er lässt leider immer einen Ordner weg, d.h. wenn ich nur einen Ordner habe zeigt er garnichts an und bei mehr als einen fehlt immer einer, ansonsten tauchen alle in meine Array auf.
Ich komme irgendwie nicht drauf an was es liegen könnte. Vielleicht kann ja jemand weiterhelfen.



Code:
[VAR]
RecipeDirlist    : ARRAY[1..50] OF STRING;
scnindex        :INT;                                                   
filcheck         :File.DirOpen;
filscn            : FILE.DirList;

[END VAR]


195: //Array zurücksetzen
        FOR scnindex := 1 TO 50  DO
            RecipeDirlist[scnindex] := '';
        END_FOR
        scnindex := 1;
        uiFileChgState := 200;

    
        
    200: //Ordner öffnen
        filcheck.sDirName := 'USBStorage2';    
        filcheck( xExecute := TRUE);
                
        
        IF filcheck.xDone THEN
               uiFileChgState := 201;
        ELSIF filcheck.xError THEN
                   uiFileChgState := 206;
        END_IF
                
        
    201: //Im geöffneten Ordner nach Dateien suchen
            
        filscn.hDir := filcheck.hDir;
        filscn( xExecute := TRUE);
                    
            IF filscn.xDone THEN
               RecipeDirlist[scnindex] := filscn.deDirEntry.sEntry;                        
               uiFileChgState := 202;
            ELSIF filscn.eError = 5106 THEN    
                   uiFileChgState := 205;                        
            ELSIF filscn.xError THEN
                   uiFileChgState := 206;
            END_IF
    
    202://Index erhöhen 
        scnindex := scnindex+1;                    
        filscn( xExecute := FALSE);
        uiFileChgState := 201;
        
    205://Alle Verzeichnisse gefunden
        filscn( xExecute := FALSE);
        filcheck( xExecute := FALSE);
        scnindex := 0;
        uiFileChgState := 0;

        
    206:    //fehler
        filscn( xExecute := FALSE);
        filcheck( xExecute := FALSE);
 
Ohne mich jetzt unmittelbar mit der Lenzesteuerung und der Bibliothek auszukennen:
Versuchs mal mit der Arraydefinition [0..49] und lass den Schleifenzähler entsprechend bei 0 beginnen.

MfG Jensemann
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, aber funktioniert leider auch nicht.
Wenn ich das ganze ohne meine Kette probiere und nur nach einem einzelnen Ordner suchen will funktionierts auch nicht.
Er sagt dann komischerweise schon beim ersten durchlauf NO MORE ENTRIES...
 
Zurück
Oben