AGB  ·  Datenschutz  ·  Impressum  







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

FileExists und 2003 Server

Ein Thema von ascotlx · begonnen am 5. Sep 2006 · letzter Beitrag vom 6. Sep 2006
Antwort Antwort
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#1

FileExists und 2003 Server

  Alt 5. Sep 2006, 13:31
Moin ...,

ich bin da gerade über eine Merkwürdigkeit gestolpert.
Ich bekomme eine gezippte Datei über das Internet, welche ich in ein beliebiges Verzeichnis kopiere.
Nun gehe ich über das File-Kontexmenue und sage "alle extrahieren...", worauf mir ein Verzeichnis mit
dem Namen des Zip-Archivs (ohne Suffix) erstellt wird und die entpackte Datei (es ist nur eine) dort
abgelegt wird. Nun kopiere ich die Datei ändere den Dateinamen und überprüfe die Existenz der Datei mittels
FileExists ... und siehe da die Datei ist nicht vorhanden (obwohl sie im Explorer zu sehen ist). Auch über die Commandline ist die Datei mittels dir sichtbar.
Weitere Versuche die Datei, via FileExists, sichtbar zu machen schlagen fehl (umkopieren bringt nichts, abfragen des UNC-Pfades/Datei bringt nichts, gemapptes Laufwerk/Datei bringt nichts).

Nun öffne ich die Datei und speichere sie nochmal ... und siehe da FileExists funktioniert wieder.
Auch wenn das Zip-Archiv per Doppelklick geöffnet wird und die Datei per Drag-Drop in ein Verzeichnis gezogen wird
funktioniert der FileExists ...

Woran macht der FileExists klar, dass die Datei existiert ?? Die einzige Möglichkeit die mir dazu
einfällt ist, dass der Extract von Windows 2003 Server bei dem "alle extrahieren" die I-Node (sorry, alter Unixer - wie sagt man bei NTFS5 ??) nicht schreibt .. weiss jemand, ob es einen Patch gibt ?

gruss
ascotlx

P.S.: ich benutze D7 Enterprise
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#2

Re: FileExists und 2003 Server

  Alt 5. Sep 2006, 16:39
ich habe eine solche Merkwürdigkeit in Verbindung mit WinRar erlebt.
Wenn Zipdateien (bei mir mit 7-Zip erstellt) mit WinRar entpackt werden gibt es diese Probleme.
http://www.daddel-mania.de/faq.shtml

Nutzt du WinRAR zum entpacken?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: FileExists und 2003 Server

  Alt 5. Sep 2006, 17:20
FileExists verwendet intern FileAge!
Wenn deine Datei also kein "gescheites" Datum hat, existiert sie für die VCL nicht.
Interessant, was da manchmal so entdeckt wird.
Delphi-Quellcode:
function FileAge(const FileName: string): Integer;
var
  Handle: THandle;
  FindData: TWin32FindData;
  LocalFileTime: TFileTime;
begin
  Handle := FindFirstFile(PChar(FileName), FindData);
  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(Handle);
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    begin
      FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
      if FileTimeToDosDateTime(LocalFileTime, LongRec(Result).Hi,
        LongRec(Result).Lo) then Exit;
    end;
  end;
  Result := -1;
end;

function FileExists(const FileName: string): Boolean;
begin
  Result := FileAge(FileName) <> -1;
end;
PS: so klappt auch mit dem Nachbarn:
Delphi-Quellcode:
function FileExists(const FileName: string): Boolean;
var
  Attr: Cardinal;
begin
  Attr := GetFileAttributes(Pointer(Filename));
  Result := (Attr <> $FFFFFFFF) and (Attr and FILE_ATTRIBUTE_DIRECTORY = 0);
end;
Andreas
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: FileExists und 2003 Server

  Alt 5. Sep 2006, 18:29
Zitat von shmia:
PS: so klappt auch mit dem Nachbarn:
Delphi-Quellcode:
function FileExists(const FileName: string): Boolean;
var
  Attr: Cardinal;
begin
  Attr := GetFileAttributes(Pointer(Filename));
  Result := (Attr <> $FFFFFFFF) and (Attr and FILE_ATTRIBUTE_DIRECTORY = 0);
end;
Und das ist auch noch um einiges schneller als die Delphi 1-2005 Implementierung von FileExists. (BDS 2006 nutzt auch GetFileAttributes).
  Mit Zitat antworten Zitat
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#5

Re: FileExists und 2003 Server

  Alt 6. Sep 2006, 10:42
moin Andreas, moin
super .. danke für die Antwort. Es stimmt, es ist mir absolut nicht
aufgefallen, dass die Datei überhaupt keinen Zeitstempel besitzt.
Kein Erstellungsdatum .. nix, außer die Datei wird per Drag&Drop
aus dem Archiv gezogen.

Besten Dank...
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:00 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