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

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

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

فهمتك جيدا الآن ما نبحث عنه الآن هو إمكانية تعريف أنواع جديدة من الملفات أو التعديل على الأنواع المعرفة مسبقا وكل هذا التغيير يتم على مستو ى ملف قاعدة البيانات من خلال محرر الخواص الذي نريد إنشاءه دون الدخول لملف ال Sig مباشرة

سأحاول أخي محمد وفقنا الله وإياكم لما يحب ويرضى

فقط أردت أن أقول أن الجميع سيستفيد إن شاء الله من مثل هذه المشاريع الشيقة والممتعة في نفس الوقت.

شكرا

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

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

راجع ردي خصوصاً الكلمات المؤشرة باللون الأزرق .

نجح الأمر في حالة الملف الواحد لانه الـ Process Current Directory لم يتغير وهو في هذه الحالة الـ Path الخاص بالملف ...

لكن على إفتراض أن الـ Process Current Directory تغير لسبب ما فستحصل المشكلة

حين تختار الملف باستدعاء Button3Click يتغير الـ Process Current Directory الى المسار الخاص بالملف(تعقب لما يجري بعد إستدعاء Execute التابعة لـ OpenDialogFile قد يقود لمعرفة السبب- أظن انه يتم إستدعاء SetCurrentDirectory ),

بينما لا يتم التغيير حين تستدعي SelectDirectory في SpeedButton1Click .. يمكن التاكد من ذلك بإستدعاء GetCurrentDirectory ..

لاحظ أننا نتحدث عن Current Directory للـ Process وليس للملف FileTypeGet.exe .

اقتباس
اخي YaSeenTA فيما يخص ال Path فكلاهما يؤدي نفس المهمة

كما أشرت في ردي قد تحصل مشكلة كما صار عندي ولم يتم قراءة الملف sig.txt لذا يفضل وضع المسار الكامل ...

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

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

يمكن إستعمال المكون TXMLDocument لهذا الغرض .. وهذا ما فعلته ...

#28
اقتباس
أستغرب لماذا تصرون على وضع قاعدة البيانات في ملف واحد سيصبح حجمه كبيراً وترفضون إستعمال ملفات الـ xml التي أشرت إليها والتعديل فيها باضافة المعلومات الغير موجودة. فالتعامل مع ملفات الـ xml افضل .

يمكن إستعمال المكون TXMLDocument لهذا الغرض .. وهذا ما فعلته ...

اخي الكريم YaSeenTA المشكلة لاتكمن في ملف من txt او XML ولكن شخصيا لااريد التقليد ولكن FTG له ميزاته و خصائصه الخاصة به و من ناحية الجحم لاتقلق فسوف يتم لاحقا تقسيم ملفات ال Sig الى ملفات صغيرة الحجم يعني الاشكالية ليست هنا .

اقتباس
وهذا ما فعلته

ضع محاولتك هنا و سنرى , هذا مايسمى بالمشاريع الجماعية

هل استعملت ملفات ال XML مع ال FTG كيف كانت النتائج ؟

عزيزي :

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

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

*****

2_header.png

#29
اقتباس
المشكلة لاتكمن في ملف من txt او XML ولكن شخصيا لااريد التقليد

هي فعلاً ليست المشكلة , بنية ملفات الـ xml أفضل وتعتبر احد الأنواع لحفظ المعلومات بل إن إستعمالها في الـ web أصبح أكثر .

اقتباس
و من ناحية الجحم لاتقلق فسوف يتم لاحقا تقسيم ملفات ال Sig الى ملفات صغيرة الحجم يعني الاشكالية ليست هنا .

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

ليست المسألة التقليد , بل النظر للأفضل والتطوير لما توصل له الأخرون بدلاً من إختراع العجلة ..

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

اقتباس
ضع محاولتك هنا و سنرى , هذا مايسمى بالمشاريع الجماعية

هل استعملت ملفات ال XML مع ال FTG كيف كانت النتائج ؟

لم أستخدم كود الـ FTG . سأضع المحاولة بعد أن يكون هناك عمل لا بأس به .

المقارنة للـ Sig أو Identifying Characters (كما تسميها filext ) الخاصة بالملف تتم مع جميع الملفات في قاعدة البيانات لذا قد نجد أكثر من ملف له نفس الـ Sig لكن هناك أشياء أخرى تحكم نوعية الملف.

على سبيل المثال : كيف ستقارن الملفات من نوع xml,doc,ptt,....

سأحاول وضع محاولتي في أقرب وقت إن شاء الله

لا أتمنى أني أثبط من همتكم . واصلوا في الفكرة التي أنتم عليها فقد تكون أفضل ..

#30

سورى مش لحقت اقرا كل البوستات

بس ليه مش تستخدمو libmagic ؟

انا عملت واحد لباسكال كجزء من مشروع libmagicbindings

http://bitbucket.org/xmonader/libmagicbind...c/tip/pasmagic/

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#31

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

أريد أن أوضح شيئا إخوتي الكرام

