word belgesinde arama nasıl yapabilirim.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

word belgesinde arama nasıl yapabilirim.

Mesaj gönderen y.kulac »

s.a.

arkadaşlar Edit1 e yazılan bir kelime yada kelimeleri, kullanıcının belirleyebileceği bir klasörde bulunan word belgelerinde arama yaptırmak istiyorum. eşleşen kelime bulunan dosya ismlerini bir listbox a almak istiyorum. bu işi nasıl yapabilirim. nasıl bir mantık ve algoritma uygulamalıyım.

iyi çalışmalar dilerim.
yetnot
Üye
Mesajlar: 27
Kayıt: 06 Ağu 2006 01:38

Merhaba Yasin Bey

Mesaj gönderen yetnot »

Merhaba Yusuf Bey benim için forum sayfasına koyduğunuz konu başlığına başka bir arkadaşımın cabalarıyla bulunan bu kodlarla cevab verilebilir...Listbox'a ekleme ile editden text alma işlemini yapabilir kod satırına ekleme yapabiliriz..Bu cevabı bir daha benim gibi arama yapıp bulamayan arkadaşlarım için veriyorum faydalansınlar diye Herkeze kolay gelsin

Kod: Tümünü seç

var
  WordApp   : OleVariant;
  Range     : OleVariant;
  PosFound  : Integer;
begin
  PosFound := 0;
  // Uses ComObj;
  WordApp  := CreateOleObject('Word.Application');
  WordApp.Visible := True;
  Wordapp.documents.open(ExtractFilePath(Application.ExeName)+'deneme.doc');
  Range := WordApp.Documents.Item(1).Range;
  Range.Find.ClearFormatting;
  Range.Find.Text := 'Aranacak Kelime';
  Range.Find.Execute;

  if not Range.Find.Found then
    WordApp.ActiveDocument.Close
  else begin
    PosFound := Range.Start;
    WordApp.ActiveDocument.Close;
  end;
  WordApp.Quit;
  ShowMessageFmt('Bulunan Konum = %d', [PosFound]);
end;
Sanırım yeterince açık forum yöneticilerine teşekkürler

Not: Kodların okunaklı olması için [ code ] [ /code ] etiketleri/tag ları içinde yazalım :idea:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Paylaşımınız için teşekkürler :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Foruma hoşgeldin.. :)
Resim
Resim ....Resim
secret_boy
Üye
Mesajlar: 151
Kayıt: 17 Kas 2005 04:46

Mesaj gönderen secret_boy »

Paylaşımınız için teşekkürler
yetnot
Üye
Mesajlar: 27
Kayıt: 06 Ağu 2006 01:38

ARKADASLAR TAM OLARAK VERIYORUm

Mesaj gönderen yetnot »

Arkadaslar editten bir text girilerek word dosyasında text arama yapan ve buldugu word dosyalarini tableye kayıt eden dbgridde gosteren ve dbgridde tıklandıgında word dosyasını ekrana getiren kod asagıda...bır dbgırd bır datasource bır table1 bır edit bir button...tableye ve dbgride ve datasourceye gereklı baglantılarınızı yaptıkdan sonra gerıye ıstedıgınız dosyanın ıcındekı word dosyalar ıcerısınde arama yaptırabılırsınız herkeze kolay gelsın arkadaslar...

Kod: Tümünü seç

//word dosyasını kaldırma*************
    function KillTask(Dosyadi: string): integer;
    const
    PROCESS_TERMINATE=$0001;
    var
    devam: BOOL;
    fyakhandle: THandle;
    islem32: TProcessEntry32;
    begin
    result := 0;
    fyakhandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    islem32.dwSize := Sizeof(islem32);
    devam := Process32First(fyakhandle,islem32);
      while integer(devam) <> 0 do
      begin
        if ((UpperCase(ExtractFileName(islem32.szExeFile)) =
             UpperCase(Dosyadi))
         or (UpperCase(islem32.szExeFile) =
             UpperCase(Dosyadi))) then
          Result := Integer(TerminateProcess(OpenProcess(
                            PROCESS_TERMINATE, BOOL(0),
                            islem32.th32ProcessID), 0));
        devam := Process32Next(fyakhandle,islem32);
      end;
      CloseHandle(fyakhandle);
    end;

      //**************************
