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

مشروع برنامج معرفة انواع الملفات

رائج
بدأه mohfa في 30 يوليو 2009 · 65 رد · 5,498 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

المشروع عبارة عن برنامج بهه تتم معرفة نوع الملف وكيف تتم قرائته تحت نظام Windows , MAC OS ,, Linux كل هذا انطلاقا من ملف نصي يعتبر كقاعدة بيانات تحوي المعلومات المطلوبة لذلك

العمل يكون بنسخة دلفي 7

مبدئيا سوف نتعامل مع هذا الموقع : http://filext.com/ للحصول على معلومات الملفات

بانتظار الاراء و الاقتراحات وطبعا المشتركين في المشروع.

انظر السورس

File_Type_Getter.rar

عزيزي :

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

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

*****

2_header.png

#2

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

فكرة المشروع رائعة ومثالية وأريد أن أشارك في المشروع أخي محمد

في الغد إن شاء الله سأشارك بمثال بسيط يجسد فكرة المشروع

986902102.jpg
#3

هل سيضاف شئ جديد على ما هو موجود حالياً؟

اقتباس
كل هذا انطلاقا من ملف نصي يعتبر كقاعدة بيانات تحوي المعلومات المطلوبة لذلك

هناك من اختصر عليكم المهمة ووضع المعلومات في ملفات xml .

البرنامج والـ database هنا :

http://mark0.net/soft-tridnet-e.html

او على النت

http://mark0.net/onlinetrid.aspx

بالمناسبة تم الإشارة إلى TrID في نفس الموقع الذي ذكر في بداية الموضوع

http://filext.com/howtouse.php

ما تحتاجون عمله هو xml parser والمقارنة مع الملف كما هو الحال مع TrID...

#4

أخي YaSeenTA لا أظن أنك تدرك الهدف من مثل هكذا مشاريع....

عندما يطرح موضوع ما للمناقشة مثل مشروع الأخ mohfa فليس هدفنا منافسة أحد أو ..... كما تقول --أختصر عليكم--.... .

الهدف هنا هو معالجة المشروع جماعيا ومن أبسط الزوايا ومن بداية الطريق حتى تعم الفائدة ويتسنى للجميع فهم الفكرة .

986902102.jpg
#5

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

اخي الكريم YaSeenTA من فظلك لاتخلط الامور في بعضها فامهوم المشروع مفهوم جدا ....

اقتباس
ما تحتاجون عمله هو xml parser والمقارنة مع الملف كما هو الحال مع TrID...

هل تردك ماتقول ....؟

على كل حال اضن ان اخي Taha قد رد في مكاني .

اخي taha هل من تقدم .؟

عزيزي :

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

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

*****

2_header.png

#6

أهلا بك أخي محمد

المثال الذي كنت أريد أن أشارك به له مبدأ عمل بسيط وهو مضمن ضمن مشروعك أخي mohfa لذا لا داعي لرفعه.

بعد أن إطلعت على مشروعك جيدا إستنتجت ما يلي :

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

نوع الملف

وصف الملف

إمتداد الملف

النظام الذي يعمل تحته هذا الملف

البرنامج الذي يتعامل مع نوع الملف مثلا : doc--Microsoft Office

الشركة المنتجة للبرنامج

كل هذه المعلومات تكون مخزنة مسبقا في ملف نص .

وملف النص الذي يستخدم كقاعدة بيانات هو بدوره مقسم إلى سلاسل كل سلسلة تحتوي جميع المعلومات المتعلقة بإمتداد معين .

وهذه صورة البرنامج وقد تم فيه تعريف الملفات المعرفة مسبقا في قاعدة البانات:

post-145519-1249210143_thumb.png

تم تعديل هذه المشاركة بواسطة tahasit في 2 أغسطس 2009 في 13:49

986902102.jpg
#7

ومن قال اني اقصد انكم تريدون منافسة شخص او شركة ما ..

ما قصدته بقولي "اختصر عليكم" أنه لا داعي لتضييع الوقت في إعادة تخزين كم هائل من المعلومات في حين أن قاعدة البيانات موجودة مسبقاً . سواءً بأخذ تلك الجاهزه من TrID أو قراءة المعلومات من احد المواقع مثل filext وتخزينها بطريقة ما . واعتقد أن إستخدام قاعدة بيانات TrID أفضل .

اقتباس
الهدف هنا هو معالجة المشروع جماعيا ومن أبسط الزوايا ومن بداية الطريق حتى تعم الفائدة ويتسنى للجميع فهم الفكرة .

