delphi4arab منتديات دلفي للعرب
عرض عدد الأحرف في TRichEdit - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : عرض عدد الأحرف في TRichEdit (/showthread.php?tid=1051)



عرض عدد الأحرف في TRichEdit - Delphawi - 13-07-2009

بسم الله الرحمن الرحيم

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

كيف يمكن عرض طول محتويات مكون 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 ??؟



عرض عدد الأحرف في TRichEdit - kachwahed - 13-07-2009

وعليكم السلام ورحمة الله
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; 
بالتوفيق.



عرض عدد الأحرف في TRichEdit - Delphawi - 14-07-2009

جزاك الله خيراً أخي , لكن الكود يجب أن يكون بالشكل التالي (حيث انك لم تعين قيمة المتغير 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));