Auf Ordneränderung prüfen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Auf Ordneränderung prüfen

Beitrag 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?
Zuletzt geändert von Tommy am 27.01.2015 11:36, insgesamt 2-mal geändert.
PB 5.41 x64
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: Auf Ordneränderung prüfen

Beitrag 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 ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Auf Ordneränderung prüfen

Beitrag 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.
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: Auf Ordneränderung prüfen

Beitrag von Tommy »

Was ist Linux?
@Bisonte
:allright:
Zuletzt geändert von Tommy am 27.01.2015 11:36, insgesamt 2-mal geändert.
PB 5.41 x64
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Auf Ordneränderung prüfen

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Auf Ordneränderung prüfen

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: Auf Ordneränderung prüfen

Beitrag 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.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Auf Ordneränderung prüfen

Beitrag 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:
Win11 x64 | PB 6.20
Antworten