Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ist pfad ein dateipfad oder ordnerpfad? (https://www.delphipraxis.net/91266-ist-pfad-ein-dateipfad-oder-ordnerpfad.html)

ghost007 2. Mai 2007 15:17


Ist pfad ein dateipfad oder ordnerpfad?
 
Hallo,
habe folgendes problem.
Ich hab 2 pfad als string vorliegen
#1:'C:/programme'
#2:'C:/programme/example.exe'

gibt es eine möglichkeit zu erkennen ob der pfad ein pfad zu einer datei ist, oder ein pfad zu einem ordner?
mit extractfilename gehts nicht, liefert mir bei #1 "programme", bei #2 "example.exe"

MfG - Ghost007

Die Muhkuh 2. Mai 2007 15:18

Re: Ist pfad ein dateipfad oder ordnerpfad?
 
Hi,

bei Windows ist ein Ordner und eine Datei im Endeffekt "das gleiche", nur besitzt ein Ordner das Attribut "faDirectory". Überprüfe da drauf (mittels eines SearchRec zum Beispiel, geht aber bestimmt noch einfacher^^), dann weißt Du, ob Ordner oder nicht ;-)

Matze 2. Mai 2007 15:20

Re: Ist pfad ein dateipfad oder ordnerpfad?
 
Es geht sicher auch schöner, aber mit Delphi-Referenz durchsuchenExtractFileExt könnte es gehen.

Edit: @Robert (2. Beiträge tiefer): Stimmt, das geht doch nicht.

inherited 2. Mai 2007 15:20

Re: Ist pfad ein dateipfad oder ordnerpfad?
 
Eventuell mit
Delphi-Quellcode:
function IsDirectory(str: String): Boolean;
begin
  result:=true;
  if ChangeFileExt(str, '')<>str then
    result:=false;
end;
Aber da gibt es sicher schönere Methoden.
(Klappt nur, wenn die Datei auch eine Endung hat)

Robert Marquardt 2. Mai 2007 15:25

Re: Ist pfad ein dateipfad oder ordnerpfad?
 
Ein Ordner darf eine beliebige Extension haben.
Man rufe die JCL zu Hilfe:
Delphi-Quellcode:
function IsDirectory(const FileName: string): Boolean;
var
  R: DWORD;
begin
  R := GetFileAttributes(PChar(FileName));
  Result := (R <> DWORD(-1)) and ((R and FILE_ATTRIBUTE_DIRECTORY) <> 0);
end;

ghost007 2. Mai 2007 15:58

Re: Ist pfad ein dateipfad oder ordnerpfad?
 
danke für eure antworten, die lösung von robert funktioniert gut :)


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