• 28-03-2020, 21:32:45
    #1
    Merhaba,
  • 28-03-2020, 21:39:27
    #2
    Demek istediğini doğru anladıysam bu şekilde olucak.

    while (sayac <= 30)
    {
    sayi = rnd.Next(1, 100);
    if (Array.IndexOf(sayilar, sayi) == -1)
    {
    sayilar[sayac] = sayi;
    sayac++;
    }
    }
  • 28-03-2020, 21:39:58
    #3
    Dostum eğer ki sen Random sayıyı bir döngü içerisinde çalıştırırsan sana sürekli aynı sayıyı verir çünkü random sayılar sistem saatini baz alan bir algoritma mantığıyla çalışıp rastgele bir sayı üretirler. O yüzden döngü içerisinde Thread.Sleep(10) vs gibi bir kod ile döngünün biraz daha ağır çalışmasını sağlamalısın.
  • 28-03-2020, 21:45:26
    #4
    mdemrr adlı üyeden alıntı: mesajı görüntüle
    Dostum eğer ki sen Random sayıyı bir döngü içerisinde çalıştırırsan sana sürekli aynı sayıyı verir çünkü random sayılar sistem saatini baz alan bir algoritma mantığıyla çalışıp rastgele bir sayı üretirler. O yüzden döngü içerisinde Thread.Sleep(10) vs gibi bir kod ile döngünün biraz daha ağır çalışmasını sağlamalısın.
    Random değerleri sonradan kontrol ettirdiğimde aynı değerleri hiçbir zaman almıyor sorun yok orada gibi duruyor. Yorum yazıp yinede bilgi verdiğin için teşekkür ederim hocam.

    Sorun cont.text="Meyve"; yazdırdığım zamanda bir patlak verdiğini tespit ettim.
  • 28-03-2020, 21:52:59
    #5
    Evet haklısın yazdığın kodlara iyice bakmadan cevap yazdım pardon. Sen zaten var olmayan değerleri bir diziye atmışsın yani bu durumda dediğin gibi üreteceği tüm değerler farklı olur. Senin hatan ise şundan kaynaklı Control dediğin elemanın Text özelliğinin olmamasından kaynaklanıyor. Çözüm olarak da Text özelliğini değiştereceğin kontrolü önce if ile tipine bakıp öyle Text vermen lazım. Örneğin Control.getType==typeof(Button) gibi bir if koşulu ile sana lazım olan Control doğru ise o zaman Text vermen lazım.

    Ek olarak şunu da söyleyeyim normalde bu kodu nasıl derlemeyi başardın ki sen anlamadım. Control'e text vermeden önce Cast yapman lazım. Her control'ün Text özelliği olamaz ki. Örneğin bir webbrowser düşün bunun Text özelliğini vermeye çalışırsan doğal olarak program çöker. Aslına bakarsana bu kodun derlenmemesi lazım zaten
  • 28-03-2020, 22:02:08
    #6
    mdemrr adlı üyeden alıntı: mesajı görüntüle
    Evet haklısın yazdığın kodlara iyice bakmadan cevap yazdım pardon. Sen zaten var olmayan değerleri bir diziye atmışsın yani bu durumda dediğin gibi üreteceği tüm değerler farklı olur. Senin hatan ise şundan kaynaklı Control dediğin elemanın Text özelliğinin olmamasından kaynaklanıyor. Çözüm olarak da Text özelliğini değiştereceğin kontrolü önce if ile tipine bakıp öyle Text vermen lazım. Örneğin Control.getType==typeof(Button) gibi bir if koşulu ile sana lazım olan Control doğru ise o zaman Text vermen lazım.

    Ek olarak şunu da söyleyeyim normalde bu kodu nasıl derlemeyi başardın ki sen anlamadım. Control'e text vermeden önce Cast yapman lazım. Her control'ün Text özelliği olamaz ki. Örneğin bir webbrowser düşün bunun Text özelliğini vermeye çalışırsan doğal olarak program çöker. Aslına bakarsana bu kodun derlenmemesi lazım zaten
    meyve[i] = "txt" + sayim[i].ToString();
    burada belirttiğim satırda hocam zaten string olarak alıyor değeride control değeri tam oturmuyor
  • 28-03-2020, 22:07:50
    #7
    Tamam işte hocam onu diyorum ben de Control'ü cast etmen lazım. C# control diye tanımlanan nesnenin ne olduğunu bilemez ki. Verdiğim diğer örnekteki gibi mesela control bir webbrowser da olabilir. Bu durumda sen webbrowser.Text demeye çalışmış oluyorsun ki bu da hata verir. O yüzden mesela control'ün bir Button ise ((Button)cont).Text="Meyve"; diye değiştirmen lazım kodunu.
  • 28-03-2020, 22:13:36
    #8
    Sorun element.StartsWith(cont.Name) kısmında hocam, örneğin txt1, txt11 ile eşleşiyor. O yüzden bazı sayılar aynı butonlara meyve yazıyor, kodu element.Equals(cont.Name) ile değiştirirseniz sorununuz düzelecektir.
  • 28-03-2020, 22:14:34
    #9
    mdemrr adlı üyeden alıntı: mesajı görüntüle
    Tamam işte hocam onu diyorum ben de Control'ü cast etmen lazım. C# control diye tanımlanan nesnenin ne olduğunu bilemez ki. Verdiğim diğer örnekteki gibi mesela control bir webbrowser da olabilir. Bu durumda sen webbrowser.Text demeye çalışmış oluyorsun ki bu da hata verir. O yüzden mesela control'ün bir Button ise ((Button)cont).Text="Meyve"; diye değiştirmen lazım kodunu.
    https://prnt.sc/rohq63 aynı şekilde hocam düzelmedi. 3 tane oluşturduğuda oluyordu 2 tane de oluşturduğuda, burada neden ajan yazıyor diye sorarsan hocam 30 taneyi saymamak için 3 tanesi için işlemi yaptım



    pr1d3 adlı üyeden alıntı: mesajı görüntüle
    Sorun element.StartsWith(cont.Name) kısmında hocam, örneğin txt1, txt11 ile eşleşiyor. O yüzden bazı sayılar aynı butonlara meyve yazıyor, kodu element.Equals(cont.Name) ile değiştirirseniz sorununuz düzelecektir.
    İlgin için çok teşekkür ederim hocam, düzelttiğimde dediğiniz gibi sorun çözüldü.+r10 verdim.

    Herkese Hayırlı akşamlar...