Arsip: Pencarian Eror and berhenti jika Filenya lagi di Pake

 
user image
more 16 years ago

avatar_eng

hai..... bantu aku dong....... aku punya masalah nih....., aku buat program untuk cari string di dalam file, nah masalahnya adalah : kalo lagi proces pencarian string dalam file, trus kalo tu file lagi digunakan oleh program lain langsung muncul pesan eror: kalo tu file lagi di use, setelah itu proces pencarian langsung berhenti, contoh := kalo dalam satu folder ada 20 files trus pencarian sampe' di file ke 10, trus kalo file ke 10 nya lagi digunakan oleh program lain, maka akan muncul pesan eror dan pencarian tidak di teruskan ke file berikutnya, nah...... skarang mauku, kalo filenya lagi di gunakan, maka lanjutkan pencarian ke file berikutnya, kira2 bisa ngak ya.....? oh ya ini aku sertakan source lengkapnya....: [code:1:0ba1ae04a4] public { Public declarations } function CariString(aFile, SearchString: String; IgnoreCase: Boolean=true; MaxBytesScanned: Int64 = 2097152): Boolean; end; var Form1: TForm1; implementation {$R .dfm} {---FUNGSI UNTUK CARI FILE---} procedure FindFiles(FilesList: TStringList; StartDir, FileMask: string); var SR: TSearchRec; DirList: TStringList; IsFound: Boolean; i: integer; begin if StartDir[length(StartDir)] <> '' then StartDir := StartDir + ''; IsFound := FindFirst(StartDir+FileMask, faAnyFile-faDirectory, SR) = 0; while IsFound do begin FilesList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); DirList := TStringList.Create; IsFound := FindFirst(StartDir+' .', faAnyFile, SR) = 0; while IsFound do begin if ((SR.Attr and faDirectory) <> 0) and (SR.Name[1] <> '.') then DirList.Add(StartDir + SR.Name); IsFound := FindNext(SR) = 0; end; FindClose(SR); for i := 0 to DirList.Count - 1 do FindFiles(FilesList, DirList[i], FileMask); DirList.Free; end; {---BATAR FUNGSI PENCARI FILE-----} {+++++++++++++++++++++++++++++++++++++++++++++++++} {---FUNGSI UNTUK CARI STRING DALAM FILE----------} function TForm1.CariString(aFile, SearchString: String; IgnoreCase: Boolean=true; MaxBytesScanned: Int64 = 2097152): Boolean; const MAX_BUFFER_SIZE = 20480; var Buffer: String; FS: TFileStream; BytesRead: Integer; i, match: Integer; BufferSize, StrLength: Integer; begin Result := false; if (SearchString = '') then exit; if IgnoreCase then SearchString := ANSIUppercase(SearchString); FS := TFileStream.Create(aFile, fmOpenRead or fmShareDenyWrite); try BufferSize := 0; StrLength := Length(SearchString); if FS.Size <= MAX_BUFFER_SIZE then BufferSize := FS.Size else BufferSize := (MAX_BUFFER_SIZE div StrLength) StrLength; SetLength(Buffer, BufferSize); Repeat BytesRead := FS.Read(Buffer[1], BufferSize); if BytesRead = 0 then exit; if IgnoreCase then Buffer := ANSIUppercase(Buffer); for i:=1 to BytesRead do begin Application.ProcessMessages; match := 0; if (BufferSize-(i-1) >= StrLength) then while (Buffer[i+match] = SearchString[match+1]) do begin Application.ProcessMessages; inc(match); If match = StrLength then begin Result := true; end; end; end; Until (FS.Position >= MaxBytesScanned) or (FS.Position = FS.Size); finally FS.Free; SetLength(Buffer, 0); end; end; {---BATAS AKHIR FUNGSI CARI STRING DALAM FILE--------} procedure TForm1.BitBtn1Click(Sender: TObject); var L:TListItem; lis:TStringList; i:integer; begin //Edit1.text = Isi Path atau Lokasi Pencarian //Edit2.text = Isi String yang akan dicari lis:=TStringList.Create; findfiles(lis,edit1.Text,'. '); for i:=0 to lis.Count-1 do begin if CariString(lis.Strings[i],edit2.Text)=true then begin L:= Listview1.Items.Add; L.Caption := extractfilename(lis.Strings[i]); L.SubItems.Add(lis.Strings[i]); application.ProcessMessages; end; end; end; [/code:1:0ba1ae04a4] -------------- tolong ya...........!! he...he...he... -----from Cinmi_boy-----i am detektif from ternate, you now ?---------- --------tank's------------------------------------------------------------------
user image
more 16 years ago

saysansay

wew....om avatar_eng(ternate detektif!!!)...dikau mau mencari string dengan file berextensi apa?mosok file .exe,.zip.7zip,.rar,.dll juga mau dikau cari stringnya?mohon di perjelas mencari string di file berextenxi apa? .rtf,.txt,.ini kah ?mabok jawab pertanyaan detektif!!!hayo diperjelas lagi...string di file berextensi apa saja...tentu dikau punya acuan sendiri!!:D...jangan2 memang file .*. udah tak baca kutipan codenya....buseeeet
user image
more 16 years ago

Manz

Yah bro san ini keliatannya kurang jeli dengan pertanyaan nya ... Bro detektif ternate ini mau cari string dalam file ... jelas gak nih (kalo gak jelas angkat tangan dan bertanya ... hueheheh :mrgreen: ) tapi modelnya, seperti search string di windows explorer, jadi dia terserah mo file .exe kek, .zip kek, .7zip kek, .rar, .dll, .ocx kek ...terserah ... patternya . untuk filenya... dikau bro san bisa cobain deh di search pake windows explorer dengan string tertentu .... :mrgreen: kalo gak salah seh .. huehehehehehehehe :mrgreen:
user image
more 16 years ago

kaka-delphi

Kayaknya file yang sedang di use another process, emang tidak bisa di reopen. Buktinya sistem operasi "jendela" aja ga bisa melakukannya :mrgreen: Untuk itu, kamu tinggal skip aja pencarian terhadap file tersebut, supaya tidak terjadi errod ... :D Mungkin bisa membantu ... ;)
user image
more 16 years ago

avatar_eng

wah..... mas kaka-delphi ........!, tu source sudah ku coba dan berhasil...........tapi....?? muncul masalah lagi... ternyata tu souce terlalu sensitif alias ada file yg lagi ngangur ternyata laporannya terpakai.... jadinya banyak file yang terlewatkan tu..... wah....ada yang bisa bantu ndak ya......? tolong dong....pleaseeeee........
user image
more 16 years ago

DelphiExpert

@kaka-delphi: tolong segera ganti avatar anda... some trojan might brute-replace your image!
user image
more 16 years ago

deLogic

kalo rekan kaka jarang muncul, mungkin admin dapat mengambil alih.. :)
user image
more 16 years ago

LuriDarmawan

OOT: @kaka, avatar dan signature-nya sy replace. nuwun sewu... satus... sejuta...
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com