Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Windows API Funktion um Befehlsziel zu ermitteln? (https://www.delphipraxis.net/70253-windows-api-funktion-um-befehlsziel-zu-ermitteln.html)

Experience1986 28. Mai 2006 14:51

Re: Windows API Funktion um Befehlsziel zu ermitteln?
 
Ich hab nun eine selbst geschriebene Lösung. Das Ergebnis könnt ihr unter der folgenden Adresse bewundern:

http://www.delphi-forum.de/viewtopic...=363272#363272

SirThornberry 28. Mai 2006 15:40

Re: Windows API Funktion um Befehlsziel zu ermitteln?
 
folgendes würde ich abwandeln von:
Delphi-Quellcode:
// Prüft ob ein Verzeichnis ODER eine Datei existiert    
function FileOrDirExists(Filename:TFilename):Boolean;
begin    
  Result:=(DirectoryExists(Filename) or Fileexists(Filename));
end;
nach
Delphi-Quellcode:
function FileOrDirExists(Filename:TFilename):Boolean;
var lSearchRec: TSearchRec;
begin
  if FindFirst(AFilename, faAnyFile, lSearchRec) = 0 then
  begin
    FindClose(lSearchRec);
    result := True;
  end
  else
    result := False;
end;
Grund: FileExists und DirectoryExists machen nichts anderes + das Prüfen ob es ein Verzeichnis oder eine Datei ist. Du rufst sozusagen 2 mal das gleiche auf.

Experience1986 28. Mai 2006 15:44

Re: Windows API Funktion um Befehlsziel zu ermitteln?
 
Bist du dir sicher das genau das hinter FileExists/DirectoryExists steckt bzw. könnte etwas unerwartetes auftauchen oder etwas nicht mehr kompatibel sein, wenn ich deinen Code einsetze?

SirThornberry 28. Mai 2006 16:00

Re: Windows API Funktion um Befehlsziel zu ermitteln?
 
DirectoryExists macht intern ein: GetFileAttributes
und FileExists macht intern ein: FileAge welches wiederum ein FindFirstFile macht.
Letztendlich kannst du dich als für eine der beiden Varianten entscheiden. Also ob du Generell mit GetFileAttributes oder mit FindFirstFile arbeiten willst.

GetFileAttributes gibt dir im Fehlerfall DWORD(-1) zurück.
Du kannst eigentlich auch auf folgende Weise überprüfen ob eine Datei oder ein Verzeichnis existiert:
Delphi-Quellcode:
result := GetFileAttributes(PChar(AFileName)) <> DWORD(-1);
oder du prüfst eben mit FindFirstFile ob ein bestimmter Verzeichniseintrag vorhanden (wobei du das FindFirstFile-Handle mit FindClose wieder schließen musst)

DP-Maintenance 28. Mai 2006 16:07

DP-Maintenance
 
Dieses Thema wurde von "Daniel" von "Windows 9x / ME / 2000 / XP / 2003" nach "Windows API / MS.NET Framework API" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.
Seite 2 von 2     12   

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