String içinde Randomize

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

String içinde Randomize

Mesaj gönderen webaytek »

Elimde bir edit var... bunun içine girilen "0123456789abcdefgh" tarzı bir string'i tüm karakterin yerlerini karıştırarak yeni bir string oluşturmak istiyorum (eksiltmeden sadece yer değiştirerek) bunu nasıl yapabilirim?

edit1.text:='0123456789abcdefgh';
sonuc.text:='a194hb302e8fc3gc67d5'; gibi bişiy elde etmek istiyorum...

ama şunu da sööliim kullanacağım string'in length'î fix değil... isteğe göre belirleniyor...
en az 4 max 50 karakter olucak
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Bir dizi oluştur. Dizinin boyutunu edit'teki karakterlerin sayısı kadar belirle. Daha sonra RandomRange ile rastgele sayı oluşturarak dizideki o karakteri al . Karakteri aldıktan sonra dizinin o elemanını boşaltırsın.

Kolay gelsin.
Kullanıcı avatarı
webaytek
Üye
Mesajlar: 377
Kayıt: 23 Haz 2004 10:58

Mesaj gönderen webaytek »

Bunalmış, Dilindee Tüy bitmiş Adminim tamam bu yolu beğendim hatta denedim saolasın...

o başka alternatifleri olan arkadaşlar varsa lütfen değişik önerilerinizi bekliyorum...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

- Dizi kullanmak zor geldiyse, string operasyonlarla bunu gerçekleştir.

- İki string değişkenin olsun, isimleri; Duzenli ve Karisik
- Ek olarak karakter sırasını tutmak için bir Integer değişkenin olsun, ismi Sira

- Bir Repeat Until bloğu koyarsın ve Until durumu olarak Duzenli içeriğinin bittiği an olan

Kod: Tümünü seç

Until Duzenli = '';
şeklinde...

- Herhalde ipucu almışsındır. :idea:

Kod: Tümünü seç

Sira := Random(Length(Duzenli))+1; 
ile sirayı bulup o sıradaki harfi Karisik değişkenine alıp sonra da düzenli içerisinden bu sıradakini Delete komutu ile silersin. Aynı şekilde Random komutu ile bilgisayara her seferinde 1 ile Duzenli değişkeninin kalan karakter sayısı arasında bir sayı tutturup, onu sira tayin edip işine devam edersin... Taa ki duzenli içinde hiç karakter kalmayana kadar... :)

- Unutmadan Random işlemini kullanmadan önce ilk defasında

Kod: Tümünü seç

Randomize;
komutunu kullanmayı ihmal etmeyesin, bilmeyenler varsa diye yazıyorum, program her çalıştığında aynı sırada aynı numaraları tahmin eder ki bu durumda tahmin kavramı tartışmalı bir hal alır. :wink:
Resim
Resim ....Resim
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

En iyi yaklaşım değil, fikir olması için yazıyorum:

Edit'teki bütün harfler, bir listbox bileşenine, her bir harf bir satıra gelecek şekilde atılır ve listbox'ın eleman sayısının yarısı kadar rastgele sayı üretilir. Bu üretilen sıradaki listbox elemanları herhangi bir sıradaki ile yer değiştirilir. Bu şekilde listbox karıştırılmış olur.

Daha sonra da listbox'taki sırası karışmış harfler tekrar edite atılır.
Cevapla