AGB  ·  Datenschutz  ·  Impressum  







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

prüfen, ob es ein Ordner ist

Ein Thema von Gina · begonnen am 26. Dez 2004 · letzter Beitrag vom 27. Dez 2004
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Gina
Gina

Registriert seit: 23. Dez 2004
Ort: Berlin
161 Beiträge
 
Delphi 6 Professional
 
#1

prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:36
Hallo,

ich weiß, dass diese Frage in ähnlicher Form schon öfter gefallen ist. Trotzdem würde mich eins speziell interessieren:

Ich habe in einer Listbox verschiedene Pfade als Einträge drin. Manche sind Ordner und manche Dateien. Welches ist die schnellste und zugleich sicherste Methode zu prüfen, ob es sich bei dem Eintrag um einen Ordner handelt?

Vielen lieben Dank, Gina.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:38
Evtl. einfach die Dateiendung abfragen.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:42
Ne. Ich habe Verzeichnisse, die heißen 'starteam.install' o.ä.
Du solltest Dir über Delphi-Referenz durchsuchenFindFirst() die Attribute des jeweiligen Eintrages ermitteln lassen. Bei Verzeichnissen ist dann das Flag Delphi-Referenz durchsuchenfaDirectory gesetzt. Dieser Weg sollte zuverlässig und sauber sein.

Es geht aber auch anders: Wenn Du absolut sicher bist, dass es entweder Dateien oder Verzeichnisse sind, dann prüfe mit Delphi-Referenz durchsuchenDirectoryExists(), ob ein Eintrag ein Verzeichnis ist. Wenn nein, dann muss es ja eine Datei sein.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:47
Hi,

ich habe hier eine bzw. zwei nützliche Funktion(en) für Dich:

Delphi-Quellcode:
  function IsDirectoryA(const Dir: string): Boolean;
  var
    F: TWin32FindDataA;
    Handle: HWnd;
  begin
    Handle := FindFirstFileA(PChar(Dir), F);
    if Handle <> INVALID_HANDLE_VALUE then
    begin
      Result := ((f.dwFileAttributes and faDirectory) = faDirectory);
      Windows.FindClose(Handle);
    end else
      Result := False;
  end;

  function IsDirectory(Dir: WideString): Boolean;
  var
    F: TWin32FindDataW;
    Handle: HWnd;
  begin
    Dir := ExcludeTrailingPathDelimiter(Dir);
    if (Win32Platform <> VER_PLATFORM_WIN32_NT) then
      Result := IsDirectoryA(Dir) else
    begin
      Handle := FindFirstFileW(PWideChar(Dir), F);
      if Handle <> INVALID_HANDLE_VALUE then
      begin
        Result := ((f.dwFileAttributes and faDirectory) = faDirectory);
        Windows.FindClose(Handle);
      end else
        Result := False;
    end;
  end;
Du musst einfach immer IsDirectory() aufrufen, um abzufragen, ob das Element ein Verzeichnis ist.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:49
Warum nicht die entsprechende Funktion aus der Unit FileCtrl nehmen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:52
Zitat von Luckie:
Warum nicht die entsprechende Funktion aus der Unit FileCtrl nehmen?
...weil es die da zum Beispiel in Delphi 2005 nicht (mehr) gibt? Ich hatte auch nach etwas in der Richtung gesucht, aber nichts mehr gefunden.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:55
Gibt es bestimmt. Und wenn es ein .NET Programm werden soll, wäre die WinAPI Lösung von mirage auch nicht angebracht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#8

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:56
Zitat von Daniel:
Zitat von Luckie:
Warum nicht die entsprechende Funktion aus der Unit FileCtrl nehmen?
...weil es die da zum Beispiel in Delphi 2005 nicht (mehr) gibt? Ich hatte auch nach etwas in der Richtung gesucht, aber nichts mehr gefunden.
Äh, im Win32 Teil gibt es Unit noch auf jeden Fall . Für .NET gibt es die Directory Klasse(n)

Edit:
Nochmal für .NET
System.IO.Directory.Exists() mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:57
Zitat von Daniel:
Es geht aber auch anders: Wenn Du absolut sicher bist, dass es entweder Dateien oder Verzeichnisse sind, dann prüfe mit Delphi-Referenz durchsuchenDirectoryExists(), ob ein Eintrag ein Verzeichnis ist. Wenn nein, dann muss es ja eine Datei sein.
Wenn ich aber in einem Ordner eine Datei und einen Ordner mit gleichem Dateinamen habe, kann's da auch zu Problemchen kommen.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: prüfen, ob es ein Ordner ist

  Alt 26. Dez 2004, 10:59
Zitat von Luckie:
Gibt es bestimmt.
Du kleiner Widerporst. Ich hatte die Datei eben vor der Nase. Screenie im Anhang.


Vielleicht ist es aber auch einfach nur zu früh für mich.
Miniaturansicht angehängter Grafiken
new-2_161.gif  
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:15 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