أعلم الهدف من المشاريع الجماعية . وإن كان لا بد من البدء بكل شئ حتى قاعدة البيانات , فقد أشرت قبل قليل إلى طريقة لعملها وهي قراءة المعلومات من filext وتخزينها ... وأعتقد أن إستخدام xml لحفظ البيانات هي من أفضل الطرق ..

اقتباس
هل تردك ماتقول ....؟

أخي العزيز لم أفهم ما تقصده...

اقتباس
كل هذه المعلومات تكون مخزنة مسبقا في ملف نص .

وملف النص الذي يستخدم كقاعدة بيانات هو بدوره مقسم إلى سلاسل كل سلسلة تحتوي جميع المعلومات المتعلقة بإمتداد معين .

ألا تعتقد أن عمل ملف xml - حتى وإن اعدت بناءه ولم تستخدم الملف الجاهز المشار إليه - يفي بالغرض الذي تريده .

يرجى أن يبقى النقاش ضمن الحوار العلمي ولا أعتقد اني قد أسأت لأحد في كلامي حتى في العبارة "إختصر عليكم" لاني كنت أعني أنه قد اختصر الوقت الكبير الذي ستحتاجونه لعمل قاعدة البيانات ...

#8

مشروع جيد لكن ماذا لو كان الملف بدون امتداد وتريد معرفة امتدادة ؟ لابد من وضع شيء يشبه التواقيع للتعرف على الملفات ويتم تحديث هذا التوقيع كل فترة :)

#9
اقتباس
ماذا لو كان الملف بدون امتداد وتريد معرفة امتدادة ؟

التعرف على الملف لا يتم عن طريق إمتداده بل عن طريق معلوماته الخاصة . فإن كان لديك ملف في الأصل هو من ملفات MS Excel وقمت بتغيير الإمتداد إلى rar فلن يتم التعرف عليه أنه ملف RAR بل ستكون النتيجة ملف MS Excel ...

#10

أهلا بك أخي YaSeenTA بيننا

أنت لم توضح مقصدك جيدا من البداية ولا يختلف إثنان في ذلك.

حصل خير إن شاء الله

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

فيما يتعلق بقاعدة البيانات التي إقترحتها لا أعتقد أنها تتوافق مع مشروع الأخ mohfa لأنه موسع جدا على البرنامج الذي أشرت إليه

ويشمل أنظمة تشغيل مختلفة.

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

هل إطلعت على مشروع الأخ mohfa جيدا .

تم تعديل هذه المشاركة بواسطة tahasit في 2 أغسطس 2009 في 14:33

986902102.jpg
#11

