Arsip: Pencarian Eror and berhenti jika Filenya lagi di Pake
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------------------------------------------------------------------
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
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:
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 ... ;)
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........
more 16 years ago
DelphiExpert
@kaka-delphi: tolong segera ganti avatar anda... some trojan might brute-replace your image!
more 16 years ago
LuriDarmawan
OOT:
@kaka,
avatar dan signature-nya sy replace.
nuwun sewu... satus... sejuta...
more ...
- Pages:
- 1
reply |
Report Obsolete
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 3 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 3 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 4 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 11 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 11 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 11 years ago
Random Topic
- mengakses database access berpassword
by gito in Hal umum tentang Pascal Indonesia more 16 years ago - o i o - salam! saya baru pake 'login' ini
by _oio_ in OOT more 17 years ago - [wta] masalah saat install borland delphi 7
by manplan in Tip n Trik Pemrograman more 15 years ago - ask : saat program running tdk bisa tekan alt+tab
by adhisyanda in Hal umum tentang Pascal Indonesia more 14 years ago - instal komponent Infopower di delphi
by petrucc1 in Tip n Trik Pemrograman more 15 years ago - insert data mysql pake zeos kok lambat ya..??
by d4mnf1y32 in Tip n Trik Pemrograman more 12 years ago - Input data di postgres 2
by juandon in Lain-lain more 15 years ago - Menampilkan image
by coolmib in Multimedia & Graphic Enhancement more 17 years ago - Compacting Access DB
by murphy in Multimedia & Graphic Enhancement more 15 years ago - Mencari Pegawai Pensiun
by oshea in Tip n Trik Pemrograman more 11 years ago