الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية البحث عن الملفات المخفية

بدأه neo_protect في 18 يونيو 2009 · 12 رد · 4,651 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،السلام عليكــم ورحمـة الله وبركاتــه

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

faHidden

وهذا الكود سورس

procedure TForm1.FormCreate(Sender: TObject);

var

searchResult : TSearchRec;

begin

if FindFirst('c:\ *.txt', faHidden, searchResult) = 0 then

begin

repeat

ShowMessage(searchResult.Name);

until FindNext(searchResult) <> 0;

FindClose(searchResult);

end;

end;

end.

هل أنا خاطئ في مكان ما

تم تعديل هذه المشاركة بواسطة neo_protect في 18 يونيو 2009 في 16:40

#2

السلام عليكم...

أنت لست مخطئاً في الكود لكن السبب هو طريقة عمل FindFirst و FindNext فكل منهما تقوم بإحضار الملفات ذات السمات المحددة (مخفي مثلاً أو للقراءة فقط) بالإضافة إلى الملفات العادية (التي من غير سمات)!!

للحصول فقط على الملفات المخفية قم باختبار الصفة "مخفي" (faHidden) ضمن مواصفات الملف قبل عرض اسمه أو إضافته إلى قائمة.... إلخ:

  1.  
  2. if (FileGetAttr('C:' + searchResult.Name) and faHidden) <> 0 then
  3. ShowMessage(searchResult.Name);
  4.  

و طبعاً بدل \:C ستضع المسار الخاص بك، و منتهياً بشرطة مائلة.

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

شكرا أخي فعلا إستفدة منه لكن هناك مشكل ثاني و هو أنني لم أتمكن من التنسيق بين

boucle if & repeat

أريد عرض جميع الملفات المخفية

procedure TForm1.FormCreate(Sender: TObject);

var

searchResult : TSearchRec;

begin

ListBox1.clear;

if (FileGetAttr('C:\*.txt' + searchResult.Name) and faHidden) <> 0 then

begin

repeat

ListBox1.Items.Add(searchResult.Name);

until FindNext(searchResult) <> 0;

end;

end;

end.

#4

السلام عليكم...

هناك لخبطة في الكود. اختبار صفة الملف يجب أن تتم بعد الحصول عليه:

  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3. searchResult : TSearchRec;
  4. begin
  5. ListBox1.Clear;
  6. if FindFirst('C:*.txt', faHidden, searchResult) = 0 then begin
  7. repeat
  8. if (FileGetAttr('C:' + searchResult.Name) and faHidden) <> 0 then
  9. ListBox1.Items.Add(searchResult.Name);
  10. until FindNext(searchResult) <> 0;
  11. end;
  12. FindClose(searchResult);
  13. end;
  14.  

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#5

شكرا أخي الكريم , الخلبطة أمر طبيعي بالنسبة لشخص مبتدأ مثلي

سأستفيد من القواعد و النصائح التي تتكرمون بها شكرا ثانيتا

#6

شكرا أخي الكريم على لكن لي عندك طلب ثاني لو سمحت

و هو أنني أريد أن يكود البرنامج يبحث عن أكثر من نوع من الملفات المخفية ويعرضها مرة واحدة مثالا

*.txt & *.doc & *.xls

حاولة لعدة مرات لكن لم أنجح و هاذه محاولتي المخلبطة كالعادة

procedure TForm1.FormCreate(Sender: TObject);

var

searchResult : TSearchRec;

begin

ListBox1.Clear;

if FindFirst('C:\*.txt', faHidden, searchResult) = 0 then

if FindFirst('C:\*.doc', faHidden, searchResult) = 0 then begin

repeat

if (FileGetAttr('C:\' + searchResult.Name) and faHidden) <> 0 then

ListBox1.Items.Add(searchResult.Name);

until FindNext(searchResult) <> 0;

end;

FindClose(searchResult);

end;

تم تعديل هذه المشاركة بواسطة neo_protect في 20 يونيو 2009 في 18:46

#7

السلام عليكــم ورحمـة الله وبركاتــه ،،

أخي الكريم أعتقد أنه إذا قمنا بالبحث عن جميع الملفات ثم قمنا بنخب أنواع نتائج الحل بيمشي الحال

var
	searchResult : TSearchRec;
begin
	ListBox1.Clear;
	if FindFirst('C:\*.*', faHidden, searchResult) = 0 then
	 begin
		repeat
			if (FileGetAttr('C:\' + searchResult.Name) and faHidden) <> 0 then
			  begin
				if (ExtractFileExt(searchresult.Name)='.txt') or (ExtractFileExt(searchresult.Name)='.dat') then
				   ListBox1.Items.Add(searchResult.Name);
			  end;
		until FindNext(searchResult) <> 0;
	end;	FindClose(searchResult);
end;

هنا مثلا يبحث عن نوعين فقط من الملفات *.txt , *.dat

#8

شكرا أخي الكريم على المساعدة , فعلا فكرة جيدة

جاري التجربة

تم تعديل هذه المشاركة بواسطة neo_protect في 21 يونيو 2009 في 18:46

#9

سؤال بسيط من فضلكم

كيف يمكنني إجراء بحث في السواقة c في المجلدات الرئيسة و الفرعية

مثلا

كيف يمكن لي أن أجعل من هذا الكود يبحث عن جميع الملفات في المجلدات الرئيسية و المجلدات الفرعية لسواقة C

if FindFirst('C:\*.*', faHidden, searchResult) = 0 then

#10

هذا مايسمى ال recursive search

انظر هنا

ابحث في ملف المساعدة في الدلفي .

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#11

شكرا أخي

mohfa

لكن ليس ممكمن إختصار كل هذا (انظر هنا) في كود بسيط؟

#12

هذا الامر يرجع اليك انت :wink:

عزيزي :

لاتنسى ان تصلي على حبيبنا و شفيعنا يوم لا ينفع مال ولا بنون .

فاللهمّ صّل وسّلم على سيدي و شفيعي وحبيبي محمد عليك الف صلاة وازكى تسليم

*****

2_header.png

#13

وجدت ما كنت أبحث عنه و هو البحث عن الملفات في المجلدات الرئيسية و المجلدات الفرعية

أرجوا أن تستفيدوا منه

Begin

Chemin:=IncludeTrailingPathDelimiter(Chemin);

Form1.Label1.Caption:=Chemin;

Form1.Label1.Refresh;

Result:=0;

If FindFirst(Chemin+'*.*',faAnyFile,S)=0

Then Begin

Repeat

if (S.Name<>'.')And(s.Name<>'..')

Then Begin

If (S.Attr And faDirectory)<>0

Then Result:=Result+CompteFichiers(Chemin+S.FindData.cFileName)

Else Inc(Result);

End;

Until FindNext(S)<>0;

FindClose(S);

End;

End;

procedure TForm1.Button1Click(Sender: TObject);

begin

Button1.Enabled:=False;

Try

ShowMessage(IntToStr(CompteFichiers('c:\'))+' Fichier(s)');

Finally

Button1.Enabled:=True;

End;

end;

end.

تم تعديل هذه المشاركة بواسطة neo_protect في 26 يونيو 2009 في 20:39

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…