นวัตกรรม สิ่งประดิษฐ์ และเทคโนโลยี

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

ผู้เขียน หัวข้อ: หา file และ subdirectory ใน Directory  (อ่าน 9 ครั้ง)

NAWATTAKAM

  • Administrator
  • Sr. Member
  • *****
  • กระทู้: 345
หา file และ subdirectory ใน Directory
« เมื่อ: กุมภาพันธ์ 11, 2019, 08:58:55 PM »

delphi

Function FindFirstFile และ FindNextFile ของ WindowsAPI สามารถใช้สำหรับหา file หรือ Directory ที่เราต้องการได้

โดยข้อมูลที่ Return กลับมาจะอยู่ใน Type TWin32FindData
รายละเอียดของ FindFirstFile, FindNextFile และ Win32_FILE_DATA สามารถดูได้จาก Win32 Developer's Reference Help

โค๊ด


Function Find_File_and_Subdirectory( Dir : String );
var FindFileData : TWin32FindData;
SearchHandle : THandle;
begin
SearchHandle := FindFirstFile( PChar( Dir+'\*.*' ), FindFileData );
If SearchHandle <> INVALID_HANDLE_VALUE then
Repeat
If FindFileData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
Memo1.Lines.Add( '<'+FindFileData.cFileName+'>' )
else
Memo1.Lines.Add( FindFileData.cFileName );
Until Not FindNextFile(SearchHandle,FindFileData);
end;




บันทึกการเข้า

NAWATTAKAM

  • Administrator
  • Sr. Member
  • *****
  • กระทู้: 345
show Directories in a TTreeview
« ตอบกลับ #1 เมื่อ: กุมภาพันธ์ 11, 2019, 08:59:36 PM »

delphi


โค๊ด
procedure TForm1.GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: boolean);
var
  SearchRec: TSearchRec;
  ItemTemp:  TTreeNode;
begin
  Tree.Items.BeginUpdate;
  if Directory[length(Directory)] <> '\' then Directory := Directory + '\';
  if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
  begin
    repeat
      if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
      begin
        if (SearchRec.Attr and faDirectory > 0) then
          Item := Tree.Items.AddChild(Item, SearchRec.Name);
        ItemTemp := Item.Parent;
        GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
        Item := ItemTemp;
      end
      else if IncludeFiles then
        if SearchRec.Name[1] <> '.' then
          Tree.Items.AddChild(Item, SearchRec.Name);
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
  Tree.Items.EndUpdate;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  GetDirectories(TreeView1, 'C:\', nil, True);
end;
บันทึกการเข้า