AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei in Benutzung -> Sperren

Ein Thema von MCXSC · begonnen am 27. Jun 2009 · letzter Beitrag vom 17. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
MCXSC
(Gast)

n/a Beiträge
 
#1

Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 00:39
Hi,

jeder kennt es wahrscheinlich: Man versucht eine Datei zu löschen, und merkt (dank umfangreicher Dialogboxen), dass die Datei bereits aktuell in Benutzung ist und daher (temporär) "gesperrt" wurde.

Ich habe Google schon masakriert, aber die Dame ist heute wohl etwas zickig... Jemand hier eine Idee, wie man so etwas bewerkstelligen kann?

Hafe vun,
MCXSC
Miniaturansicht angehängter Grafiken
datei_in_benutzung_856.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 00:56
Öffne die Datei exklusiv.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 00:57
MSDN-Library durchsuchenCreateFile ... die Absätze über die Share Modes sind für Dich interessant. Ebenfalls interessant: MSDN-Library durchsuchenLockFile.

Luckie geht wohl auch niemals schlafen .
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#4

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 01:02
Zitat von Fridolin Walther:
MSDN-Library durchsuchenCreateFile ... die Absätze über die Share Modes sind für Dich interessant. Ebenfalls interessant: MSDN-Library durchsuchenLockFile.
Super danke! Wenigstens hab ich jetzt was, wonach ich suchen kann.

Zitat von Fridolin Walther:
Luckie geht wohl auch niemals schlafen .
Du doch scheinbar auch nicht.^^
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 01:04
Luckie hat Urlaub und das wird ausgenutzt, da wird die Nacht zum Tag.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#6

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 01:11
Zitat von Luckie:
Luckie hat Urlaub und das wird ausgenutzt, da wird die Nacht zum Tag.
Kenn ich irgendwo her...

Ich habe nun zwei Möglichkeiten gefunden: Einmal mit einem gewissen OpenFile und einmal mit LockFileEx/UnlockFileEx. Sollte man eines davon bevorzugen?

//Edit: Okay, habe mir nun mal etwas "zusammengebastelt":

Delphi-Quellcode:
//zum sperren
var
  lf_FileSize: Integer;
  lf_FileHandle: THandle;
begin
  lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  lf_FileSize:= GetFileSize(lf_FileHandle, nil);
  LockFile(lf_FileHandle, 0, 0, lf_FileSize, 0);
  CloseHandle(lf_FileHandle);
end

//zum entsperren
var
  lf_FileSize: Integer;
  lf_FileHandle: THandle;
begin
  lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  lf_FileSize:= GetFileSize(lf_FileHandle, nil);
  UnlockFile(lf_FileHandle, 0, 0, lf_FileSize, 0);
  CloseHandle(lf_FileHandle);
end;
Und dabei bekomme ich (zumindest bis zum sperren kommt er ) die Fehlermeldung "Systemfehler. Code: 6. Das Handle ist ungültig."
  Mit Zitat antworten Zitat
JanW

Registriert seit: 5. Jun 2009
8 Beiträge
 
Lazarus
 
#7

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 06:38
Also bei mir geht dein Code. Probier doch mal ne andere Datei zu sperren.
Hab zwar fpc/lazarus aber das runft ja auch nur die <winAPI auf

Gruß,
Jan
Jan
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#8

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 13:29
Zitat von JanW:
Also bei mir geht dein Code. Probier doch mal ne andere Datei zu sperren.
Hab zwar fpc/lazarus aber das runft ja auch nur die <winAPI auf
Ah, okay. War wohl etwas spät die Nacht (vergessen, vorher die Variable Datei zu "füllen"). ^^
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#9

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 14:33
Zitat von MCXSC:
Und dabei bekomme ich (zumindest bis zum sperren kommt er ) die Fehlermeldung "Systemfehler. Code: 6. Das Handle ist ungültig."
Vielleicht solltest du es dir nochmal genau durchlesen?
MSDN-Library durchsuchenLockFile

Damit kann man nur, wärend die Datei geöffnet ist, einen "Teil" oder Alles einer Datei sperren.

Delphi-Quellcode:
var
  lf_FileSize: Integer;
  lf_FileHandle: THandle;
begin
  lf_FileHandle := CreateFile(PChar(Datei), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  lf_FileSize:= GetFileSize(lf_FileHandle, nil);
  LockFile(lf_FileHandle, 0, 0, lf_FileSize, 0);
  ...
  UnlockFile(lf_FileHandle, 0, 0, lf_FileSize, 0);
  CloseHandle(lf_FileHandle);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
MCXSC
(Gast)

n/a Beiträge
 
#10

Re: Datei in Benutzung -> Sperren

  Alt 27. Jun 2009, 14:43
Zitat von himitsu:
Damit kann man nur, wärend die Datei geöffnet ist, einen "Teil" oder Alles einer Datei sperren.
Habe doch schon geschrieben, dass es klappt. Die Variable "Datei" war bei mir nur leer, was zu dem Fehler geführt hat...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.
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