delphi4arab منتديات دلفي للعرب
احصاء الحروف العربية - نسخة قابلة للطباعة

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



احصاء الحروف العربية - said14 - 01-06-2018

السلام عليكم ورحمة الله تعالى وبركاته
رمضان مبارك للجميع
هل فيه امكانية باستعمال الديلفي لاحصاء الحروف العربية مع الحركات كل على حدى في نص معين


RE: احصاء الحروف العربية - said14 - 02-06-2018

رجاءا اين انتم
وجدت برنامج هنا ، لكنه يحسب عدد الاحرف فقط
لكنني اريد ان احسب كل حرف على حدى
ربي يجازيكم


RE: احصاء الحروف العربية - Delphi4Us - 02-06-2018

[size=small]السلام عليكم ورحمة الله تعالى وبركاته[/size]

PHP كود :
var
 
i  : integer;
 
s2 : string;
begin
 s2 
:= '';
 for 
i := 1 to Length( s ) do
 
begin
   ShowMessage 
(s[ i ])  ;
 
end;
end; 



RE: احصاء الحروف العربية - Agmcz - 04-06-2018

السلام عليكم
استخدم جدول الحروف العربية
فمثلا الحرف "ض" يساوي القيمة h0636 بنظام ترميز يونيكود

مثال للإستخدام
الجدول غير كامل فيه الحروف والرموز كما ذكرت...

PHP كود :
const
 
 // Arabic Unicode Character Table
 
 AUCTable: array[0..49] of Word = (
 
   $0621, $0622, $0623, $0624, $0625, $0626, $0627, $0628,
 
   $0629, $062A, $062B, $062C, $062D, $062E, $062F, $0630,
 
   $0631, $0632, $0633, $0634, $0635, $0636, $0637, $0638,
 
   $0639, $063A, $063B, $063C, $063D, $063E, $063F, $0640,
 
   $0641, $0642, $0643, $0644, $0645, $0646, $0647, $0648,
 
   $0649, $064A, $064B, $064C, $064D, $064E, $064F, $0650,
 
   $0651, $0652);

procedure TForm1.Button1Click(Sender: TObject);
var
 
 I: Byte;
begin
  for I 
:= 0 to 49 do
 
   Memo1.Lines.Add(WideChar(AUCTable[I]));
end; 



RE: احصاء الحروف العربية - said14 - 06-06-2018

السلام عليكم
وتقبل الله منا ومنكم صالح الاعمال

مشكورين اخوتي اسف لانني لم افهم بسبب طول ابتعادي عن البرمجة نسيت اغلب الاوامر والاجراءات

لكن لتبسيط الرؤية مثلا عندي كلمة او نص "بسم الله الرحمن الرحيم "
يعطيني تكرارات كل حرف
عملت برنامج في الاكسل بسيط يعطي تكرارات كل حرف في خانة معينة لكن اريد الكيفية عن طريق الدلفي
وجزاكم الله خير الجزاء


RE: احصاء الحروف العربية - Agmcz - 06-06-2018

وعليكم السلام
يمكنك التوضيح أكثر
هل تبحث عن تكرار الحروف في الجملة كاملة؟


RE: احصاء الحروف العربية - said14 - 10-06-2018

(06-06-2018, 11:50 PM)Agmcz كتب : وعليكم السلام
يمكنك التوضيح أكثر
هل تبحث عن تكرار الحروف في الجملة كاملة؟
رمضان كريم
نعم أخي
مثلا "بسم الله الرحمان الرحيم "
ا=4، ب=1 ، س=1   ..... الخ


RE: احصاء الحروف العربية - Agmcz - 11-06-2018

هذا مثال يجسد الفكرة
يفضل أن تستخدم نسخة دلفي تدعم يونيكود يعني النسخ من Delphi 2009 فما فوق

PHP كود :
const
 
 // Arabic Unicode Character Table
 
 AUCTable: array[0..41] of Word = (
 
   $0621, $0622, $0623, $0624, $0625, $0626, $0627, $0628,
 
   $0629, $062A, $062B, $062C, $062D, $062E, $062F, $0630,
 
   $0631, $0632, $0633, $0634, $0635, $0636, $0637, $0638,
 
   $0639, $063A, $063B, $063C, $063D, $063E, $063F, $0640,
 
   $0641, $0642, $0643, $0644, $0645, $0646, $0647, $0648,
 
   $0649, $064A);

const
 
 ws = 'بسم الله الرحمان الرحيم';

function 
AUCTIndex(Value: Word): Byte;
begin
  Result 
:= Value mod $0621;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 
 I: Cardinal;
 
 ca: array[0..41] of Cardinal;
begin
  ZeroMemory
(@ca, 42 * SizeOf(Cardinal));
 
 for I := 1 to Length(ws) do
 
 begin
    if 
(Word(ws[I]) >= $0621) or (Word(ws[I]) <= $064A) then
      Inc
(ca[AUCTIndex(Word(ws[I]))]);
 
 end;
 
 for I := 0 to 41 do
 
   case ca[I] of
      1
..SizeOf(Cardinal): Memo1.Lines.Add(WideChar(AUCTable[I]) + ' = ' + IntToStr(ca[I]));
 
   end;
end; 

كما يمكنك لدعم Delphi 7 والنسخ الغير داعمة لليونيكود
تعديل الثابت في المثال السابق إلى

PHP كود :
 ws = WideString('بسم الله الرحمان الرحيم'); 

المثال يقوم بالتحقق من الحروف من ء إلى ي
بالتوفيق..

إصلاح المقارنة في مجال الأحرف

PHP كود :
const
 
 // Arabic Unicode Character Table
 
 AUCTable: array[0..41] of Word = (
 
   $0621, $0622, $0623, $0624, $0625, $0626, $0627, $0628,
 
   $0629, $062A, $062B, $062C, $062D, $062E, $062F, $0630,
 
   $0631, $0632, $0633, $0634, $0635, $0636, $0637, $0638,
 
   $0639, $063A, $063B, $063C, $063D, $063E, $063F, $0640,
 
   $0641, $0642, $0643, $0644, $0645, $0646, $0647, $0648,
 
   $0649, $064A);

const
 
 ws = 'بسم الله الرحمان الرحيم';

function 
AUCTIndex(Value: Word): Byte;
begin
  Result 
:= Value mod $0621;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 
 I: Cardinal;
 
 ca: array[0..41] of Cardinal;
begin
  ZeroMemory
(@ca, 42 * SizeOf(Cardinal));
 
 for I := 1 to Length(ws) do
 
 begin
    case Word
(ws[I]) of
      
$0621..$064A: Inc(ca[AUCTIndex(Word(ws[I]))]);
 
   end;
 
 end;
 
 for I := 0 to 41 do
 
   case ca[I] of
      1
..SizeOf(Cardinal): Memo1.Lines.Add(WideChar(AUCTable[I]) + ' = ' + IntToStr(ca[I]));
 
   end;
end; 



RE: احصاء الحروف العربية - said14 - 12-06-2018

بارك الله فيك