![]() |
|
معرفة إذا كان الملف نصي ام لا - نسخة قابلة للطباعة +- 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 . |