![]() |
Datei löschen trotz Schreibzugriffverbot
Hi,
ich wüßte gerne ob es eine Möglichkeit gibt den Inhalt eines txt-Files zu ändern auch wenn ich dieses File z.B. in Word aufhabe und mir Word den Zugriff auf diese Datei verweigert. Wenn ja wie mach ich das? Möchte eine Datei die ich für die Übergabe von Daten benutzen muß im Temp-Verzeichnis von Windows ändern. Und zwar zwingend, auch wenn eine andere Anwendung wie Word diese sperrt. Bis jetzt habe ich nur ne Notlösung damit es wenigstens mal so geht:
Delphi-Quellcode:
1000 Dank im Voraus
function GetTempFolder: AnsiString;
var Buf: array[0..MAX_PATH] of AnsiChar; begin GetTempPath(SizeOf(Buf), @Buf); Result := Buf; if Result <> '' then if AnsiLastChar(Result)^ <> '\' then Result := Result + '\'; end; procedure Speichern(Text: String); var Datei: Integer; Buffer: PChar; F: String; begin F := GetTempFolder + 'paddydat'; Datei := FileCreate(F, fmCreate); if Datei > 0 then begin Buffer := PChar(Text); FileSeek(Datei, 0, 0); FileWrite(Datei, Buffer^, Length(Text)); FileClose(Datei); end else Application.MessageBox('Datei kann nicht erstellt werden!' + #13 + #13 + 'Eine andere Anwendung hat die Datei geöffnet' + #13 + 'und blockiert den Schreibzugriff!' + #13 + #13 + 'Schliessen Sie die Anwendung welche die Datei' + #13 + 'geöffnet hat und versuchen Sie es erneut!', 'Problem',48); end; |
Re: Datei löschen trotz Schreibzugriffverbot
Entweder alle Programme öffnen die Datei geshared, oder du wirst keine Möglichkeit haben.
|
Re: Datei löschen trotz Schreibzugriffverbot
Schade, dachte da gibts vielleicht noch ein Hintertürchen. :-( Gibt es aber dann wenigstens die Möglichkeit herauszufinden welches Programm diese Datei geöffnet hat, damit man dem Benutzer sagen kann er soll doch bitte schön erst mal die geöffnete Datei schliessen bevor es weiter geht?
|
Re: Datei löschen trotz Schreibzugriffverbot
Wenn es da ein Hintertürchen geben würde, dann wäre ja der exklusive Zugriff auf eine Datei für den Popo. :roll:
Kuck mal auf ![]() |
Re: Datei löschen trotz Schreibzugriffverbot
Na ja, es gibt aber auch Hintertürchen.
Es gibt irgendwie 'ne Möglichkeit aktive Verbindungen zu Dateien/Laufwerken zu trennen, aber wozu will man das -.- Es sollte doch einfacher sein, dir die alleinigen Rechte zu besorgen, entwerder mit Hilfe der NT-Rechte den Zugriff durch andere Programme verhinden, welche die Datei so ungewünscht öffnen, oder einfach die Datei selber geöffnte halten, so dass keine fremdes Programm die Datei aufmacht. Oder ganz einfach ... Datei kopieren und dann die Kopie mir ord und Co. laden. |
Re: Datei löschen trotz Schreibzugriffverbot
Das Problem ist das ich an ein anderes Programm etwas übergeben will und der Programmierer eben nur diesen Weg gewählt hat. Ändern wird er es nicht weil er sonst etliche Versionen des Programmes neu erausgeben müßte. Viel zu viel Arbeit also. Der Ablauf bei dem Übergeben sieht folgendermassen aus:
Hauptprogramm ist der NC-Editor von dem Programm NC-FOX aus diesem rufe ich ein Makro auf in dem angegeben ist mein Tool zu starten. Mein Tool schreibt dann beim Beenden Text in die "paddydat" im Temp Verzeichniss. Der NC-Editor wartet bis mein Tool wieder beendet ist. Wenn dies geschieht fügt der NC-Editor den Text der eben in diese "paddydat" ist ein. Wenn ich aber jetzt die "paddydat" mit z.B. Word auf habe kann ich ja nicht in die Datei schreiben, d.h. beim beenden von meinem Tool schreibt der NC-Editor den aktuellen Text der "paddydat" in das NC-Editorfenster. Wenn ich in meinem Tool auf "Abbrechen" klicke soll aber der Text der in der "paddydat" enthalten ist gleich Null, nix, nullkommanull sein. Wenn Zugriff aber verweigert dann is dat aber schlecht. :-( Himitsu, Du hast geschrieben das man vielleicht die Verbindung zu der Datei trennen kann. Wenn das nun möglich wäre käme sicher im Word dann eine Fehlermeldung. Oder? Aber im Grunde ist das egal da der Anwender mit der Datei sowieso nix am Hut hat und darin nix zu machen hat. Man kann ja vorher noch eine Warnmeldung ausgeben bevor getrennt wird. ;-) Wenn das trennen geht dann wüßte ich gerne wie :roll: |
Re: Datei löschen trotz Schreibzugriffverbot
Leider weiß ich auch nur dass es möglich ist, aber nicht wie :cry:
Irgendwoher muß ja Windows wissen, welche Dateien geöffnet sind ... also denk ich mal, man müßte halt nur die entsprechende Datei aus dieser Liste entfernen :gruebel: Ich selber suche auch schon sowas, da bei mir abundzu mal der Explorer großere Dateien blockiert (je größer, desto schlimmer wird das ... z.B. bei Dateien mit über 2 GB's) FORMAT kann z.B. die Bereitstellung eines gesamten Laufwerks und dammit aller Dateien auf diesem aufheben, das sollte bestimmt auch für einzelne Dateien möglich sein. |
Re: Datei löschen trotz Schreibzugriffverbot
Tja jetzt ist guter Rat teuer. Wer könnte sich den damit auskennen oder nach welchen Begriffen kann man da am besten Googeln? Im Kopf hätt ich es schon nur das umsetzen macht mir ein bisserl Probleme. :pale:
|
Re: Datei löschen trotz Schreibzugriffverbot
Kuck dir doch mal den Link von Luckie an :roll:
|
Re: Datei löschen trotz Schreibzugriffverbot
Den Link hab ich schon angeguckt. Da ich aber noch voll in den Kinderschuhen stecke mit dem Programmieren kann ich damit nicht wriklich viel anfangen :gruebel:
Wie man es machen könnte im groben und ganzen, daß man die Dateiverbindung löscht leuchtet mir ja ein. Sprich ich weiß was ich gern erreichen möchte scheitere jedoch am umsetzen in Code da ich wenig Erfahrung habe! Weischt was ich mein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz