Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Dateizugriff verweigert" (https://www.delphipraxis.net/16972-dateizugriff-verweigert.html)

Uncle Cracker 26. Feb 2004 14:18


"Dateizugriff verweigert"
 
Ich möchte die Dateigröße einer Datei auf der CD überprüfen, wenn ich das mache kommt die Meldung: "Dateizugriff verweigert". Das liegt daran, dass die Datei Schreibgeschüzt ist.

Wie kann ich aber trotzdem die Datei prüfen? Man kann ja nicht einfach die Attribute ändern, da es ja auf CD ist, oder doch?


Vielleicht hatte jemand schonmal das gleiche Problem und kann mir helfen.



:love: Danke UC

sakura 26. Feb 2004 14:19

Re: "Dateizugriff verweigert"
 
Öffne die Datei im "Read-Only" Modus. Zeige Deinen Code, und wir sagen Dir, wie Du den anpassen kannst ;-)

...:cat:...

Matze 26. Feb 2004 14:20

Re: "Dateizugriff verweigert"
 
Nein, ändern kannst du die Attribute nicht.

Du könntest jedoch die datei in eine Stringlist laden und dort was checken, oder einfach temporär irgendwo auf deiner Festplatte speichern, Attribute auslesen, und wieder löschen.

So würde ich es machen, es kommen hier bestimmt gleich Posts, die mich alt aussehen lassen. :duck:

Uncle Cracker 26. Feb 2004 14:51

Re: "Dateizugriff verweigert"
 
Ich benutzte diesen Code zum simplen überprüfen auf UPX (keine gute Variante, aber sie funktionert :zwinker: )

Delphi-Quellcode:
function IsUPXPacked(const FileName: TFileName): Boolean;
var
  l: Longint;
  sUPX: string;
  f: file;
begin
  Result := False;
  sUPX := 'UPX';
  AssignFile(f, FileName);
  Reset(f, 1);
 if FileSize(f) >= 600 then
 begin
  for l := 0 to 600 do
  begin
    Seek(f, l);
    BlockRead(f, sUPX[1], Length(sUPX));
    if sUPX = 'UPX' then
    begin
      Result := True;
      Break;
    end;
  end;
  CloseFile(f);
 end;
end;

Doch diese Funtkion macht Probleme beim auslesen auf CDs :(

Luckie 26. Feb 2004 14:54

Re: "Dateizugriff verweigert"
 
Kuck dir mal in der Hilfe FileMode an.

Uncle Cracker 26. Feb 2004 15:14

Re: "Dateizugriff verweigert"
 
Geht leider immer noch nicht. Es kommt immer noch die Meldung an der Stelle "if FileSize(f) >= 600", obwohl ich den Parameter bei Reset auf Null gesetzt habe.

sakura 26. Feb 2004 15:17

Re: "Dateizugriff verweigert"
 
Aus der Delphi Hilfe. :warn: Diese Lösung ist nicht thread-safe!

Code:
unction FileIsThere(FileName: string): Boolean;

{ Boolean function that returns True if the file exists; otherwise,
  it returns False. Closes the file if it exists. }
 var
  F: file;
begin
  {$I-}
  [color=#e30000]AssignFile(F, FileName);
  [b]FileMode := 0; {Set file access to read only }[/b]
  Reset(F);[/color]
  CloseFile(F);
  {$I+}
  FileIsThere := (IOResult = 0) and (FileName <> '');
end; { FileIsThere }
...:cat:...

Uncle Cracker 26. Feb 2004 15:21

Re: "Dateizugriff verweigert"
 
:love: Danke, jetzt geht's.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 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