الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تفكيك الجمل strings باستخدام Parser

مغلق
بدأه madi في 31 يناير 2002 · 4 رد · 1,183 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام

يوجد في الدلفى كلاس يسمى TParser ,

يقوم Parser بتفكيك الجمل ,الى مجموعة كلمات Token

اليك البرنامج البسيط التالي , فقط ضع زر على الفورم ,

اكتب الاجراء التالي و الذي يقوم بتفكيك الجملة MyStr الى مجموعة كلمات :

[l]

procedure ParseThis(MyStr: String);

var

 MyParser: TParser;

 MS: TMemoryStream;

begin

 MS := TMemoryStream.Create;

 MS.Position := 0;

 MS.Write(MyStr[1], Length(MyStr));

 MS.Position := 0;

 MyParser := TParser.Create(MS);

 MyStr := MyParser.TokenString;

 ShowMessage(MyStr);

 while MyParser.Token <> toEOF do

 begin

   MyParser.NextToken;

   if MyParser.TokenSymbolIs(MyParser.TokenString) then

   begin

     MyStr := MyParser.TokenString;

     ShowMessage(MyStr);

   end;

 end;

 MyParser.Free;

 MS.Free;

end;

[/l]

وفي الزر قم باستدعاء الاجراء السابق كالتالي :

[l]

procedure TForm1.Button1Click(Sender: TObject);

begin

 ParseThis('This is Test of The Parser in Arabteam2000');

end;

[/l]

وشكرا

#2

وحشتني يا مادي :'(

لقد جربت الكود السابق ولكن لا يعمل مع الجمل العربية.

مثلاُ وضعت 'بسم الله الرحمن الرحيم' ولكن لا يعطيني إلا 'ب'

فهل هناك حل لهذه المشكلة أو كلاس آخر يعمل مع العربي

ولكم جزيل الشكر .(f)

#3

يا أبو محمد جرب هذا الكود وأدعيلي

:D

procedure TForm1.Tock(TC:string;Sender: TObject);

var Cou,g:integer;ء

begin

g:=0;

for cou:=1 to length(Tc) do

if (tc[cou]=' ')and(tc[Cou+1]<>' ') then

inc(g);ة

if tc[length(tc)]<>' ' thenص

Label3.Caption:='عدد كلمات هذا الأسم = '+inttostr(g+1)+' كلمة'

else

Label3.Caption:='عدد كلمات هذا الأسم = '+inttostr(g)+' كلمة';

end;

#4

جزاك الله خيراً أخي صلاح الدين هذا الكود

لقد ذكرتني بموضوع قديم

لقد سألت عنه في المنتدى KDtools

http://www.kdtools.net/forum/viewtopic.php?t=301

وستجد كوداً مطولاً

أشكرك على تجاوبك

#5

ولهذا تأسس هذا المنتدى ;)

هذا الموضوع مغلق.

مواضيع مشابهة