Page 4 of 5
Delegates
Posted: Fri Dec 20, 2019 10:26 am
by wriedmann
Hallo Franz,
statt eines Punktes musst Du einen Doppelpunkt einsetzen:
Code: Select all
oFileSystemWatcher:EnableRaisingEvents := TRUE
auch hier:
Code: Select all
oFileSystemWatcher:Created += FileSystemEventHandler{FileCreated}
und hier:
Code: Select all
IF Right(Upper(e:Name),4) == ".PRN"
ProcessFile(e:FullPath)
ENDIF
Wolfgang
Delegates
Posted: Fri Dec 20, 2019 10:32 am
by wriedmann
Delegates
Posted: Fri Dec 20, 2019 11:12 am
by Karl-Heinz
Hallo Franz,
- beim CONSTRUCTOR und den "AS VOID" Methoden muss auch noch das SELF hinter dem RETURN weg.
- Der Kompiler bringt zudem auch eine "unreachable code detected" warning. Das liegt an dem "BREAK" das mit "EXIT" ersetzt werden muss.
Gruß
Karl-Heinz
Delegates
Posted: Fri Dec 20, 2019 12:00 pm
by lagraf
Hallo Wolfgang und Karl-Heinz,
das hätte ich eigentlich wissen müssen, ist ja VO Syntax! Aber ich habe mich wohl so stark auf C# konzentriert, dass ich darüber die VO Syntax irgendwie vergessen habe!
Danke für die Hilfe!
Delegates
Posted: Fri Dec 20, 2019 12:14 pm
by wriedmann
Hallo Franz,
das hätte ich eigentlich wissen müssen, ist ja VO Syntax! Aber ich habe mich wohl so stark auf C# konzentriert, dass ich darüber die VO Syntax irgendwie vergessen habe!
Zum Glück ist die X#-Syntax der von VO so ähnlich....
lg
Wolfgang
Delegates
Posted: Fri Dec 20, 2019 2:38 pm
by lagraf
Soweit läuft das Programm jetzt, dank an alle für die Hilfestellungen!
Noch ein paar allgemeine Fragen dazu zum besseren Verständnis:
1) Soll man bei der Klasse FileInputMonitor beim Beenden noch irgend etwas zusammenräumen (Destructor)?
2) Warning XS0219: Variable 'oFileInputMonitor' is assigned but its value is never used. No Na, kann man da irgendetwas machen, damit die Meldung nicht kommt?
Code: Select all
LOCAL oFileInputMonitor AS FileInputMonitor
oFileInputMonitor := FileInputMonitor{_cDir, "*.PRN"}
3) Mit der Klasse FileInputMonitor wird ja ein Thread zur Überwachung gestartet. Wenn der User jetzt bei den Parametern (Verzeichnis, FileMask) etwas ändert, wie schließt man den Thread dann um ihn dann mit geänderten Parametern neu zu starten? Genügt da ein oFileInputMonitor := NULL_OBJECT?
Delegates
Posted: Fri Dec 20, 2019 3:21 pm
by wriedmann
Hallo Franz,
ich würde eine Methode einbauen, die die Dispose()-Methode des FileSystemWatchers aufruft.
Damit sollte das beendet sein.
Ideaierweise wird das FileInputMonitor-Objekt nicht einer lokalen Variablen zugewiesen, wo es verloren geht, sondern einer Instanz-Variablen, wo man es bei Programmende aufräumen kann.
Damit bist Du auch die XS0219 los, denn die greift nur bei lokalen Variablen.
Wolfgang
Delegates
Posted: Fri Dec 20, 2019 4:32 pm
by lagraf
Hallo Wolfgang,
habe ich eingebaut! Allerdings kann ich das im FolderToWatch gefundene File (e:FullPath) nicht weiterverarbeiten, da es gelockt ist! Wie kann man die Sperre aufheben um es zu renamen oder zu löschen?
Delegates
Posted: Fri Dec 20, 2019 4:52 pm
by wriedmann
Hallo Franz,
was machst Du mit der Datei?
Das mit dem FileStream, wenn Du das noch drin hast, kannst Du rausnehmen, das öffnet nämloch die Datei,
Wolfgang
Delegates
Posted: Fri Dec 20, 2019 5:08 pm
by lagraf
Zuerst den Inhalt drucken und dann die Datei löschen!
Dann schliesse ich erst mal mit oReader:Close() vor dem Löschen, dann klappts!
Danke!