![]() |
Datei in Benutzung
Hi
Ich weis das Thema wurde oft genug behandelt nd hab hier im Forum auc schon geguckt. Hab aber immer nur sachen gefunden, wie man abfragt ob eine Datei in Benutzung ist. Ich wollte meiner LadeProcedure irgenwie klarmachen, das sie die Datei als "In Benutzung" kennzeinen soll. Was gibt es da so hab das hier um meine Datei ins Grid zu Laden beim Speichern soll das Flag wieder zurückgesetzt werden
Delphi-Quellcode:
Gruß sascha
procedure TForm7.GridLaden;
var x, y, row, col,len :Word; Grid :TFileName; FileStream :TMemoryStream; buff :string; begin FileStream:= TMemoryStream.Create; //MemoryStream erzeugen Grid:= FileListbox1.FileName; FileStream.LoadFromFile(Grid); FileStream.Read(row, SizeOf(Word)); FileStream.Read(col, SizeOf(Word)); for x:= 0 to row do for y:= 0 to col do begin FileStream.Read(len, SizeOf(Word)); SetLength(buff, len); FileStream.Read(buff[1], len); StringGrid1.Cells[y,x]:= buff; end; FileStream.Free; end; |
Re: Datei in Benutzung
Hi,
Du willst, wenn jemand anders diese Datei auch öffnen will, dass er die Meldung bekommt "Datei ist in Benutzung"? |
Re: Datei in Benutzung
Genau kurzgesagt
|
Re: Datei in Benutzung
Nimm einen TFilestream anstatt den TMemoryStream und als Modus nimmst Du fmShareExclusive
|
Re: Datei in Benutzung
So hab es mal umgebaut aber ich kann es Trotzdem noch mit einer neuen Instanz meines Programmes ein Zweites mal Öffnen
Delphi-Quellcode:
procedure TForm7.GridLaden;
var x, y, row, col,len :Word; Grid :TFileName; FFileStream1: TFileStream; buff :string; begin FFileStream1 := TFileStream.Create(FileListbox1.FileName, fmOpenRead, fmShareExclusive); FFileStream1.Read(row, SizeOf(Word)); FFileStream1.Read(col, SizeOf(Word)); for x:= 0 to row do for y:= 0 to col do begin FFileStream1.Read(len, SizeOf(Word)); SetLength(buff, len); FFileStream1.Read(buff[1], len); StringGrid1.Cells[y,x]:= buff; end; FFileStream1.Free; end; |
Re: Datei in Benutzung
Delphi-Quellcode:
Was ist das o.O
FFileStream1 := TFileStream.Create(FileListbox1.FileName, fmOpenRead, fmShareExclusive);
Delphi-Quellcode:
FFileStream1 := TFileStream.Create(FileListbox1.FileName, fmOpenRead or fmShareExclusive);
|
Re: Datei in Benutzung
Nee geht immernoch selbst wenn ich es so schreibe
Delphi-Quellcode:
FFileStream1 := TFileStream.Create(FileListbox1.FileName,fmShareExclusive);
|
Re: Datei in Benutzung
Zitat:
|
Re: Datei in Benutzung
Könnte es sein, dass "fmShareExclusive" nur solange eine Wirkung hat, bis die Instanz von FileStream wieder freigegeben wird? :zwinker:
|
Re: Datei in Benutzung
Davon ist auszugehen, wäre ja blöde, wenn nicht :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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