Jump to content

KintaRo

Emekli
  • Posts

    9382
  • Joined

  • Last visited

  • Days Won

    67

Posts posted by KintaRo

  1. local database kullanılabilir. 

    https://www.c-sharpcorner.com/UploadFile/7d3362/use-local-database-file-in-window-application-C-Sharp/

    sqlite çok sınırlı bir yapı. çok az sütun tipi var. basit projelerde iyi oluyor ama biraz daha gelişmiş şeylerde yetersiz kalabiliyor. ben genelde mysql kullanıyorum. ekstra bir şey kurmanıza gerek kalmıyor. mini mysql var 3-5 mb lik bir şey, hem local hem ağda hatta modem ayarı yaparsanız uzaktan bile çalışıyor. düşünürseniz yardımcı olurum.

    • Like 3
  2. Küçük bir örnek hazırladım. web sitesindeki lisans.txt dosyasında tutulan lisansların içinde kullanıcının girdiği lisans var mı yok mu diye bakıyor, eğer yoksa hatalı lisans diyerek programı kapatıyor.

    hostingi https://www.5gbfree.com/ adresinden aldım

    yalnız free hostlara güven olmaz. mesela bir keresinde hostinger sen burayı dosya depolama için kullanıyosun web sitesi falan yapmıyorsun diyerek kapatmıştı. bu da ileride böyle bir şey yapabilir. ücretli program yazıp müşterilerine vereceksen ücretli bir hostinge geçmeni tavsiye ederim. zaten çok ucuz artık hostingler. Ayrıca bu örneği fikir vermesi acisindan paylaştım. bu güvenli bir yol değil. lisans dosyasının yolunu bulan bir kişi lisanslara ulaşabilir.  mysql+php ile bir API şeklinde falan yapılırsa bir nebze güvenlik artmış olur.

    http://s7.dosya.tc/server6/5vk12o/test1.rar.html

  3. evet, benim yöntem unbound gridler için. yani datasource'u sonradan çalışma zamanında gösterilen gridler için. datasource'u dizayn anında gösteriyorsanız editör ile ayarlayabilirsiniz.

  4. bunu yapabilmeniz için bir dosyada ya da registry'de programın kaç kere açıldığını tutmanız gerekiyor. herhangi bir klasörün içinde bir dosyaya şifreli bir şekilde tutabilirsiniz. bir yere bunu yazmadan program bunu anlayamaz. Ha windows bu şekilde bir günlük kaydı tutyorsa bilemem. Eğer algoritmayı kuramazsanız yardımcı olurum.

  5. eğer grid'e datasource'u gösterdikten sonra bunu yapmak istiyorsanız şu şekilde olur:

                decimal bakiye = 0;
                for (int i = 0; i < view.RowCount; i++)
                {
                    decimal borc = Convert.ToDecimal(view.GetRowCellDisplayText(i, view.Columns[1]));
                    decimal alacak = Convert.ToDecimal(view.GetRowCellDisplayText(i, view.Columns[2]));
    
                    bakiye += borc - alacak;
                    view.SetRowCellValue(i, view.Columns[3], bakiye.ToString("N2"));
                }

    ama ben önce veriyi bir datatable'da tutup sonra bakiye sütunu olan bir datatable'a aktarıyorum ve sonra grid'e gösteriyorum. size kalmış.

  6. gridView1.Columns[6].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
    gridView1.Columns[6].DisplayFormat.FormatString = "N2";

    grid'e datasource'u gösterdikten sonra bu şekilde ilgili sütunların direk 12.345,67 şeklinde görüntülenmesini sağlayabilirsiniz. 

  7. Biglisayarları açık/kapalı kontrolunun en kısa yolu ping atmak

    using System.Net.NetworkInformation;
    
    Ping ping = new Ping();
    PingReply pingReply = ping.Send("192.168.1.11", 5000);
    if (pingReply == IPStatus.Success)
    {
        // bilgisayar açık
    }
    else
    {
        // bilgisayar kapalı
    }

    Ping olayını şu projede kullanmıştım, iyi çalışıyordu:

    screenshot_127.png

     

    Başka bilgisayarlarda program çalıştırmak ise biraz karmaşık. Şu an proje veremem ama aklıma gelen bir kaç yöntem:

    1- socket: öncelikle bir windows servisi ya da sürekli çalışacak şekilde küçük bir uygulama yazıp örneğin 1420 portunu dinleyecek şekilde ayarlamanız gerekiyor. bu program bu porta gelen istek var mı yok mu diye sürekli kontrol edecek, istek gelirse belirlenen programı çalıştıracak. Yapacağınız ana program ise bu porta istek gönderecek

    2- INI dosyası: Ana makinada bulunan bir ini dosyasını paylaşıma açıp client'lerin bunu timer ile kontrol edip ilgili değişkendeki veri değiştiğinde işlem yapması. Bu zahmetli bir iş ve Eğer Windows Server kullanmıyorsanız 20 makinadan sonra ağ paylaşımında sorun olacaktır.

    3- MySQL Server: ana makinaya mysql server kurulur, veritabanına tüm makinalar eklenir. Clientler sql sorgusu ile kendi değerlerini kontrol eder. Örneğin makina 1'in verisi 0 dan 1 e döndüğünde program çalışır, sonra veri tekrar 0 olur. (SELECT kontrol FROM bilgisayarlar WHERE ip='192.168.1.11')

    Burada en doğru yol socket ama en kolayı mysql ile yapmak sanırım.

    soket programlama için güzel bir yazı ve örnek şurada var: http://www.gokhan-gokalp.com/c-ile-asenkron-socket-programlama/

     

    • Like 2
  8. tetxbox yerine NumericUpdown kullanırsanız hem kod yazmanıza gerek kalmaz (çünkü default olarak sayı dışında karakter girilemiyor.) hem de daha sağlıklı çalışır. Kontrolün özelliklerinden de Minimum ve Maximum değeri belirtebilirsiniz.

    screenshot_88.png

     

    • Like 1
  9. Bence yanlış düşünüyorsunuz, Tasarımcılar artık kodları tüm web sitelerinde çalışacak şekilde yazıyor. Örneğin iş bankası internet bankacılığı sayfasından bir demet kod:

        <!--[if lte IE 8]>
        <link rel="stylesheet" type="text/css" href="css/ltIE9.css"/>
        <![endif]-->

    eğer ie8 motorlu bir tarayıcı ise şu css dosyasını kullan gibi... Banka şu tarayıcılara güvenmez gibi bir durum yok. Öyle olsa zaten direk onlarda çalışmasını engellerdi. Apple bilgisayar kullanan bilgisayarlar safari ile giriş yapıyor, peki bankalar onlara da mı güvenmiyor? Öyle bir durum pek mantıklı değil. Opera tarayıcısından az önce iki bankayı denedim hiç bir sorun vermedi:

    screenshot_56.png

     

    ayrıca yıllardır tüm bankacılık işlemlerini chrome üzerinden yapıyorum. bence sizde başka bir sorun var. eğer saat/tarihiniz yanlış ise SSL sunucusu ile senkronize olamayacağınız için güvenlik hatası verebilir mesela.

    • Like 1
  10. stackoverflow'da şöyle bir örnek buldum: (MySQL için)

    DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name

    kabaca şu şekilde çalışıyor, names tablosunun bir n1 değişkenine atıyor, daha sonra yine names tablosunu n2 değişkenine atıyor, elinde names tablosundan 2 adet oluyor boylece karşılaştırma yapıyor. name sutunları aynı ise ve id büyüktür id'den ise o satırı siliyor.id büyüktür id'den dememizin amacı bir sonraki satıra atlamak için. ve böylece o kayıtları içeren ilk satır silinmiyor ve kayıtlarda kalıyor. biraz karışık gibi ama değil :D

    sen yine de db'nin bir yedeğini alıp öyle dene ehehe

    • Like 1
  11. @Extended senin verdiğin kod dataGridView için, arkadaşın istediği Devexpress GridControl için. @xmen14 evet satırdaki hücre değerini okumanız gerekiyor. 

    // repositoryItem'in seçili value'sinin alacağı değer true olarak ayarlanmış
    chxEdit.ValueChecked = true;
    
    // ona göre işlem yapalım
    for (int i = 0; i < gridView1.RowCount; i++)
    {
        string deger = gridView1.GetRowCellDisplayText(i, gridView.Columns[0]);
        bool secilimi Convert.ToBoolean(deger);
    	if (secilimi == true)
    	{
    		// satır seçili
    	}
    }

     

×
×
  • Create New...