وهو أني لم أتعامل من قبل مع ملفات txt كقاعدة بيانات ومثل هذا المشروع يتعامل في جوانب كثيرة منه مع هذا النوع من الملفات يعني أننا نحتاج لإجراء العديد من العمليات عليه من إضافة وتعديل وحذف و.... ما يعني أننا إن شاء الله سوف نتعلم الكثير حول التعامل مع هذا النوع من الملفات.

سؤال :

ما هو عدد معلومات الملف المخزنة في Sig.txt وأين يبدأ تعريف كل معلومة وأين ينتهي لأني لم أعرف أين تبدأكل معلومة وأين تنتهي

مثال :

"$52,$61,$72,$21,$1A,$07,$00",,,0,0,.rar,"WinRAR compressed archive",feArchive,0,"RARLAB WinRAR","UnRarX","unrar","RarLab.inc"

986902102.jpg
#32

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

تحيدث جديد :

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

اقتباس
بدلاً من إختراع العجلة

استسمحك اخي الكريم YaSeenTA اكره مافي حياتي هاته العبارة والا لما كان هناك Windows , Linux , MAC ......

المهم هذه ليس مشكلنا

اقتباس
لكن هناك أشياء أخرى تحكم نوعية الملف

مثل ماذا مثلا و سنظيفه ؟

هل تقصد ال ASCII Sig

لاتنسى ان ال FTG يتعامل مع 3 Hex Sig للكل ملف اذا اردت و يتعامل مع 2 Offset لكل Hex Sig .

اقتباس
لم أستخدم كود الـ FTG . سأضع المحاولة بعد أن يكون هناك عمل لا بأس به .

جيد 1+1=2

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

طلبك على العين و الراس اخي ياسين سوف اضيف an Overloaded Loading File Function يتم فيها استعمال ال ملفات ال XML

اقتباس
ما هو عدد معلومات الملف المخزنة في Sig.txt وأين يبدأ تعريف كل معلومة وأين ينتهي لأني لم أعرف أين تبدأكل معلومة وأين تنتهي

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

اخي طه الملف يتعامل مع مايسمى بال CommaText (,)

اقراء جيدا ملف readme.txt

لقد اعطيت مثال على ملف Winrar .

التحديث

File_Type_Get.rar

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

عزيزي :

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

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

*****

2_header.png

#33

شكرا أخي محمد على دمج الإضافة بهذا الشكل الرائع.

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

فيما يخص الإضافة على ملف Sig.txt أظن أنها ستكون من الشكل :

 AssignFile(F,ExtractFilePath(Application.ExeName)+'Sig.txt');
Append(F);
Writeln(F,A1+'",,,0,0, '+A2+' '+A3+' '+A4+' '+A5+' '+A6+' '+A7+' '+A8+' ');

تم تعديل هذه المشاركة بواسطة tahasit في 5 أغسطس 2009 في 22:20

986902102.jpg
#34

باذن الله

عزيزي :

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

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

*****

2_header.png

#35
اقتباس
بس ليه مش تستخدمو libmagic ؟

هذه خاصة بـ Linux .. فكيف لنا أن نستعملها في Windows أم أن هناك طريقة ما لذلك ؟

اقتباس
انا عملت واحد لباسكال كجزء من مشروع libmagicbindings

ذاك فقط تحويل للملف .h إلى pascal ...

#36

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

لقد أضفت فورم جديد للمشروع ليكون محرر Sig

لا حظ الصورة

post-145519-1249546105_thumb.png

العمل الذي قمت به لحد الآن هوإمكانية تعريف نوع جديد وإضافته بمجرد الضغط على الزر Add

إلى ملف قاعدة البيانات Sig

هل سنكمل المشروع في هذا السياق أم أننا سنتبع طريقة أخرى

File_Type_Get.rar

986902102.jpg
#37
اقتباس
هل سنكمل المشروع في هذا السياق أم أننا سنتبع طريقة أخرى

اخي طه بارك الله فيك سوف يكون لي رد على اظافتك ان شاء الله

سوف اضيف an overloaded loading file function تتعامل مع ملفات ال XML

يعني سوف نتمكن من استعمال ملفات ال xml و ملفات ال Txt وسوف نرى النتيجة ان شاء الله .

انتظر تدخل اخي ياسين .

عزيزي :

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

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

*****

2_header.png

#38

وددت إضافة نقطة حتى لا تحدث مشاكل مع البرنامج فيما بعد

يجب أن نضع في الحسبان مسألة الـ reuse (إعادة الإستخدام) ومسألة سهولة التطوير في المستقبل

مثلاً لو أردنا إضافة معلومة جديدة غير sig1,sig2 ... كيف سيتم ذلك؟ هل ستأخذ المسألة وقت كبيرلإضافة هذه المعلومة إلى كل فقرة بعد أن يكون لدينا قاعدة بيانات كبيرة يراد التعديل فيها..

قد تكون هناك أشياء اخرى لا تحضرني الآن

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

#39

شيئ جميل أخي ياسين أن تفكر في هذا منذ الآن