[

اقتباس
التعرف على الملف لا يتم عن طريق إمتداده بل عن طريق معلوماته الخاصة

بارك الله فيك أخي YaSeenTA كلا مك صحيح و يحدث عكس هذا لو كنا نعتمد على الترجمة النصية للإمتداد مثلا .doc.....MS Office

مشروع الأخ mohfa تجاوز هذه النقطة حيث أنه لا يعتمد على الإمتداد وحده لتعريف الملف ويمكنك أن تجرب ذلك في برنامجه المرفق

أرجو أن تطلع عليه جيدا أخي YaSeenTA وتشاركنا بآرائك ومقترحاتك.

تم تعديل هذه المشاركة بواسطة tahasit في 2 أغسطس 2009 في 16:26

986902102.jpg
#12

tahasit :

اقتباس
بارك الله فيك أخي YaSeenTA يحدث هذا لو كنا نعتمد على الترجمة النصية للإمتداد مثلا .doc.....MS Office

مشروع الأخ mohfa تجاوز هذه النقطة حيث أنه لا يعتمد على الإمتداد وحده لتعريف الملف ويمكنك أن تجرب ذلك

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

راجع ردي السابق

اقتباس
التعرف على الملف لا يتم عن طريق إمتداده بل عن طريق معلوماته الخاصة

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

إن وجدت الوقت سأضع مثال على التعامل مع قاعدة البيانات في حالة كانت على شكل ملفات xml حيث ستكون أسهل بالتعامل (من وجة نظري فقط) ...

#13

اخي الكريم php4pro كما تفضل اخي Taha برنامج ال FTG و الذي هو اختصار لل File Type Getter لايعتمد على اتداد الملف لمعرفة نوع الملف بل على Hex Signature و بنية الملف المراد معرفة نوعه حتى و ان تم تغيير امتداد الملف .

اخي الكريم YaSeenTA مرحبا بك بيننا ومشترك في المشروع باذن الله

مشروع ال FTG سيكون موسع كثيرا عن ال TrID حتى من ناحية السرعة .

المطلوب التالى هو محرر ال Sig Files لل FTG يعني انشاء محرر بحيث ان المستعمل يمكنه ادخال / حذف / تغيير في معلومات الملف من هذا المحرر

من سنوكل له هذه المهمة ؟

اضن انه الاخ طه او YaSeenTA ..

الاضافة الجديدة هي مايعرف بال Shell Ext انظر الصور :

post-36253-1249237706_thumb.jpg

post-36253-1249237718_thumb.jpg

تمكين او عدمه ال Shell Ext يكون بتفعيل ال Enable_Disable_Shell في البرنامج ثم الضغط على زر ال Validate Shell Ops

التحديث الاول

File_Type_Get.rar

تم تعديل هذه المشاركة بواسطة mohfa في 2 أغسطس 2009 في 21:39

عزيزي :

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

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

*****

2_header.png

#14

فعلا أخي mohfa مشروع قيم جدا وسنستفيد جميعا منه إن شاء الله

دائما تدهشنا بأفكارك المتميزة أخي محمد

سأحاول معالجة النقطة التي أشرت إليها

986902102.jpg
#15

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

أخي محمد قبل معالجة النقطة التي أشرت إليها أحببت أن أضيف بعضالمعلومات عن الملفات المدرجة في قائمة ListView

وهذه المعلومات هي :

تاريخ كتابة الملف

تاريخ التغيير في الملف

تاريخ آخر وصول للملف

ومن أجل ذلك أضفت function GetFileTimes

وقد نجح الأمر معي عندما يتم إختيار ملف واحد

post-145519-1249379117_thumb.png

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

أرجو أن تطلع على المرفق وتحاول حل المشكلة

File_Type_Get.rar

تم تعديل هذه المشاركة بواسطة tahasit في 4 أغسطس 2009 في 12:50

986902102.jpg
#16
اقتباس
ولكن المشكلة هي عندما يتم إختيارمجلد أو قرص به مجموعة من الملفات

أرجو أن تطلع على المرفق وتحاول حل المشكلة

هل الموضوع محصور لأشخاص؟

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

قم بالتغييرن الآتين

In Button1Click

Add

GetFileTimes(Strs,CDate,MDate,ADate);

before

LI.SubItems.Add(FormatDateTime('dd/mm/yyyy hh:nn',CDate));

----

In Button6Click

Add

//kl := AnsiLowerCase(ExtractFileName(edit1.Text));

GetFileTimes(edit1.Text,CDate,MDate,ADate);

before

LI.SubItems.Add(FormatDateTime('dd/mm/yyyy hh:nn',CDate));

إستخدامك لـ ExtractFileName ويعد ذلك طلبك لمعلومات عن الملف مثل تاريخ كتابة الملف ,تاريخ التغيير في الملف , تاريخ آخر وصول للملف أو غيرها يعتبر خاطئ .

السبب ... أنتظر منك تحليل للمشكلة بعد أن أشرت لمكانها

#17

وددت إضافة شئ آخر

حين يتم إستدعاء ملف قاعدة البيانات sig.txt يفضل إستدعاءها بهذا الشكل

ftg.LoadFromFile(ExtractFilePath(ParamStr(0))+'\sig.txt',true);

أو وضع الـ Path حيث يوجد الملف لانه في بعض الحالات -كما حصل معي- لا يتم إستدعاءها فلا يتم الحصول على المعلومات

#18

أهلا بك اخي الكريم YaSeenTA وقد سرني تعقيبك كثيرا

بارك الله فيك أخي الكريم أتعبتني هذه المشكلة كثيرا إلى أن جاء الحل من عندك

فيما يخص تحليل المشكل فالطريقة الوحيدة التي أعلمها هي ما طرحتها في المثال

وأعتقد أن المشكلة تكمن في المسارات أو Path

أنتظر منك الرد أخي الكريم YaSeenTA

986902102.jpg
#19

إستخدام ExtractFileName سيعطي إسم الملف فقط و حين تقوم بقراءة المعلومات في الدالة GetFileTimes والتي بدورها تستدعي FileOpen وهذه تستدعي CreateFile والتي بدورها تنشئ أو تفتح ملف و ستعتمد في هذه الحالة الـ Process Current Directory كأول Path لقراءة الملف - الذي لدينا اسمه فقط - منه .

باختصار المشكلة سترجع إلى الدالة CreateFile والتي تستدعي إعطاء المسار الصحيح للملف المراد إنشاءه أو فتحه ...

هذا والله أعلم

تم تعديل هذه المشاركة بواسطة YaSeenTA في 4 أغسطس 2009 في 16:20

#20

ولكن تذكر أخي الكريم أننا أسبقنا ExtractFileName بـ AnsiLowerCase وقد نجح الأمر في حال الملف الواحد لأن

النص الموجود في الإديت يحوي مسار الملف مع إسم الملف أما في حال مجموعة الملفات فالأمر لا ينجح لأن النص يحتوي على Directory الملفات المراد معالجتها فقط

أعتقد أن الحل كما قلت يكمن في تعريف الملفات الموجودة في ListView

لقد قمت بالتعديل على المشروع كما أشرت أخي الكريمyassenTA ونجح الأمر

لا حظ الصورة

post-145519-1249397766_thumb.png

File_Type_Get.rar

تم تعديل هذه المشاركة بواسطة tahasit في 4 أغسطس 2009 في 17:57

986902102.jpg
#21

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

YaSeenTA اخي الكريم السؤال لايكون موجه لشخص بعينه اذا كان عندك اي تدخل فمرحبا .

اخي Taha الاضافة جميلة و جيدة و لكن هنا سنتعامل مع ال Unix Time و Unix Date احسن هذا سوف يساعد في حالة ال Internationalisation للبرنامج سوف يكون لي تعقيب على ذلك لاحقا .

اخي YaSeenTA فيما يخص ال Path فكلاهما يؤدي نفس المهمة على كل حال يمكن استعمالها كالاتي :

ftg.LoadFromFile(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)))+'sig.txt',true);

