Seite 1 von 1

Auf Ordneränderung prüfen

Verfasst: 23.10.2013 16:34
von Tommy
Hi :)
Ich bin mir nicht sicher ob mein vorgehensweise richtig oder gut ist.
Ich will gerne ein bestimmten Ordner auf Änderung prüfen ob Dateien erstellt geändert oder und gelöscht wurden.
Ich mache zur Zeit so das ich ein Thread habe mit einer Schleife die mit ExamineDirectory in den Ordner rein schaut und den Bestand jeder Datei abfragt. Da muss ich aber von jeder Datei den Namen und die Größe zwischenspeichern um vergleichen zu können.
Würdet ihr das auch so machen oder gibt es einen leicheren besseren Weg?

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 16:54
von Bisonte
Für Windows würde RSBasic's WINAPI Library dies ausspucken :

Code: Alles auswählen

;Autor:  Sparkie

EnableExplicit

#FILE_NOTIFY_CHANGE_FILE_NAME = 1
#FILE_NOTIFY_CHANGE_DIR_NAME = 2
#FILE_NOTIFY_CHANGE_ATTRIBUTES = 4
#FILE_NOTIFY_CHANGE_SIZE = 8
#FILE_NOTIFY_CHANGE_LAST_WRITE = $10
#FILE_NOTIFY_CHANGE_SECURITY = $100
#INVALID_HANDLE_VALUE = - 1
#STATUS_WAIT_0 = 0
#WAIT_OBJECT_0 = #STATUS_WAIT_0 + 0

Define EventID

Procedure FFCN(z)
  Protected hFFCN
  Protected status
  
  hFFCN = FindFirstChangeNotification_("c:\abc\", #False, #FILE_NOTIFY_CHANGE_FILE_NAME)
  If hFFCN = #INVALID_HANDLE_VALUE
    MessageRequester("Error", "Invalid FindFirstChangeNotification.")
    ExitProcess_(0)
  EndIf
  While #True
    status = WaitForSingleObject_(hFFCN, #INFINITE)
    Select status
      Case #WAIT_OBJECT_0
        MessageRequester("Info", "Change occured in C:\abc\")
        If FindNextChangeNotification_(hFFCN) = #False
          MessageRequester("Error", "Invalid FindNextChangeNotification")
          ExitProcess_(0)
        EndIf
    EndSelect
  Wend
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(0, 10, 10, 280, 20, "Create file: c:\abc\Testing.txt")
  ButtonGadget(1, 10, 50, 280, 20, "Delete file: c:\abc\Testing.txt")
  
  CreateThread(@FFCN(),0)
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Gadget
  Select EventGadget()
    Case 0
      CreateFile(0, "c:\abc\Testing.txt")
      CloseFile(0)
    Case 1
      DeleteFile("c:\abc\Testing.txt")
  EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow
EndIf
Ich empfehle Dir : http://www.rsbasic.de/winapi-library/
oder zur Integration in die PB-IDE auf dieser Seite nach WinApi Library suchen ;)

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 17:01
von NicTheQuick
Unter Linux nennt sich das Ordnerüberswachsungssystem inotify. Ich glaube aber ab Ubuntu 13.10 gibt es ein anderes System, aber vermutlich ist das trotzdem noch abwärtskompatibel.

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 17:10
von Tommy
Was ist Linux?
@Bisonte
:allright:

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 17:29
von NicTheQuick
Tommy hat geschrieben:Was ist Linux?
Ich nehme an das war ironisch gemeint. Deswegen gebe ich dir hier jetzt auch keine Antwort dazu.

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 17:48
von ts-soft
Tommy hat geschrieben:Was ist Linux?
Das am meisten verbreitete OS weltweit. Findest Du überall, vom Smartphone über Router, Uhr oder Waschmaschine.
Die meisten Server im Internet nutzen Linux, sogar alle SmartTV und selbst MacOS nutzt Linux.

Wer Linux nicht kennt, hat irgendwas verpennt :mrgreen:

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 20:27
von Danilo
ts-soft hat geschrieben:und selbst MacOS nutzt Linux.
Wo hast Du denn das her?

Mac OS basiert auf Unix, hat aber mit Linux nichts zu tun.
Linux ist ein Kernel von Linus Torvalds, und zusammen mit den
GNU Tools ergibt es das Betriebssystem GNU Linux.

Mac OS basiert auf Darwin:
Darwin ist ein freies Unix-Betriebssystem des Unternehmens Apple und bildet die Grundlage für Mac OS X. Darwin beinhaltet keine Grafische Benutzeroberfläche.
Der Kernel von Darwin ist Mach:
Mach ist ein Betriebssystemkern, der 1985–1994 im Rahmen eines Projekts an der Carnegie Mellon University entwickelt wurde, und gehört zur Klasse der Mikrokernel.
Mach-Betriebssystemkern und das minimale, Unix-basierte Darwin sind der Unterbau von Mac OS X.

Über diesen Unterbau kommen dann zahlreiche andere APIs und Frameworks (Carbon, Cocoa, Quartz, AppleScript, QuickTime, ...),
sowie Grundprogramme (Finder, TextEdit, Mail, Safari, Kalender, Festplattendienstprogramm, uvm.) - die alle zusammen dann Mac OS X ergeben.

Bild


Für UNIX, siehe: UNIX.org -> What is UNIX -> History and Timeline
2007 Apple Mac OS X certified to UNIX 03.
[...]
2010 UNIX on the Desktop - Apple reports 50 million desktops and growing -- these are Certified UNIX systems.
Siehe auch What about all those "Flavors"?
What about Linux®?

Developed by Linus Torvalds, Linux is a product that mimics the form and function of a UNIX system, but is not derived from licensed source code. Rather, it was developed independently; by a group of developers in an informal alliance on the net. A major benefit is that the source code is freely available (under the GNU copyleft), enabling the technically astute to alter and amend the system; it also means that there are many, freely available, utilities and specialist drivers available on the net. Linux is a registered trademark of Linus Torvalds.

Recent versions of Glibc include much functionality from the Single UNIX Specification, Version 2 (for UNIX 98) and later.
Mac OS ist also etwas ganz anderes als Linux, nur das beide im minimalen Grundsystem der UNIX Spezifikation folgen,
also auf unterster Ebene UNIX-API kompatibel sind.


Weiterhin könnte der Zusammenhang von Mac OS X mit dem Betriebssystem NeXTStep interessieren:
NeXTStep [nɛkstˈstɛp] ist ein Betriebssystem des Unternehmens NeXT, das ab 1989 eines der technisch fortschrittlichsten und bedienungsfreundlichsten war. Es basiert auf dem Unix-ähnlichen Betriebssystem BSD in Version 4.3 und einem Mach-2.5-Kernel.

Das Unternehmen NeXT wurde von Steve Jobs, einem der Gründer von Apple Computer, aufgebaut. NeXT verkaufte seine auf Motorola 680x0-Prozessoren basierenden Computer vor allem im wissenschaftlichen, aber auch im Bankbereich, wo dank der exzellenten Entwicklertools schnell komplexe Applikationen gebaut werden konnten.

NeXTStep wurde schließlich zusammen mit dem Unternehmen NeXT an Apple verkauft, das auf dessen Basis die Betriebssysteme Mac OS X und iOS entwickelte.

Re: Auf Ordneränderung prüfen

Verfasst: 23.10.2013 21:49
von Andesdaf
Tommy hat geschrieben:Da muss ich aber von jeder Datei den Namen und die Größe zwischenspeichern um vergleichen zu können.
Das Datum hätte schon gereicht. :wink: