Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei löschen trotz Schreibzugriffverbot (https://www.delphipraxis.net/30300-datei-loeschen-trotz-schreibzugriffverbot.html)

Armageddon 23. Sep 2004 08:45


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:
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;
1000 Dank im Voraus

Vjay 23. Sep 2004 09:05

Re: Datei löschen trotz Schreibzugriffverbot
 
Entweder alle Programme öffnen die Datei geshared, oder du wirst keine Möglichkeit haben.

Armageddon 23. Sep 2004 09:14

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?

Luckie 23. Sep 2004 09:25

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 www.sysinternals.com nach dem File-Monitor.

himitsu 23. Sep 2004 09:56

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.

Armageddon 23. Sep 2004 10:20

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:

himitsu 23. Sep 2004 10:57

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.

Armageddon 23. Sep 2004 12:08

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:

Chewie 23. Sep 2004 12:32

Re: Datei löschen trotz Schreibzugriffverbot
 
Kuck dir doch mal den Link von Luckie an :roll:

Armageddon 23. Sep 2004 13:11

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 18:34 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz