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 - 15-05-2009

حتى انا اقصد ascii files


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

إدن يمكنك إعتماد حل الأخ عبد العزيز ... .


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

لقد حلت المشكلة بإذن الله وسوف اطرح الكود لعلى و عسى يحتاجه احد في يوما ما :

كود :
Type TTxtFileType = (txTxtOrBin{Default}, txUTF8, // Utf-8 encoding txUNICODE, // Unicode ENCODING txUNIBIG // unicode Big endian ); TTxtFileSign = record Code : TTxtFileType; Sign : LongWord; Mask : LongWord; end; const TxtSignsCount = 3; TxtSign_UTF8 : TTxtFileSign = (Code: txUTF8; Sign:$00BFBBEF; Mask: $00FFFFFF); TxtSign_UNICODE : TTxtFileSign = (Code: txUNICODE; Sign:$0000FEFF; Mask: $FF00FFFF); TxtSign_UNIBIG : TTxtFileSign = (Code: txUNIBIG; Sign:$0000FFFE; Mask: $00FFFFFF); var TxtFileSigns : array[0..2] of TTxtFileSign = ( (Code: txUTF8; Sign:$00BFBBEF; Mask: $00FFFFFF), (Code: txUNICODE; Sign:$0000FEFF; Mask: $0000FFFF), (Code: txUNIBIG; Sign:$0000FFFE; Mask: $0000FFFF)); function TypeOfTextfile(const filename: string): TTxtFileType; var Target : TFileStream; Sign : LongWord; N : integer; begin Target := TFileStream.Create(FileName, fmOpenRead); try {# 1st With BOOM #} Target.Read(Sign, 4); finally Flux.Free; end; {# Default file is Ansi-encoding or Binary # } result := txTxtOrBin; for N := 0 to High(TxtFileSigns) do begin if (Sign and TxtFileSigns[N].Mask) = TxtFileSigns[N].Sign then begin result := TxtFileSigns[N].Code; break; end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin {# Op is an TOpenDialog # } if not op.Execute then exit; Case TypeOfTextfile(op.FileName) of txTxtOrBin:Label2.Caption:='Ansi-Encoding or a Binary File'; txUTF8:Label2.Caption:='UTF-8 encoding '; txUNICODE:Label2.Caption:='UNICODE encoding '; txUNIBIG:Label2.Caption:='UNIBIG encoding '; end; end;

**
محمد

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


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

mohfa كتب :اغلب الملفات الصية تملك BOM إلا ال Ansi-encoding files اعني ال Pure Text File .
Byte Order Mark بصمة في بداية الملف النصي حديثة حداثة اليونكود UNICODE
وقبل ذلك غير ممكن معرفة الملف النصي كما قلت سابقا الا بفحصه كليا

إقتباس :لقد حلت المشكلة بإذن الله وسوف اطرح الكود
الكود ماخوذ من
http://www.delphifr.com/codes/CONNAITRE-TYPE-FICHIER-TEXTE-BRUT-ANSI-UTF8-UNICODE_34491.aspx
وهو ناقص لانه يتفترض ان الملف نصي ان لم يجد بصمة Unicode



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

نعم اخي محمد وقد قمت ببعض الإظافات

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


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

فقط برنامج بسيط جد صغير الحجم مصمم بالدلفي يعتمد على الـ Api هدا كله للتجريب ... على أساس ماكنت أعتقد
بالنسبة للحل .


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

اذا قم به فيمكن ان يحتاجه البعض يوما ما .
وبارك الله فيك اخي tf6mehboul


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

بإدن الله عند الحاجة طبعا .


معرفة إذا كان الملف نصي ام لا - أبو محمد اللحياني - 01-01-2010

افتراض وجود البصمة لا بفلح دائماً

عندما حوّلت موقعي إلى تنسيق utf-8 استخدمت المحرر notepad++ وكنت لافهم معنى BOM فظهرت مشاكل في إرسال رؤوس الصفحات والتي معناها ارسال نصوص إلى المتصفح تسبق الرأس،
واحترت كثيراً فقلت في نفسي جرب الخيار [Encode UTF-8 without BOM] لكل صفحات قوالب الموقع، وبعدها توقفت المشاكل .

وأنا إلى هذه اللحظة لا أفهم معنى وجود هذه المشكلة مع وجود البصمة BOM .