![]() |
|
معرفة إذا كان الملف نصي ام لا - نسخة قابلة للطباعة +- 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 في ما يخص نوع الملف انا لا اتكلم عن الملفات التي لها الاحقة : Txt بل الملفات التي تعتمد في بنيتها على Lines ؟؟ . |