Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie arbeitet FileExists intern? (https://www.delphipraxis.net/100264-wie-arbeitet-fileexists-intern.html)

richard_boderich 25. Sep 2007 14:01


Wie arbeitet FileExists intern?
 
Hallo

Ich habe ein Problem mit der FileExists Funktion. Kann mir eventuell jemand sagen, wie diese Funktion intern arbeitet bzw. welche Api's dazu benutzt werden?
Danke schonmal im vorraus.

Gruß Richard

s-off 25. Sep 2007 14:07

Re: Wie arbeitet FileExists intern?
 
Hallo,

die Funktion versucht einfach, mittels der Funktion 'GetFileAttributes' die Dateiattribute der im Paramteter übergebenen Datei abzufragen. Je nach Rückgabewert ist das Ergebnis von FileExists True oder False.

DeddyH 25. Sep 2007 14:08

Re: Wie arbeitet FileExists intern?
 
Delphi 5:
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;

s-off 25. Sep 2007 14:11

Re: Wie arbeitet FileExists intern?
 
Hui, wie sich das doch ändern kann :?
Meine Version bezieht sich auf D2006.

RavenIV 25. Sep 2007 14:29

Re: Wie arbeitet FileExists intern?
 
Wie die Funktion intern abläuft, ist ja eigenzlich egal.
Hauptsache, das Ergebnis ist gleich.

Bei Delphi 2007 sieht's so aus:
Delphi-Quellcode:
function FileExists(const FileName: string): Boolean;
var
  Code: Integer;
begin
  Code := GetFileAttributes(PChar(FileName));
  Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code = 0);
end;

s-off 25. Sep 2007 14:33

Re: Wie arbeitet FileExists intern?
 
Zitat:

Zitat von RavenIV
Wie die Funktion intern abläuft, ist ja eigenzlich egal.

Aber das war es ja, was er wissen wollte; wie es intern abläuft :wink:
Und da macht es dann ja schon Sinn, Unterschiede zwischen den einzelnen Versionen aufzuzeigen.

RavenIV 25. Sep 2007 14:37

Re: Wie arbeitet FileExists intern?
 
Übrigens ist es bei Delphi7 noch genauso wie bei Delphi 5.

generic 25. Sep 2007 15:02

Re: Wie arbeitet FileExists intern?
 
hat das problem mit entpackten dateien zu tun?
ich habe folgendes problem festgestellt:
archive mit 7-zip erstellt im zip format
archiv mit rar entpackt

die entpackten verzeichnisse und dateien konnten nicht mit fileexists gefunden werden.

richard_boderich 25. Sep 2007 15:08

Re: Wie arbeitet FileExists intern?
 
Hi

Ich habe das Problem, das FileExists immer das selbe Ergebnis liefert, egal ob die Datei nun vorhanden ist oder nicht.

Gruß Richard

RavenIV 25. Sep 2007 15:17

Re: Wie arbeitet FileExists intern?
 
Zitat:

Zitat von richard_boderich
Ich habe das Problem, das FileExists immer das selbe Ergebnis liefert, egal ob die Datei nun vorhanden ist oder nicht.

Kann es sein, dass der Pfad zur Datei nicht stimmt?
Und dass deshalb immer False geliefert wird?

Zeig doch mal ein Stückchen Code...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Seite 1 von 3  1 23      

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 by Thomas Breitkreuz