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.
word belgesinde arama nasıl yapabilirim.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba Yasin Bey
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
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
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;
Not: Kodların okunaklı olması için [ code ] [ /code ] etiketleri/tag ları içinde yazalım

ARKADASLAR TAM OLARAK VERIYORUm
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...
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
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.
YONETICI ARKADASLARA TESEKKURU BIR ALISKANLIK YAPMAK GUZEL BIRSEY CUNKU BU SAYFA BANA ILK ISIMI KAZANDIRDI BU BIR BORC:D
HERKEZE BAŞARILAR