Seite 1 von 1

Logik Frage

Verfasst: 19.03.2005 05:23
von MVXA
Hallo!
Ich weiss, ist schon spät und genau deswegen frage ich auch. Da mein logisches Denken so langsam kracht, kann ich diese Prozedure nicht mehr so genau im Hirn nach spielen. Ihr müsstet mir sagen ob alle Elemente in der Liste abgearbeitet werden:

Code: Alles auswählen

Procedure AssembleOutput()
    DefType.l lngFileOut, lngOffSet
    
    CPrint("berechne Output..." + #STX$, #True)
    ForEach FileList()
        lngFileOut = ReadFile(#PB_Any, FileList())
        If lngFileOut > 0
            AddElement(FilesIn())
            PokeS(@FilesIn()\sifName[0], GetFilePart(FileList()), #MAX_PATH)
            FilesIn()\sifStart = lngOffSet: lngOffSet + Lof()
            FilesIn()\sifEnde  = lngOffSet
            
            CloseFile(lngFileOut)
        Else
            CPrint("^CFehler^7: Konnte Datei nicht öffnen: " + FileList() + #STX$, #True)
            DeleteElement(FileList())
        EndIf
    Next    
EndProcedure
Meine Sorge ist, dass DeleteElement(FileList()) ja zum nähsten Element springt. Das ForEach springt aber wieder. Kann so nicht vielleicht ein Element "verloren" gehen o_O?

Verfasst: 19.03.2005 12:01
von Laurin
Bei DeleteElement() hast du einen Parameter vergessen.

Code: Alles auswählen

DeleteElement(FileList(), 1) ; Löscht das aktuelle Element und mach das darauf folgende zum Aktuellen.

Verfasst: 19.03.2005 15:27
von MVXA
ja, das ist ja das problem. Wenn ich das darauf folgende zum aktuelem element mache, hab ich angst, dass foreach dann noch eins weiter springt und dann ein element einfach übersprungen wird. Hilft wohl nur Try&Error -_-. Jetz bin ich ausgeschlafen und kann mich dessen annehmen :mrgreen:.

Verfasst: 19.03.2005 15:49
von MVXA
funkt alles :mrgreen: