Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ShelltreeView überprüfen ob item ein Ordner ist (https://www.delphipraxis.net/26766-shelltreeview-ueberpruefen-ob-item-ein-ordner-ist.html)

Benjamin410 29. Jul 2004 00:18


ShelltreeView überprüfen ob item ein Ordner ist
 
Hallo,

zusammen ich lese mit folgender Funktion einzelne Zeilen eines ShellTreeview aus
Delphi-Quellcode:
shelltreeview1.Items.Item[i].Text
wie kann ich jetzt feststellen ob diese Zeile ein Verzeichnis ist.

MfG

Benjamin

bigg 29. Jul 2004 00:23

Re: ShelltreeView überprüfen ob item ein Ordner ist
 
hi,

also wenn Text dir den kompletten Pfad liefert, kannst du mit:
Code:
DirectoryExists(pfad)
überprüfen, ob es ein Ordner ist.

Luckie 29. Jul 2004 00:38

Re: ShelltreeView überprüfen ob item ein Ordner ist
 
Delphi-Quellcode:
function IsDir(Dir: string): Boolean;
var
  wfd: TWin32FindData;
  hFile: THandle;
begin
  hFile := FindFirstFile(PChar(Dir), wfd);
  result := ((wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) =
    FILE_ATTRIBUTE_DIRECTORY) and (hFile = INVALID_HANDLE_VALUE);
  if hFile <> INVALID_HANDLE_VALUE then
    Windows.FindClose(hFile);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsDir('E:\Delphi\Programme') then
    ShowMessage('Verzeichnis')
  else
    ShowMessage('Datei');
end;
Wird eine Datei angegeben, die nicht existiert, liefert die Funktion auch wahr zurück.

[Edit]
Mist, da ist DirectoryExists besser. :roll:

[Edit2]
Verbessert. ;)

[Edit3]
Habe noch was besseres von Assarbad gefunden:
Delphi-Quellcode:
function FileExists(const FileName: string; dir: boolean = false): Boolean;
var
  hidate, lodate: word;
  Handle: THandle;
  FindData: TWin32FindData;
  LocalFileTime: TFileTime;

type
  LongRec = packed record
    Lo, Hi: Word;
  end;

  function SubFileExists: Boolean;
  begin
    FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
    result := FileTimeToDosDateTime(LocalFileTime, HiDate, LoDate);
  end;
begin
  result := false;
  Handle := FindFirstFile(PChar(FileName), FindData);
  if Handle <> INVALID_HANDLE_VALUE then
  begin
    Windows.FindClose(Handle);
    case dir of
      TRUE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then result := SubFileExists;
      FALSE: if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then result := SubFileExists;
    end;
  end;
end;

Frank2004 31. Jul 2004 13:29

Re: ShelltreeView überprüfen ob item ein Ordner ist
 
Hallöle,

es geht doch auch so:

Delphi-Quellcode:
procedure IsFolder( node : TTreeNode ) : boolean;
var
  Fldr  : TShellFolder;
begin
  Fldr  := TShellFolder( node.data );
  result := Fldr.IsFolder;
end;
ciao

[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit]


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