وإن خطر ببالك أية معلومة يمكن أن تضاف لتعزيز معلومات الملف المعالج فالرجاء الإشارة لها الآن

ولدي سؤال أيضا :

كيف يمكن أن نقرأ جزء معين فقط من سطر ما في مستند نص؟

986902102.jpg
#40
اقتباس
مثلاً لو أردنا إضافة معلومة جديدة غير sig1,sig2 ... كيف سيتم ذلك؟ هل ستأخذ المسألة وقت كبيرلإضافة هذه المعلومة إلى كل فقرة بعد أن يكون لدينا قاعدة بيانات كبيرة يراد التعديل فيها..

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

اذا كنت تقصد اظافة حقل في قاعدة البيانات فهذا بالطبع لايتم الابعد اظافته الى ال FTG برمجيا

وهذا مايسمى بال Upgrade او ال Update لاي برنامج .

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

كما قال اخي طه

اقتباس
وإن خطر ببالك أية معلومة يمكن أن تضاف لتعزيز معلومات الملف المعالج فالرجاء الإشارة لها الآن

اخي ياسين يجب على المبرمج ان يرى بعينين :

عين المبرمج و عين المستعمل وانت تعلم مادى البون الشاسع بينهما .

**

اذا كان اي حقل نريد ان نزيده فاليكون من الان .

حسب رائ سوف نوقف برمجة ال FTG حتى ننهي هاته النقطة

ماراي اخي طه و ياسين ؟

الان سؤال اخي طه :

اقتباس
كيف يمكن أن نقرأ جزء معين فقط من سطر ما في مستند نص؟

يمكنك استعمال ال CommaText (,) مع ال TStringList .. وبعد ذلك تقراء و تستعمل ال Elements من ال TStringList .

و الله المستعان

عزيزي :

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

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

*****

2_header.png

#41

فيما يخص سؤالك هل نستمر أم لا في FTG أنا من رأيي أن نستمر ولكن ننتظر رد الأخ الكريم ياسين

أنت تعلم أخي محمد لما سألت عن كيفية قراءة سطر وتقسيمه أليس كذلك؟

986902102.jpg
#42

اخي طه لا كان جوابي عام , هل كان يجب ان افهمها بطرقة اخرى اخي طه ؟

عزيزي :

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

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

*****

2_header.png

#43

لا أخي محمد جوابك يفي بالغرض وإنما أردت أن أشاركك الفكرة

بخصوص SIG:

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

أما في حالة التعديل على معلومات الملف المخزنة في قاعدة المعطيات فإننا نحتاج إلى إظهار معلومات الملف مقسمة على 13 إديت الموجودة في محرر Sig

ومن ثمة إضافة أو حذف ما يلزم

986902102.jpg
#44

اخي طه اظن اننا سنتوجه لاستعمال ملفات ال xml كقاعدة بيانات

مارئك في ذلك و هل تقترح اظافة حقول جديدة ؟

عزيزي :

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

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

*****

2_header.png

#45

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

فيما يخص قاعدة البيانات على بركة الله أخي محمد نستعمل XML

فيما يخص حقول جديدة لدي أقتراح :

كما تعلم أخي محمد أن هناك بعض الملفات التي تكون محمية فما رأيك أن نضيف حقل يخبرنا إذا كان على الملف حماية أم لا

986902102.jpg
#46

على بركة الله

عزيزي :

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

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

*****

2_header.png

#47

هل سيكون هناك تغيير كبير في الدوال

986902102.jpg
#48

باذن الله لن يكون تغيير كبير في الدوال بل ساقوم بال Adaptation فقط

ثم استعمال ملفات ال txt سيبقى كما هو و لكن ساضيف فقط دالة اخرى تستعمل ملفات ال XML

يعني يمكن استعمال ملفات ال txt و ملفات XML بالاختيار .

عزيزي :

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

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

*****

2_header.png

#49

إذن سنكمل محرر Sig بشكله الحالي

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

نسيت أن أضيف:

خيار إستعمال قاعدة البيانات كملف نص أو xml شيئ رائع أخي محمد ( كما قلت في البداية سنتعلم الكثير والكثير من هذا المشروع ) بارك الله فيك أستاذي محمد

تم تعديل هذه المشاركة بواسطة tahasit في 7 أغسطس 2009 في 22:20

986902102.jpg
#50

تفضل اخي طه :

procedure TForm1.Button1Click(Sender: TObject);
var
 Strs, buffer : TStringList;
 i:integer;
begin Strs := TStringList.Create;
 buffer := TStringList.Create;
 Try
 Strs.LoadFromFile('sig.txt');
 for i := 0 to Strs.Count -1 do begin if (Strs <> '') and (Strs[1] <> '/') then begin buffer.CommaText:=Strs;
 // buffer[0] ---> Sig1
 //buffer[1] ----> Sig2
 // buffer[2] ----> Sig3
 //......etc
 edit1.Text:=buffer[0];

 end;
 end;
  finally
    buffer.Free;
    Strs.Free;
  end;
end;

عزيزي :

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

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

*****

2_header.png

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