القيمة السمة الغريبة التي تم الإبلاغ عنها بواسطة FindFirst ()، ATM = 2080

StackOverflow https://stackoverflow.com/questions/2005914

سؤال

عند البحث عن الملفات مع FindFirst ()، أحصل على قيمة سمة في مجال TSEARCREC.ATTR المؤرخ 2080. لم يتم تحديده في التعليمات حيث توجد هذه القيم فقط متاحة فقط وليس مزيجا منهم عوائد 2080:

1 fareadonly.
2 فهيدين
4 fasysfile.
8 favolumeid.
16 fadirectory.
32 fairmive.
64 fasymlink.
71 faanyfile.

لا أحد يعرف ما يعني 2080 ولماذا أحصل على قيمة السمة هذه؟ نظام التشغيل هو XP Embedded.

هل كانت مفيدة؟

المحلول

اتضح أن الملف الموجود بواسطة FindFirst () تم ضغطه، وبالتالي كان يحتوي على مجموعة بت مضغوطة. أخذني بعض الوقت لمعرفة ولم أتمكن من العثور على مرجع على الويب الذي ذكر القيمة الفعلية ل TSEARCREC.ATTR عند تعيين بت مضغوط. قامت "ضغط ملف" غير مكلم في الخصائص المتقدمة في الملفات.

نصائح أخرى

سمات في TSearchRec الخريطة مباشرة إلى سمات ملف ويندوز تستخدم مع TWin32FindData سجل من FindFirstFile.

في عرافة (دائما تقديم حقول بت في عرافة، وليس عشري)، 2080 هو 0820 دولار، حيث يكون من الواضح أن هناك مجموعة بت. الشيء السفلي يتوافق مع File_Attribute_Archive, ، أو دلفي faArchive, ، والغلة العليا يتوافق مع File_Attribute_Compressed. وبعد ليس لديه ما يعادلها في الوحدات التي تأتي مع دلفي، ولكن يمكنك استخدام JclFileUtils.faCompressed رمز من jcl..

في JclFileUtils وحدة من مكتبة رمز جدي وجدت:

faNormalFile        = $00000080;
...
faNotContentIndexed = $00002000;

إذا كان 2080 في عرافة، فهذا هو.

انظر أيضا في: http://www.tek-tips.com/viewthread.cfm؟qid=1543818&page=9.

تحرير: في حين أن 2080 معرف عشري، و 2080 Dec = 820 هيكس ثم يتم تركيبة من:

 faArchive     = $00000020;
 faCompressed  = $00000800;

سيؤدي هذا إلى استخراج بت الفضير ولا داعي للقلق بشأن مجموعة بت ضغط أم لا.

if ((sr.Attr AND faDirectory) <> 0) then

begin 
     .......
end;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top