ฉันจะวางไฟล์จากโฟลเดอร์และโฟลเดอร์ย่อยเฉพาะให้อ่านเฉพาะใน delphi ได้อย่างไร ฉันรู้ว่าฉันสามารถใส่โฟลเดอร์ที่มี FileSetAttr ให้อ่านอย่างเดียวได้ แต่มีวิธีใส่ไฟล์จากโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่
ขอบคุณ
ฉันจะวางไฟล์จากโฟลเดอร์และโฟลเดอร์ย่อยเฉพาะให้อ่านเฉพาะใน delphi ได้อย่างไร ฉันรู้ว่าฉันสามารถใส่โฟลเดอร์ที่มี FileSetAttr ให้อ่านอย่างเดียวได้ แต่มีวิธีใส่ไฟล์จากโฟลเดอร์และโฟลเดอร์ย่อยหรือไม่
ขอบคุณ
คุณต้องวนซ้ำไฟล์ทั้งหมดในไดเรกทอรี และวนซ้ำในไดเรกทอรีย่อยทั้งหมด คุณสามารถใช้ฟังก์ชันนี้เพื่อทำสิ่งนั้น:
type
TFileEnumerationCallback = procedure(const Name: string);
procedure EnumerateFiles(const Name: string;
const Callback: TFileEnumerationCallback);
var
F: TSearchRec;
begin
if FindFirst(Name + '\*', faAnyFile, F) = 0 then begin
try
repeat
if (F.Attr and faDirectory <> 0) then begin
if (F.Name <> '.') and (F.Name <> '..') then begin
EnumerateFiles(Name + '\' + F.Name, Callback);
end;
end else begin
Callback(Name + '\' + F.Name);
end;
until FindNext(F) <> 0;
finally
FindClose(F);
end;
end;
end;
นี่เป็นกิจวัตรวัตถุประสงค์ทั่วไป คุณสามารถระบุขั้นตอนการติดต่อกลับที่จะเรียกพร้อมกับชื่อของแต่ละไฟล์ ภายในกระบวนการโทรกลับนั้นทำสิ่งที่คุณต้องการ
ขั้นตอนการติดต่อกลับของคุณจะมีลักษณะดังนี้:
procedure MakeReadOnly(const Name: string);
begin
FileSetAttr(Name, FileGetAttr(Name) or faReadOnly);
end;
และคุณจะรวมมันเข้าด้วยกันดังนี้:
EnumerateFiles('C:\MyDir', MakeReadOnly);
FileSetAttr
สำหรับแต่ละไฟล์ที่คุณพบในโฟลเดอร์และโฟลเดอร์ย่อย สำหรับการค้นหานั้นให้ใช้FindFirst
,FindNext
- person TLama   schedule 17.02.2014