Friday, September 26, 2003, 9:08:35 PM, you wrote:
function Base10ToBaseX(BaseXDef: array of Char; Base10Value: Integer): string;
var
s: string;
i, d, m: Integer;
BaseXCount: Byte;
begin
s := '';
i := Base10Value;
BaseXCount := SizeOf(BaseXDef);
repeat
d := i div BaseXCount;
m := i mod BaseXCount;
s := BaseXDef[m] + s;
i := d;
until d = 0;
Result := s;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
XDef2 : array[0..1] of Char = ('0','1');
XDef10 : array[0..9] of Char = ('0','1','2','3','4','5','6','7','8','9');
XDef16 : array[0..15] of Char =
('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
var
a, b, i : Integer;
XDefAZ : array[0..26] of Char;
begin
XDefAZ[0] := '0';
for i := 1 to 26 do XDefAZ[i] := Chr(65+i-1);
a := 27*27*27 + 27*27 + 27 + 1;
b := a + 100;
for i := a to b do ListBox1.Items.Add(Base10ToBaseX(XDefAZ, i));
end;
<!--DEL-->
Coba jalankan potongan diatas dengan New Application trus tambahkan
TButton dan ListBox (satu biji aja).
Saya pernah bikin juga untuk hal ini, prinsipnya andalah bilangan
berbasis-N, kalo bilangan yang sering kita pakai adalah bilangan basis
10 memiliki 'tanda gambar' 0,1,2,3,4,5,6,7,8,9 sebagai contoh anda mau
menampilkan angka 9999, pada hakekatnya 9999 itu dibentuk dari:
9*10^3 + 9*10^2 + 9*10^1 + 9*10^1 =
9*1000 + 9*100 + 9*10 + 9*1 = 9999
Nah, itu bilangan berbasis 10 bagai mana dengan dengan A..Z? misalkan
kita menciptakan suatu angka berbasis yang kita defisinikan sendiri
memiliki tanda gambar: 0ABCDEFGHIJKLMNOPQRSTUVWXYZ berarti disitu
terdapat 27 'tanda gambar'. Setiap tanda gambar harus memiliki bobot
atau padanan basis-10 nya agar kita yang notabene sudah terbiasa
dengan basis-10 mudah menghitung, dengan contoh diatas berarti
'0' berbobot 0
'A' berbobot 1
'B' berbobot 2
'C' berbobot 3
dst.
'Z' berbobot 26
Dengan analogi yang sama spt angka 10 tadi, kalo anda mau bikin 'ZZZZ'
berarti iterasi yang harus disiapkan adalah:
26*27^3 + 26*27^2 + 26*27^1 + 26*27^0 =
26*19683 + 26*729 + 702 + 26 = <itung sendiri...>
Nah kalo anda mau bikin 9 (sembilan) digit, berarti ZZZZZZZZZ
26*27^8 = 26 * 282429536481 = 7343167948506
itu baru digit PERTAMA blon ditambahkan digit selanjutnya!
WAAAAAAAAH kapan kelarnya?????? kalo mau ngurutin dari 'AAAAAAAAA' to
'ZZZZZZZZZ'
Metode spt ini saya pake dulu untuk nyobain brute-force / password
cracker, jadi semua kombinasi dicobain... termasuk spasi, underscore
dll. Tapi cara ini memakan waktu berhari-hari.
r> program bisa berjalan dengan baik, tapi waktu lebar data dan jumlah data saya
tambah,
r> program jadi Running dan tidak selesai-selesai.
r> data yang saya gunakan mulai A...Z, lebar data 9
r> program yang saya gunakan jadi seperti ini
r> for i:=1 to jumlahdata do
r> for j:=1 to jumlahdata do
r> for k:=1 to jumlahdata do
r> for l:=1 to jumlahdata do
r> for m:=1 to jumlahdata do
r> for n:=1 to jumlahdata do
r> for o:=1 to jumlahdata do
r> for p:=1 to jumlahdata do
r> for q:=1 to jumlahdata do
r>
stringgrid1.cell[I,J]:=huruf(i)+huruf(j)+huruf(k)+huruf(l)+huruf(m)+huruf(n)+huruf(o)+huruf(p)+huruf(q);
menurut saya daripada pake cara nested-for spt ini pake procedur
diatas, khan nggak lucu entar dikau mau nambah lebar digit masa harus
recompile??
r> apakah cara yang saya gunakan ini salah, atau mungkin dari
r> rekan-rekan mempunyai cara yang lebih baik.
Nggak salah cuman emang begitu... lama...
r> Terima kasih Atas pencerahannya
Ok
---
Best regards,
Syarif Lumintarjo
[EMAIL PROTECTED]
------------------------ Yahoo! Groups Sponsor ---------------------~-->
Upgrade to 128-Bit SSL Security!
http://us.click.yahoo.com/p7cEmB/s7qGAA/yigFAA/i7folB/TM
---------------------------------------------------------------------~->
Berlangganan: [EMAIL PROTECTED]
Stop Berlangganan: [EMAIL PROTECTED]
Keluhan Milis(Unbouncing,spam,dll): [EMAIL PROTECTED]
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/