////baslıyoruz:)
procedure TForm1.Button1Click(Sender: TObject);
 var
	TitleName ,a: string;
	lpItemID : PItemIDList;
	BrowseInfo : TBrowseInfo;
	DisplayName : array[0..MAX_PATH] of char;
	TempPath : array[0..MAX_PATH] of char;
 bulunan:TSearchRec;
 dosya:String;
 WordApp   : OleVariant;
  Range     : OleVariant;
  PosFound  : Integer;
begin
//BURASI DOSYANIN YERINI GOSTERMEK ICIN GEREKLI
    FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
    BrowseInfo.hwndOwner := Form1.Handle;
    BrowseInfo.pszDisplayName := @DisplayName;
    TitleName := 'Lütfen bir klasör seçin';
    BrowseInfo.lpszTitle := PChar(TitleName);
    BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
    lpItemID := SHBrowseForFolder(BrowseInfo);
    if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    a:=TempPath;
    GlobalFreePtr(lpItemID);
    end;
//BURAYA KADAR
    if edit1.Text='' then
    begin
    ShowMessage('Aranacak Metini Yazmadınız!! Sayfa Kapatılıyor');
    form1.Close;
    end;
    if FindFirst(TempPath+'\*.doc',faAnyFile,bulunan)<>0 then   //.doc uzantılı dosyaları lıstelemek ıcın
    begin
     end
      else
       begin
       table1.Open;
        repeat
              dosya:= a+'\'+bulunan.name;//dosyanın yerı 
              WordApp  := CreateOleObject('Word.Application');//word acılıyor
              Wordapp.documents.open(dosya);//hangı word dosyaso
              Range := WordApp.Documents.Item(1).Range;//hangı sayfa
              Range.Find.ClearFormatting;
              Range.Find.Text := Edit1.Text;//edıtten alınan text (arancak olan)
              Range.Find.Execute;//uygula dıyoruz
            if not Range.Find.Found then
            begin
              WordApp.ActiveDocument.Close;
              end
               else
                begin
                  PosFound := Range.Start;
              // ListBox1.Items.Add(bulunan.Name+'konum='+inttostr(posfound));//ıstersenız lıstbo'a sıralatın
               //tabloya lıstele
                  Table1.Insert;
                  Table1DOSYALAR.Value:=dosya;
                  Table1.Post;
                  Table1.Refresh;
                  Table1.Next;
               //dosyalar listelendi
                  WordApp.ActiveDocument.Close;
                end;
                WordApp.Quit;
               
       until FindNext(bulunan)<>0;
        sysutils.FindClose(bulunan);
     end;
     end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 KillTask('WINWORD.EXE');//en yukarda fonksıyon halınde verdım işlemler kısmında bırıken word dosyalarını temızlemek ıcın
 ShowMessage('BELLEK TEMİZLENDİ');
end;


//arkadaslar buda dbgrıd e tıklandıgında dosyayı ekrana getırmek ıcın
procedure TForm1.DBGrid1CellClick(Column: TColumn);
 var
  sonuc:integer;
  tik:String;
  wordapp:Variant;
begin
  tik:=Table1DOSYALAR.Value;
  if AnsiPos('.doc',tik)>0 then
  begin
      sonuc:=AnsiPos('.doc',tik);//kacıncı karakter
      tik:=AnsiLeftStr(tik,sonuc-1);//sonuc-1 den oncesı
  end;
      WordApp:=CreateOleObject('Word.Application');//word dosyası acılıyor
      Wordapp.documents.open(tik+'.doc');//acılcagı yer
      WordApp.Visible:=true;
end;
end.
ARKADASLAR YETERİNCE AÇIK OLMAYA ÇALIŞTIM...

YONETICI ARKADASLARA TESEKKURU BIR ALISKANLIK YAPMAK GUZEL BIRSEY CUNKU BU SAYFA BANA ILK ISIMI KAZANDIRDI BU BIR BORC:D

HERKEZE BAŞARILAR
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

yetnot kardeşimize değerli bilgilerini bizimle paylaştığı için çok teşekkür ederim. daha nice güzel işler dileğiyle.
iyi çalışmalar dilerim.
Cevapla