Ist Datei geöffnet? [Erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Ist Datei geöffnet? [Erledigt]

Beitrag von Jan »

Kann man einfach feststellen, ob eine Datei gerade durch irgendein anderes Programm geöffnet ist?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Tom »

Meinst Du Tabellen? Das geht sehr simpel (und ginge auch noch eleganter):

Code: Alles auswählen

FUNCTION CheckIsInUse(cTable)
USE (cTable) EXCLUSIVE NEW
IF NetErr()
  RETURN .T.
ENDIF
CLOSE
RETURN .F.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Jan »

Hallo Tom,

neenee, nicht so einfach, bitte :D . Es geht mir nicht um eine Datenbank, sondern um irgendwelche anderen Dateien. Also pdf, Text, oder sonstwas.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Martin Altmann »

Einfach löschen - wenn es klappt, war sie nicht geöffnet :whistle:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Bertram Hansen »

:lol: Aber vorher bitte eine Kopie anlegen!

Spaß beiseite, wie wäre es mit FOPEN(cFile, FO_EXCLUSIVE) ?
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Tom »

Eine Applikation, die die Datei tatsächlich öffnet - und nicht etwa nur eine lokale Kopie davon, wie z.B. Acrobat - sollte das Dateiattribut "Read Only" setzen, das man m.E. über die Tools-Funktion FileAttr() (FA_READONLY) abfragen kann. Aber. Viele Apps tun das nicht - aus gutem Grund, denn ein Absturz der Workstation, die das gemacht hat, würde das Öffnen dieser Datei auf ewig verhindern. Word zum Beispiel murkst mit einem Flag-File herum, das dem Dateinamen entspricht, aber als erste zwei Zeichen Tilde-Dollar enthält (diese Datei wird "hidden" angelegt). Ähnliches macht Excel. Verlässlich ist nichts davon. Insofern hat Martins Idee durchaus etwas für sich: Wenn es gelingt, die Datei zu löschen oder zu überschreiben, war sie möglicherweise nicht geöffnet. Allerdings sollte man bei dieser Methode dafür sorgen, dass das Original stantepede wieder entsteht. :wink:
Herzlich,
Tom
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Ist Datei geöffnet?

Beitrag von AUGE_OHR »

Jan hat geschrieben:Kann man einfach feststellen, ob eine Datei gerade durch irgendein anderes Programm geöffnet ist?
Computerverwaltung -> geöffnete Dateien ... aber du willst es sicherlich aus deiner Xbase++ Application ( Setup ? ) machen ;)

Ich müsste mal bei WMI nachsehen welche der Functionen das machen könnte ... wenn du einen Tip hast könnte ich den "Source" dazu schnell "generieren"
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Ist Datei geöffnet?

Beitrag von Jan »

Hallo,

die Idee mit FOpen() werde ich mal versuchen. Hört sich gut an.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Ist Datei geöffnet? [Erledigt]

Beitrag von Markus Walter »

Hallo Jan,

fopen im exclusiv-Modus ist sicher ein guter Ansatz, aber...
das Gelingen hängt aus meiner Sicht auch immer von den "Zugriffs-Konkurenten" ab und von der konkreten Situation. Nicht alle Programme halten eine Datei physikalisch geöffnet während sie die "Datei bearbeiten".

Nehmen wir mal folgenden Beispiel-Code eines Fremdprogrammes:

Code: Alles auswählen

cText := memoread("test.txt")

... hier ein längerer Vorgang, der den Dateiinhalt ändert

memowrit("test.txt", cText
Hier wäre zwischen dem Lesen und Schreiben die Datei nicht geöffnet, also würde in diesem Zeitfenster eine Überprüfung mit fopen-exclusiv gelingen, allerdings würde später ggf. das Konkurrenz-Programm abstürzen, hängen oder was auch immer (wenn Du die Datei dann noch geöffnet hast) oder Deine Änderungen überschreiben (wenn Du die Datei wieder geschlossen hast...
Aber eine Lösung für solche Fälle ist schwierig bis unmöglich.
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Ist Datei geöffnet? [Erledigt]

Beitrag von Jan »

Hallo Markus,

so wie Tom es zu einfach gesehen hat, so siehst Du das (zum Glück) zu kompliziert. In meinem Fall geht es darum, das ich eine pdf erstelle, und dabei das gesamte Programm sich ins Nirwana verabschiedet, wenn diese pdf gerade geöffnet ist. Ich muß also einfach nur über den Ansatz von Bertram ein exklusives Öffnen versuchen. In meinem Fall reicht das schon aus.

Abgesehen davon denke ich mal, das es eher ungewöhnlich ist, eine Datei während des lesens nicht geöffnet zu halten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Ist Datei geöffnet? [Erledigt]

Beitrag von Markus Walter »

Jan hat geschrieben:Hallo Markus,

so wie Tom es zu einfach gesehen hat, so siehst Du das (zum Glück) zu kompliziert.
Ich bin dafür bekannt, vieles zu kompliziert zu sehen... :wink:
Jan hat geschrieben: Abgesehen davon denke ich mal, das es eher ungewöhnlich ist, eine Datei während des lesens nicht geöffnet zu halten.
Jan
Optimist, versuch doch mal z. B. Windows-Notepad...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
Antworten