delphi4arab منتديات دلفي للعرب

نسخة كاملة : معرفة إذا كان الملف نصي ام لا
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
حتى انا اقصد ascii files
إدن يمكنك إعتماد حل الأخ عبد العزيز ... .
لقد حلت المشكلة بإذن الله وسوف اطرح الكود لعلى و عسى يحتاجه احد في يوما ما :

كود :
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;

**
محمد

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

إقتباس :لقد حلت المشكلة بإذن الله وسوف اطرح الكود
الكود ماخوذ من
http://www.delphifr.com/codes/CONNAITRE-...34491.aspx
وهو ناقص لانه يتفترض ان الملف نصي ان لم يجد بصمة Unicode
نعم اخي محمد وقد قمت ببعض الإظافات

واظن ان هذا هو الحل الذي سوف اعتمد عليه
فقط برنامج بسيط جد صغير الحجم مصمم بالدلفي يعتمد على الـ Api هدا كله للتجريب ... على أساس ماكنت أعتقد
بالنسبة للحل .
اذا قم به فيمكن ان يحتاجه البعض يوما ما .
وبارك الله فيك اخي tf6mehboul
بإدن الله عند الحاجة طبعا .
افتراض وجود البصمة لا بفلح دائماً

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

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