عرض عدد الأحرف في TRichEdit
#1
بسم الله الرحمن الرحيم

السلام عليكم ..

كيف يمكن عرض طول محتويات مكون TRichEdit باستثناء الأسطر ؟

انا مثلا استخدمت الكود التالي :

كود :
label1.Caption := 'text length: ' + inttostr(length(richedit1.text));

وعند كتابة الأسطر التالية في TRichEdit
1
2
3
4
ينتج في أداة Label القيمة 10
لاحظت هنا انه يعرض قيمة = (عدد الأسطر × 3) - 2 .
مثلاً : ((4 × 3) -2) = 10

وعند كتابة :
1
22
333
44
ينتج في أداة Label القيمة 14
هنا عرض قيمة = ((عدد الأسطر × 3) - 2) + (عدد الأرقام التي في كل سطر - 1) .
مثلاً : ((4 × 3) - 2) + ((1-1)+(2-1)+(3-1)+(2-1)) = 14

فهل هناك دالة لاستخراج عدد المحارف في أداة TRichEdit ??؟
الرد
#2
وعليكم السلام ورحمة الله
Length تعيد عدد المحارف وكذلك الدالة GetTextLen أسهل للاستعمال:
PHP كود :
ShowMessage(IntToStr(RichEdit1.GetTextLen)); 
غاية ما في الأمر هو أن كل سطر ينتهي برمز المرور إلى السطر الموالي (يعني رمز الزر Enter وهو 13#)
وبالتالي تحسب = (عدد الأحرف + رمز الانتقال للسطر الموالي) لكل سطر
وإذا لم يكن للسطر سطر آخر يليه، فلا يوجد إذا رمز 13#
مع التنبيه أن الفراغ يحسب حرفا أيضا.
وبالتالي إذا أردت عدد المحارف فما عليك إلا أن تحسب الإجمالي وتطرح من كل سطر 1، ما عدا السطر الأخير، مع حذف الفراغ، يمكنك الاستعانة بـ Trim.
أو تكتب شيء مثل:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
  
i, Len: Integer;
begin
  
for i := 0 to RichEdit1.GetTextLen do
    if 
UpCase(RichEdit1.Text[i]) in ['A'..'Z'] then
      Inc
(Len);
  
ShowMessage(IntToStr(Len));
end; 
بالتوفيق.
الرد
#3
جزاك الله خيراً أخي , لكن الكود يجب أن يكون بالشكل التالي (حيث انك لم تعين قيمة المتغير Len المبدئية) :

كود :
var i, Len: Integer; begin Len := 0 ; for i := 0 to RichEdit1.GetTextLen do if UpCase(RichEdit1.Text[i]) in ['A'..'Z'] then Inc(Len); ShowMessage(IntToStr(Len));
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم