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
String içinde Randomize
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
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
şeklinde...
- Herhalde ipucu almışsındır.
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 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. 
- 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 = '';
- Herhalde ipucu almışsındır.

Kod: Tümünü seç
Sira := Random(Length(Duzenli))+1;

- Unutmadan Random işlemini kullanmadan önce ilk defasında
Kod: Tümünü seç
Randomize;

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.
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.