المشاركات : 39
المواضيع 6
:
: 0
الإنتساب : Feb 2008
بسم الله الرحمن الرحيم
السلام عليكم ..
كيف يمكن عرض طول محتويات مكون 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,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
وعليكم السلام ورحمة الله
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;
بالتوفيق.
المشاركات : 39
المواضيع 6
:
: 0
الإنتساب : Feb 2008
جزاك الله خيراً أخي , لكن الكود يجب أن يكون بالشكل التالي (حيث انك لم تعين قيمة المتغير 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));