Dropbox : Nutzung einer Datei erkennen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Dropbox : Nutzung einer Datei erkennen

Beitrag von Bisonte »

Hallo.

Man kennt es vielleicht... Eine Datei ist in der Dropbox (oder anderen Cloud) mit mehreren Freigaben.
User 1 bearbeitet diese Datei und hat die Datei noch "offen". Dann kommt User 2 auf die Idee etwas an dieser
Datei ändern zu wollen, und speichert ab.

Problem : Es befindet sich dann (zumindest bei Dropbox) eine neue Datei mit dem Anhang im Dateinamen (In Konflikt stehende Version....)
im Ordner und die Originale Datei bleibt natürlich in dem Zustand den User 1 hat.

Wie kann man es anstellen, das man per PB erkennt, ob sich eine Datei gerade in Bearbeitung befindet, damit diese "neue" Datei nicht entsteht... ?
z.B. das man dem User mitteilen kann, "Achtung, diese Datei wird gerade benutzt!"

Es spielt sich dabei alles auf Windows ab.
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von RSBasic »

Du kannst OpenFile() benutzen. Wenn du kein #PB_File_SharedRead bzw. #PB_File_SharedWrite benutzt, sollte das Öffnen fehlschlagen.
Ansonsten hilft auch ein RenameFile(). Du musst nicht die Datei umbenennen und zurück umbenennen, sondern du kannst den gleichen Quell- und Zielnamen verwenden.
Test bei mir:

Code: Alles auswählen

If RenameFile("D:\VMs\VirtualBox VMs\Windows XP - VB6\2HDD.vdi", "D:\VMs\VirtualBox VMs\Windows XP - VB6\2HDD.vdi")
  Debug "Nicht gesperrt"
Else
  Debug "Gesperrt"
EndIf
Ich bekomme 1 zurück, wenn die Datei nicht gesperrt ist. Ansonsten wenn die VM läuft, dann kriege ich 0 zurück.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von Andesdaf »

Das funktioniert doch aber nur, weil es sich um die selbe Datei handelt?

Normalerweise hat in der Dropbox jeder seine eigene lokale Kopie der Datei auf dem
Dropbox-Server, die nach jeder Änderung hochgeladen wird.
Win11 x64 | PB 6.00 (x64)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von Nino »

Andesdaf hat geschrieben:Das funktioniert doch aber nur, weil es sich um die selbe Datei handelt?
Ja.

Das was Bisonte will geht, glaube ich, wenn überhaupt nur mit Hilfe des Dropbox-API.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von Bisonte »

Nino hat geschrieben:Das was Bisonte will geht, glaube ich, wenn überhaupt nur mit Hilfe des Dropbox-API.
Das ist ein Stichwort ! Danke. Allerdings hab ich selten so eine unübersichtliche Dokumentation wie zu dieser API gesehen >_<

Aber da werd ich mal stöbern gehen.

Edit:
Nach kurzer Recherche gehören die benötigten API Aufrufe zum Business Paket, also ist die Geschichte abgehakt :(
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von Nino »

Unter https://thoschworks.de/blog/archiv/2012/02/05/975 sind recht ausführliche Informationen zum Problem der "in Konflikt stehende Kopie“ bei Dropbox zu finden.
Eine Lösung ist dort allerdings leider auch nicht bekannt - außer Google Docs statt Dropbox zu benutzen.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: Dropbox : Nutzung einer Datei erkennen

Beitrag von Bisonte »

Das mit Google Docs fällt aus, wegen unmöglicher Verschlüsselung...
Ich hab mich für ein Server-Client System in PB entschieden.

Wird also ein etwas grösseres Projektchen jetzt :mrgreen:
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Antworten