احصاء الحروف العربية
#1
السلام عليكم ورحمة الله تعالى وبركاته
رمضان مبارك للجميع
هل فيه امكانية باستعمال الديلفي لاحصاء الحروف العربية مع الحركات كل على حدى في نص معين
الرد
#2
رجاءا اين انتم
وجدت برنامج هنا ، لكنه يحسب عدد الاحرف فقط
لكنني اريد ان احسب كل حرف على حدى
ربي يجازيكم
الرد
#3
[size=small]السلام عليكم ورحمة الله تعالى وبركاته[/size]

PHP كود :
var
 
i  integer;
 
s2 string;
begin
 s2 
:= '';
 for 
:= 1 to Length) do
 
begin
   ShowMessage 
(s])  ;
 
end;
end
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • said14
الرد
#4
السلام عليكم
استخدم جدول الحروف العربية
فمثلا الحرف "ض" يساوي القيمة h0636 بنظام ترميز يونيكود

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

PHP كود :
const
 
 // Arabic Unicode Character Table
 
 AUCTable: array[0..49of 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(SenderTObject);
var
 
 IByte;
begin
  for I 
:= 0 to 49 do
 
   Memo1.Lines.Add(WideChar(AUCTable[I]));
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • said14
الرد
#5
السلام عليكم
وتقبل الله منا ومنكم صالح الاعمال

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

لكن لتبسيط الرؤية مثلا عندي كلمة او نص "بسم الله الرحمن الرحيم "
يعطيني تكرارات كل حرف
عملت برنامج في الاكسل بسيط يعطي تكرارات كل حرف في خانة معينة لكن اريد الكيفية عن طريق الدلفي
وجزاكم الله خير الجزاء
الرد
#6
وعليكم السلام
يمكنك التوضيح أكثر
هل تبحث عن تكرار الحروف في الجملة كاملة؟
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • said14
الرد
#7
(06-06-2018, 11:50 PM)Agmcz كتب : وعليكم السلام
يمكنك التوضيح أكثر
هل تبحث عن تكرار الحروف في الجملة كاملة؟
رمضان كريم
نعم أخي
مثلا "بسم الله الرحمان الرحيم "
ا=4، ب=1 ، س=1   ..... الخ
الرد
#8
هذا مثال يجسد الفكرة
يفضل أن تستخدم نسخة دلفي تدعم يونيكود يعني النسخ من Delphi 2009 فما فوق

PHP كود :
const
 
 // Arabic Unicode Character Table
 
 AUCTable: array[0..41of 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(ValueWord): Byte;
begin
  Result 
:= Value mod $0621;
end;

procedure TForm1.Button1Click(SenderTObject);
var
 
 ICardinal;
 
 ca: array[0..41of Cardinal;
begin
  ZeroMemory
(@ca42 SizeOf(Cardinal));
 
 for I := 1 to Length(ws) do
 
 begin
    if 
(Word(ws[I]) >= $0621) or (Word(ws[I]) <= $064Athen
      Inc
(ca[AUCTIndex(Word(ws[I]))]);
 
 end;
 
 for I := 0 to 41 do
 
   case ca[Iof
      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..41of 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(ValueWord): Byte;
begin
  Result 
:= Value mod $0621;
end;

procedure TForm1.Button1Click(SenderTObject);
var
 
 ICardinal;
 
 ca: array[0..41of Cardinal;
begin
  ZeroMemory
(@ca42 SizeOf(Cardinal));
 
 for I := 1 to Length(ws) do
 
 begin
    case Word
(ws[I]) of
      
$0621..$064AInc(ca[AUCTIndex(Word(ws[I]))]);
 
   end;
 
 end;
 
 for I := 0 to 41 do
 
   case ca[Iof
      1
..SizeOf(Cardinal): Memo1.Lines.Add(WideChar(AUCTable[I]) + ' = ' IntToStr(ca[I]));
 
   end;
end
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 3 users say قال شكرا ل Agmcz على المشاركة المفيدة
  • bassem_43, ferrero, said14
الرد
#9
بارك الله فيك
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف