Arsip: Menyingkat Coding
more 15 years ago
tAtA
gimana cara menyingkat code program berikut ini :
procedure TForm1.Bt_prosesClick(Sender: TObject);
var x : integer;
begin
for x:= 1 to Memo1.Lines.Count do
begin
case CMB_box.ItemIndex of
0: begin
if (grid_data.Cells[18,x]='411') or (grid_data.Cells[18,x]='412')
or (grid_data.Cells[18,x] = '419') or (grid_data.Cells[18,x]='421')
or (grid_data.Cells[18,x] = '422') or (grid_data.Cells[18,x]='423')
or (grid_data.Cells[18,x] = '424') or (grid_data.Cells[18,x]='425')
or (grid_data.Cells[18,x] = '426') or (grid_data.Cells[18,x]='427')
then
M_Filtered.Lines.Add(Memo1.Lines.Strings[x-1]);
end;
1: begin
if (grid_data.Cells[18,x] = '429') or (grid_data.Cells[18,x]='422') then
M_Filtered.Lines.Add(Memo1.Lines.Strings[x-1]);
end;
end;
end;
end;
terima kasih
more 15 years ago
pebbie
menyingkat OR sepanjang itu tapi memperlama eksekusi gapapa?
taro aja nilainya di Hidden Listbox(TStrings), trus pake IndexOf
more 15 years ago
tAtA
he he, aku butuh juga untuk akses data yg cepet, coz gak cuman segitu nanti datanya, kalo kita bikin ke array dulu bisa gak yha...
more 15 years ago
DelphiExpert
procedure AddDataRange(const List: TStrings; const R1, R2: Integer);
var I: Integer;
begin
for I:= R1 to R2 do
List.Add(IntToStr(I));
end;
function InitFilter1: TStrings;
begin
Result:= TStringList.Create;
try
TStringList(Result).Sorted:= True;
AddDataRange(Result, 411, 412);
AddDataRange(Result, 419, 419);
AddDataRange(Result, 421, 427);
except
FreeAndNil(Result);
raise;
end;
end;
function InitFilter2: TStrings;
begin
Result:= TStringList.Create;
try
TStringList(Result).Sorted:= True;
AddDataRange(Result, 422, 422);
AddDataRange(Result, 429, 429);
except
FreeAndNil(Result);
raise;
end;
end;
var
GFilter1: TStrings = nil;
GFilter2: TStrings = nil;
function Filter1(const Data: string): Boolean;
begin
if GFilter1 = nil then
GFilter1:= InitFilter1;
Result:= GFilter1.IndexOf(Data) >= 0;
end;
function Filter2(const Data: string): Boolean;
begin
if GFilter2 = nil then
GFilter2:= InitFilter2;
Result:= GFilter2.IndexOf(Data) >= 0;
end;
// --------------------------------
procedure TForm1.Bt_prosesClick(Sender: TObject);
var x : integer;
begin
for x:= 1 to Memo1.Lines.Count do
begin
case CMB_box.ItemIndex of
0: begin
if Filter1(grid_data.Cells[18,x]) then
then
M_Filtered.Lines.Add(Memo1.Lines.Strings[x-1]);
end;
1: begin
if Filter2(grid_data.Cells[18,x]) then
M_Filtered.Lines.Add(Memo1.Lines.Strings[x-1]);
end;
end;
end;
end;
Fast... general purpose...
btw... sebetulnya code (kebutuhan) tsb. bisa dipersingkat lagi... tapi... cepek dulu... hihihi :mrgreen:
note: code tersebut tidak saya test menggunakan compiler, written on-the-fly using opera IDE
more 15 years ago
DelphiExpert
lho lho... koq tambah panjang ya... :mrgreen: tapi dijamin dinamis!
dengan modifikasi sedikit, data dapat dibaca dari file...
replace:
...
AddDataRange(Result, 411, 412);
...
dng:
var FileData: TStrings;
begin
FileData:= TStringList.Create;
try
FileData.LoadFromFile('somefile.txt');
for I:= 0 to FileData.Count - 1 do
GFilter1.Add(FileData[I]);
// dan atau
GFilter2.Add(FileData[I]);
finally
FreeAndNil(FileData);
end;
selanjutnya penggunaannya sama:
...
if Filter1(grid_data.Cells[18,x]) then
...
dalam hal case .. of ; sebenarnya bisa dipersingkat lagi... tapi... cepek dulu... hak hak hak :mrgreen:
more 15 years ago
simba
Mungkin pake set (of integer) bisa lebih singkat dan lebih cepat, daripada pake string list (with conversion penalty). Just an idea. ;)
more 15 years ago
DelphiExpert
ya... gunakan const array of integer jika data-nya adalah statis
menggunakan set juga dapat dilakukan, namun dengan catatan, ordinal data harus urut dan jelas ;)
more 15 years ago
mas_kofa
aku usul pake set ........kaya @DE
if StrToIntDef(grid_data.Cells[18,x],0) in [set] then.........
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
- ODBC via Winxp VS Win2000
by e_soep in Network, Files, I/O & System more 16 years ago - Manggil perintah dalam DLL yang di buat C++
by aandrie77 in Enginering more 13 years ago - Report menyamping
by mambamaestro in Hal umum tentang Pascal Indonesia more 14 years ago - Cara backup dan restore data di program delphi
by wati in Multimedia & Graphic Enhancement more 11 years ago - hide maximize button ????
by r_rie in Form Enhancement & Graphical Controls more 15 years ago - midas.dll?
by novlog in Hal umum tentang Pascal Indonesia more 18 years ago - auto increment.....
by nioko in Network, Files, I/O & System more 17 years ago - Menampilkan Data sesuai Tanggal
by Brams in Hal umum tentang Pascal Indonesia more 16 years ago - Caranya bikin program monitoring PLC secara serial
by doni_vika in Network, Files, I/O & System more 13 years ago - ngambil DateTime Server web Speedy atw yg lain
by esafm in Hal umum tentang Pascal Indonesia more 15 years ago