ملاحظة اخي طه اظافتك يمكن ان تكون في الوحدة FileTypeGetter مع خاصية ال Boolean يعني يمكن للمستسعمل ان يخفي او يظهر معلومات الملف اقصد الوقت و التاريخ

جيد اخي YaSeenTA واصل

اخي طه لقد نسيت الوحدة 2 اثناء تجاربك ..... :wink:

تم تعديل هذه المشاركة بواسطة mohfa في 4 أغسطس 2009 في 21:06

عزيزي :

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

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

*****

2_header.png

#22

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

أضفت الوحدة 2 من أجل أن يتم التغيير فيها ( تغيير خصائص الملف كما قلت أخي محمد)

ولكن أخي محمد ما هي الخصائص التي سوف نغيرها لأني صراحة لم أعرف من أين أبدأ

986902102.jpg
#23
اقتباس
ولكن أخي محمد ما هي الخصائص التي سوف نغيرها لأني صراحة لم أعرف من أين أبدأ

اخي طه اذا كنت تقصد محرر ملفات ال Sig فسيكون ذلك باظافة / تغيير /... في كل معلومات الملف المخزنة في ملف قاعدة البيانات .

"[sig1]","[sig2]","[sig3]",[Offset1],[Offset2],[Ext],"[Descrip]",[ExtType],[Tag],"[AWinOpensWith]","[AMacOpensWith]","[ALinuxOpensWith]","[ACompany]"

Sig1..Sig2 : Array Of Byte

Offset1..Offset2: Word

Ext,Descrip:String; // ستكون مستقبلا Ext:String[5] , Descript:String[255]

Tag:Integer

AWinOpensWith..ACompany : String

عزيزي :

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

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

*****

2_header.png

#24

إذن التغيير سيكون في ملف قاعدة البيانات

كنت أعتقد أن التغيير سيكون على خصائص الملف في حد ذاته وقمت بما يلي:

حيث إستعملت وظيفة تعريف الملف من أجل تغيير تاريخ التعديل على الملف

وقد نجح الأمر

لاحظ الصورة

post-145519-1249410719_thumb.png

986902102.jpg
#25

نعم اخي طه التعديل يكون على ملف قاعدة البيانات فقط

كما قلت برمجة محرر لملفات ال Sig بحيث يصبح المستعمل يستطيع الاضافة / التعديل او الحذف معلومات الملف بدون الدخول لملف ال Sig مباشرة .

والله الموفق

عزيزي :

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

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

*****

2_header.png

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