البحث عن كلمة في عنصر memo
#1
السلام عليكم
أنا الأن يصدد تعلم كيفية البحث عن كلمة بواسطة الدلفي و بدأت بكيفية عمل برنامج بسيط يقوم بالبحث عن كلمة في عنصر المفكرة و عندما يجد الكلمة يقوم بتحديدها بحثت في افنترنت عن الطريقة فوجدت أحد الإخوة وضع كود سورس لهذا البرنامج لكن للأسف لم لفهمه و بالتالي قلت لنفسي لما لا اضعه هنا في المنتدى كي يقوم بعض الأخوة شرحه لي من فضلكم فأنا بحاجة ماسة لفهم هذا الكود
الكود موجود في الصورة

كود :
http://img102.herosh.com/2011/09/06/688964853.jpg
الرد
#2
انسخ الكود واعرضة وليس صورة
تحياتي
الرد
#3
PHP كود :
var i:LongInt;
    
TextFind:string;
begin
  
for i := 0 to Length(Memo1.Lines.Text) - 1 do
  
begin
    TextFind 
:= Copy(Memo1.Lines.Text, i, Length(edit1.Text));
    if 
TextFind = edit1.Text then
    begin
      Memo1
.SetFocus;
      
Memo1.SelStart  := i - 2;
      
Memo1.SelLength := Length(edit1.Text)+1;
      break;
    
end;
  
end;
end; 
[-] كل من 1 user says قال شكرا ل phpbb3 على المشاركة المفيدة
  • ع الحليم
الرد
#4
و عليكم السلام ورحمة الله
أنظر هذا الموضوع أخيSmile
البحث في TMemo
http://www.delphi4arab.net/forum/showthr...p?tid=2584
الرد
#5
ها هو الكود اخي cargem علما ان البرنامج يحتو فقط على زر و عنصري memo و edit

PHP كود :
var
posm,posl,i,j : integer;
trouv:boolean;
begin
trouv
:=false;
for 
i:=0 to memo1.lines.count do
begin
posl
:=pos(edit1.text, memo1.lines[i]);
if 
posl<> o then
begin
posm
:=0;
for 
j :=0 to i -1 do 
posm:= pos + length(memo1.lines[j]);

posm:=posm +(i*2);
posm:=posm+ posl-1;
memo1.setfocus;
memo1.selstart:=posm;
memo1.sellength:=length(edit1.text);
trouv:=true;
messagebeep(0);
break;
end;
end;
if 
trouv= false then
showmessage
('word not found');
messagebeep(0);
end; 
الرد
#6
كود :
var posm,posl,i,j : integer; trouv:boolean; begin trouv:=false; for i:=0 to memo1.lines.count do begin posl:=pos(edit1.text, memo1.lines[i]); الخطأ // [color=Red]if posl<> o then[/color] begin posm:=0; for j :=0 to i -1 do posm:= pos + length(memo1.lines[j]); posm:=posm +(i*2); posm:=posm+ posl-1; memo1.setfocus; memo1.selstart:=posm; memo1.sellength:=length(edit1.text); trouv:=true; messagebeep(0); break; end; end; if trouv= false then showmessage('word not found'); messagebeep(0); end;

الاصح

PHP كود :
if posl<> 0 then 
الرد
#7
أود فقط شرح لهذا الكود
الرد
#8
من فضلك وضح الذي لم تفهمه بالضبط
على العموم الكود فيه بعض الاخطاء

PHP كود :
for i:=0 to memo1.lines.count do 

الاصح

PHP كود :
for i:=0 to memo1.lines.count -1 do 
الرد
#9
كود :
var posm, posl, i, j: integer; trouv: boolean; begin trouv := false; for i := 0 to Memo1.lines.count do // هنا تحسب عدد الاسطر begin { posl = search in line } posl := pos(Edit1.text, Memo1.lines[i]); { edit1.text تعبر عن الكلمة المراد البحث عنها في السطر المحدد ب memo1.lines[i] واذا وجدها فأنه يرجع قيمة عددية ثمتل رقم الحرف الاول من الكلمة الموجودة في السطر على ان يكون الترقيم من العدد 1 } if posl <> 0 then { طبعا ضروري الاختبار في حالة وجدت الكلمة } begin { posl = يحدد اول الكلمة } // posm := 0; { posm = } // for j := 0 to i - 1 do // // posm := posl + length(Memo1.lines[j]); // // posm := posm + (i * 2); // posm := posm + posl - 1; Memo1.setfocus; // يحدد بالتظليل Memo1.selstart := posl -1 ; Memo1.sellength := length(Edit1.text); trouv := true; (* Switch ON *) messagebeep(0); break; // go out from loop end; end; if trouv = false then showmessage('word not found'); messagebeep(0); end;
الرد
#10
المشكلة تكمن عندما يكون اكثر من كلمة في النص
دائما سيشر الى اول كلمة يجدها
الرد


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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم