delphi4arab منتديات دلفي للعرب
معرفة إذا كان الملف نصي ام لا - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : معرفة إذا كان الملف نصي ام لا (/showthread.php?tid=885)

الصفحات: 1 2


معرفة إذا كان الملف نصي ام لا - mohfa - 12-05-2009

السلام عليكم ورحمة الله و بركاته .
ما هي كيفية معرفة إذا كان الملف نصي ام لا اقصد ASCII اعني ملف نصي عادي .
يعني مثلا لمعرفة إذا كان الملف UTF8 استطيع قراءة ال ' First Bytes ' BFBBEF .
لمعرفة اذا كان الملف UNICODE استطيع قراءة ال ' First Bytes ' FEFF
ولمعرفة اذا كان الملف UNIBIG استطيع قراءة ال ' First Bytes ' FFFE
والخ .
المشكلة كيف يمكن معرفة اذا كان الملف نصي Pure ASCII File فهو لا يملك BOM ولا Fixed First Bytes .
اعلم انني يمكن ان احسب عدد ال F Bytes فيه فاذا تعدى ال 50 في Offset واحدة فهو Pure ASCII File .

هل من طريقة اخرى انجع واصح ؟؟؟

بارك الله فيكم


محمد


معرفة إذا كان الملف نصي ام لا - TF6M - 15-05-2009

كيف تريد طريقة تحديد نوع الملفات ؟؟ قصدي على أي أساس ... المهم هدا مثال ,,

كود :
uses ShellAPI; function MrsGetFileType(const strFilename: string): string; var FileInfo: TSHFileInfo; begin FillChar(FileInfo, SizeOf(FileInfo), #0); SHGetFileInfo(PChar(strFilename), 0, FileInfo, SizeOf(FileInfo), SHGFI_TYPENAME); Result := FileInfo.szTypeName; end; // Beispiel: // Example: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('File type is: ' + MrsGetFileType('c:\autoexec.bat')); end;

****ا أن يفيدك ؟؟.


معرفة إذا كان الملف نصي ام لا - mohfa - 15-05-2009

شكرا عزيزي tf6mehboul هكذا كله اعرفه .
مثالك يرجع نوع الملف txt file ..... الخ .
انا اصلا اعتمد على الملفات النصية يعني لك المشكلة ليست هنا ,
سوف اوضح لك انشئ ملف نصي جديد عند الحفظ اختر ال Encoding واختر مثلا UTF-8 بعد ذلك حاول فتح الملف باي Hex editor ولحظ البيتات الاولى سوف تجدها BFBBEF ......
سؤالي هو كيفية عرفة هل الملف النصي هو Ansi-Encoding اعني Plain text File , اعني و كانك تحفظ ملف نصي عادي .


معرفة إذا كان الملف نصي ام لا - TF6M - 15-05-2009

يا أخي العزيز ... :

1- إن كنت تريد معرفة نوع الملف إنطلاقا من بنيته (Stream/bin) فهدا حسب رأي الخبراء غير إحترافي لأنه هناك ما يعرف بـ :
- التشويش على نقطة البداية .
- حقن بصمة مخالفة عن الأصلية أو إستبدالها في الملف (غالبا في pe) .
(بالطبع هناك طرق أخرى .......)

2- إدا كنت تريد جمع نقاط أو بيتات البداية لجميع أنواع الملفات ووضعها مثلا في : Unit و دمجها بالبرنامج و عمل مقارنة
مع بايت البداية للملف الحالي لإرجاع النوع ممكن أساعدك ؟؟.

3- مجرد رأي + رأي خبير أعرفه ممكن لم أوضح الفكرة جيدا.


معرفة إذا كان الملف نصي ام لا - محمد عبد العزيز - 15-05-2009


لا توجد طريقة مظمونة 100% لمعرفة انه ملف نصي من المحتوى فقط (دون النظر للاحقة)
يمكن ان تفحصه كله حرفا حرفا byte by byte وتقارن القيم
فان وجدتها بمجال قيم Ascii القابلة للطباعة تقول انه نصي
غير ذلك فهو شي اخر
مع ذلك فهذا غير صحيح دائما فهناك من استطاع تحويل ملف تنفيذي لكي يظهر نصي لكنه قابل للتنفيذ بلاحقة .COM مرفق مثال لمبرمج من تايوان

والسلام عليكم



معرفة إذا كان الملف نصي ام لا - mohfa - 15-05-2009

شكرا عزيزي tf6mehboul
انا لااتكلم عن ملفات ال PE انا اتكلم عن ملفات نصية Text Files اعني ACSII files
هل رائت يوما ملف نصي Obfuscated لا اظن ذلك .

اظن ان الفكرة وصلت لك


معرفة إذا كان الملف نصي ام لا - mohfa - 15-05-2009

اخي محمد اغلب الملفات الصية تملك BOM إلا ال Ansi-encoding files اعني ال Pure Text File .
استطيع ان اعف اذا كان Utf-8 او Unicode اوbig end Unicode

المشكلة في ال Ansi-encoding - Plain Text File


معرفة إذا كان الملف نصي ام لا - TF6M - 15-05-2009

ممكن و لو بنسبة قليلة.. فالأخ عبد العزيز أجاب و أفاد .

بالتوفيق لك و لبرنامج البتار ,,


معرفة إذا كان الملف نصي ام لا - mohfa - 15-05-2009

هذا مثال

كود :
const UnicodeFl = #$FEFF; //--<<< Fist Bytes --->>> var C :WideChar; begin try Stream.Read(C, 2); Unicode := C = UnicodeFileTag; // File Is Unicode Encoding except Unicode := FALSE; end;



معرفة إذا كان الملف نصي ام لا - TF6M - 15-05-2009

mohfa كتب :شكرا عزيزي tf6mehboul
انا لااتكلم عن ملفات ال PE انا اتكلم عن ملفات نصية Text Files اعني ACSII files
هل رائت يوما ملف نصي Obfuscated لا اظن ذلك .

اظن ان الفكرة وصلت لك

في ما يخص نوع الملف انا لا اتكلم عن الملفات التي لها الاحقة : Txt بل الملفات التي تعتمد في بنيتها
على Lines ؟؟ .