-> 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.
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);