2010-06-12 51 views
12

Tôi đang làm việc với delphi, tôi muốn danh sách tất cả các tệp của thư mục khi tôi thực thi openpicturedialog.Delphi - cách lấy danh sách tất cả các tệp của thư mục

ví dụ: Khi hộp thoại mở được thực hiện và tôi chọn một tập tin từ nó, tôi muốn danh sách của tất cả các file từ thư mục của tập tin được chọn.

Bạn thậm chí có thể gợi ý cho tôi để nhận tên thư mục từ FileName tài sản của TOpenDialog
cảm ơn.

Trả lời

20

@Himadri, mục tiêu chính của OpenPictureDialog không chọn thư mục, dù sao nếu bạn đang sử dụng hộp thoại này với một mục đích khác, bạn có thể thử mã này.

Var 
    Path : String; 
    SR  : TSearchRec; 
    DirList : TStrings; 
begin 
    if OpenPictureDialog1.Execute then 
    begin 
    Path:=ExtractFileDir(OpenPictureDialog1.FileName); //Get the path of the selected file 
    DirList:=TStringList.Create; 
    try 
      if FindFirst(Path + '*.*', faArchive, SR) = 0 then 
      begin 
      repeat 
       DirList.Add(SR.Name); //Fill the list 
      until FindNext(SR) <> 0; 
      FindClose(SR); 
      end; 

    //do your stuff 

    finally 
    DirList.Free; 
    end; 
    end; 

end; 
+0

OK. thanx tôi hiểu rồi. Câu trả lời của bạn giúp tôi. – Himadri

+5

Tôi nghĩ rằng mã của bạn cần một thử cuối cùng bảo vệ FindFirst/FindClose (SR). –

+2

tìm thấy một lỗi bạn cần phải thay thế nếu FindFirst ('*. *', FaArchive, SR) = 0 thì với nếu FindFirst (Path + '*. *', FaArchive, SR) = 0 thì vì nó doesn 't nhìn vào con đường – AirWolf

2

Thay đổi lọc tài sản trong OpenPictureDialog bạn để bao gồm tất cả các file:

All (*.*) 

Sửa: Tôi không nghĩ rằng bạn có thể chọn một thư mục trong một mở (Ảnh) Dialog, nó chắc chắn isn không phải là mục đích của OpenPictureDialog. Có lẽ this là những gì bạn tìm kiếm.

Sau đó, sử dụng FindFirstFindNext để tải các tệp trong thư mục này.

+0

oh no ... Bạn hiểu sai .... Vui lòng xem câu hỏi đã chỉnh sửa. – Himadri

+0

Tôi không chọn thư mục nhưng tệp .. và tôi muốn danh sách tệp khác của thư mục mẹ của tệp đã chọn .. hãy đọc kỹ câu hỏi ... – Himadri

+0

Trong trường hợp đó, CaldonCZE có câu trả lời. –

1

Bạn có thể sử dụng extractFilePath chức năng để có được tên thư mục:

myPath := extractFilePath(FileName); 

nơi FileName là tên của tập tin bạn chọn bằng cách OpenDialog.

34

nếu bạn sử dụng delphi 2010 sau đó bạn có thể sử dụng tdirectory.getfiles đầu tiên thêm ioutils.pas quy định tại khoản sử dụng sau đó viết dòng mã sau đây trong xử lý sự kiện (ngoài mã bạn đã có trong trường hợp handler)

uses IOUtils; 

var 
    path : string; 
begin 
    for Path in TDirectory.GetFiles(OpenPictureDialog1.filename) do 
     Listbox1.Items.Add(Path);{assuming OpenPictureDialog1 is the name you gave to your OpenPictureDialog control} 
end; 
+0

Tùy chọn tốt nhưng tôi không sử dụng delphi 2010 ... :-( – Himadri

+7

+1 để đại diện bằng cú pháp "mới". :-) –

+2

Đừng quên bao gồm: sử dụng IOUtils; – WishKnew

Các vấn đề liên quan