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

SysLibFile; SysFileEOF

proton
2007-03-08
2007-03-08
  • proton - 2007-03-08

    Hallo,

    Habe Probleme mit der Benützung der Funktion SysFileEOF aus der Bibliothek SysLibFile. Lasse das Ganze in der SoftSPS PLCWinNT V2.4.4.0 unter Wizcon laufen. Die Funktionen File öffnen, lesen und schliessen habe ich im Griff, aber SysFileEOF will nicht.

    Mein Code:


    ( SchreibPosition bestimmen; resp. Ende der Datei finden )

    dPos:=1;

    WHILE NOT(SysFileEOF(File:=dwFileNr)=1) DO

    SysFileSetPos(File:=dwFileNr, Pos:=dPos+1);
    
    dPos := SysFileGetPos(File:=dwFileNr);
    

    END_WHILE


    Leider kommt das Programm aber nicht mehr aus der Schlaufe, weil der das eigentlich Ende offensichtlich nicht findet. Und wenn die Datei leer ist, gehts gar nicht.

    Die Datei ist ein txt-file. Geht das überhaupt, oder muss ich ein anderes Format wählen? Fürs Lesen hats allerdings prima funktioniert.

    Vielen Dank im Voraus für die Hilfe.

     
  • gravieren - 2007-03-08

    Hi

    Zitat:
    WHILE NOT(SysFileEOF(File:=dwFileNr)=1) DO

    Schau doch mal in die Beschreibung.

    Was gibt SysDileEOF() zurück ? INT oder BOOL.

    Dein Code Denkt der Returnwert sein ein "INT" .

    Ist das Korekt ?

    (Ist möglicherweise Hardwareabhängig/Herstellerabhängig !)

     
  • proton - 2007-03-08

    Zitat:
    WHILE NOT(SysFileEOF(File:=dwFileNr)=1) DO

    Meiner Erfahrung nach erkennt Codesys die Werte 0 und 1 auch als boolsche Werte. Anyway, mit folgendem hats auch nicht funktioniert:


    WHILE NOT(SysFileEOF(File:=dwFileNr)) DO

    xPosOk := SysFileSetPos(File:=dwFileNr, Pos:=(dwPos+1));
    
    dwPos := SysFileGetPos(File:=dwFileNr);
    

    END_WHILE


    Komisch. Hat jemand sonst noch nen Tipp?

     

Log in to post a comment.