Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama C++ Builder FindDialog ile Dosyada Kelime Arama


FindDialog ile Dosyada Kelime Arama

AÇIKLAMA

C++ Builder 6 ile uyumludur. Bu projemizde öncelikli olarak OpenDialog yardımıyla bilgisayar üzerinden bir dosya açılır. Daha sonra Ctrl+F tuş bileşimi kullanılarak FindDialog yardımıyla dosya üzerinde istanilen bir kelimenin aranması işlemi gerçekleştirilir. Form üzerinde bu tuş bileşiminin çalışması için Form'un KeyPreview özelliğinin true olması gerektiğini hatırlatmakta fayda var. Daha aranılan tamamen eşleşme veya büyük küçük harf farkı olmadan aranılır. Eğer bulunamazsa aranan ifade bulunamadı tarzında bir sonuç döndürür, eğer bulunursa kelimenin bulunduğu yer Memo kontrolü içerisinde seçilir. Seçimin yapılabilmesi için Memo1 nesnesinin HideSelection özelliği false yapılmalıdır. Arama işlemlerinde aşağı ve yukarı gibi iki seçenek bulunmaktadır projede aktif değillerdir fakat arama işlemi sırasında bulunan noktaların bir dizi veya ListBox içerisinde saklanması suretiyle aşağı ve yukarı arama işlemleri basit bir şekilde halledilebilir. 


Programın Tamamını Aşağıdaki Linkten İndirebilirsiniz

Linki Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

Program Kodu:

  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. //---------------------------------------------------------------------------
  8. #pragma package(smart_init)
  9. #pragma resource "*.dfm"
  10. TForm1 *Form1;
  11. String onceki="";
  12. //---------------------------------------------------------------------------
  13. __fastcall TForm1::TForm1(TComponent* Owner)
  14.         : TForm(Owner)
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18.  
  19. void __fastcall TForm1::Button1Click(TObject *Sender)
  20. {
  21. if(OpenDialog1->Execute())
  22. Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
  23. }
  24. //---------------------------------------------------------------------------
  25.  
  26. void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
  27.       TShiftState Shift)
  28. {
  29. if((Shift==(Shift<<ssCtrl))&&(Key==70))
  30. FindDialog1->Execute();
  31. }
  32. //---------------------------------------------------------------------------
  33. void __fastcall TForm1::FindDialog1Find(TObject *Sender)
  34. {
  35. static int yer=0,adet=0;
  36. AnsiString s,f;
  37. f=FindDialog1->FindText;
  38. if(f!=onceki)
  39. {
  40. yer=0;
  41. adet=0;
  42. }
  43. s=Memo1->Text.SubString(yer+1,Memo1->Text.Length());
  44. if(FindDialog1->Options.Contains(frMatchCase))
  45. {
  46.  f=f.UpperCase();
  47.  s=s.UpperCase();
  48.  
  49. }
  50. int b=s.Pos(f);
  51. yer+=b;
  52. if(b==0)
  53. {
  54.  if(adet==0)
  55.  ShowMessage("Aranan İfade Bulunamadı");
  56.  else
  57.  {
  58.  adet=0;
  59.  yer=0;
  60.  ShowMessage("Arama Tamamlandı");
  61.  }
  62. }
  63. else
  64. {
  65. adet++;
  66. Memo1->SelStart=yer-1;
  67. Memo1->SelLength=f.Length();
  68. }
  69. onceki=f;
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TForm1::FormCreate(TObject *Sender)
  73. {
  74. Memo1->HideSelection=false;
  75. }
  76. //---------------------------------------------------------------------------
Yorumlar (0)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Pazartesi, 03 Eylül 2012 15:38 )