• 18-04-2020, 16:08:28
    #1
    Merhaba arkadaşlar bir süre önce bir arkadaşa forumdan program yaptırdım, kod çalışıyor şu haliyle ancak bir eksiklik var. Arkadaşın işleri yoğun olduğundan ilgilenemedi bende sorunu kendim halletmek istedim beceremedim

    Program başladığında bulunduğu dizinde Locale klasörü var mı yokmu onu kontrol ediyor yoksa Locale klasörü oluşturup. Belirtilen URL üzerindeki 3 dosyayı o klasörün içine indiriyor.

    Ancak ben test amaçlı sunucudaki dosyaları sildim, ve şöyle bir eksiklikle karşılaştım.

    Program ilk açılışta Locale klasörünü oluşturuyor, dosya içeriği sunucuda olmadı için bir işe yaramıyor.

    Yapmak istediğim şey şu;

    Program her başladığında Locale klasörü ve içindeki dosyaların kontrolünü yapsın. Yoksa sunucudan indirsin, Eğer sunucudada yoksa hata mesajı versin ve tamam a tıkladığımda program arayüzüne devam etsin.

    Locale klasörü için;
    "HATA: Program dizininde Locale klasörü bulunamadı!nEksik dosyalar indirilsin mi?", "Locale klasörü eksik!"
    Evet dediğimde > klasör oluştursun
    Hayır dediğimde > program arayüzüne devam etsin

    Dil dosyaları için;
    "HATA: Program dizininde Locale klasörü içinde en_us_data_.dat, en_us_data.dir bulunamadı!nEksik dosyalar sunucudan indirilsin mi?", "Dil dosyaları eksik!"
    Evet dediğimde > oluşturulan Locale klasörünün içinde dosyalar indirilsin
    Hayır dediğimde > program arayüzüne devam etsin

    Dil dosyaları şunuda yoksa;
    "HATA: Locale klasör içeriği belirtilen Sunucu adresinde mevcut değil!nLütfen geliştirici ile iletişime geçin?", "Locale klasörü eksik!"
    Tama dediğimde > program arayüzüne devam etsin.

    SORU: İlk açılışta Locale klasörü eksikse oluşturacak, 2. açılışta tekrar Locale klasörü eksik hatası vermez değil mi?


    Mevcut kod:
    if (!Directory.Exists(Application.StartupPath + @"Locale"))
    {
    if (MessageBox.Show("HATA: Program dizininde Locale klasörü bulunamadı!nEksik dosyalar indirilsin mi?", "Locale klasörü eksik!",
    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    {
    try
    {
    Directory.CreateDirectory(Application.StartupPath + @"Locale");
    WebClient wClient = new WebClient();
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dat", FilePath1);
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dir", FilePath2);
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/Geo-Md.ttf", FilePath3);
    MessageBox.Show("TEBRİKLER: Dil dosyaları başarıyla indirildi!", "Dil dosyaları indirildi", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch
    {
    MessageBox.Show("HATA: Locale klasörü belirtilen sunucu adresinde bulunamadı!nLütfen geliştiriciyle iletişime geçip bilgilendirin.", "Locale klasörü bulunamadı!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
  • 18-04-2020, 19:56:52
    #2
    delidolu1adam adlı üyeden alıntı: mesajı görüntüle
    Merhaba arkadaşlar bir süre önce bir arkadaşa forumdan program yaptırdım, kod çalışıyor şu haliyle ancak bir eksiklik var. Arkadaşın işleri yoğun olduğundan ilgilenemedi bende sorunu kendim halletmek istedim beceremedim

    Program başladığında bulunduğu dizinde Locale klasörü var mı yokmu onu kontrol ediyor yoksa Locale klasörü oluşturup. Belirtilen URL üzerindeki 3 dosyayı o klasörün içine indiriyor.

    Ancak ben test amaçlı sunucudaki dosyaları sildim, ve şöyle bir eksiklikle karşılaştım.

    Program ilk açılışta Locale klasörünü oluşturuyor, dosya içeriği sunucuda olmadı için bir işe yaramıyor.

    Yapmak istediğim şey şu;

    Program her başladığında Locale klasörü ve içindeki dosyaların kontrolünü yapsın. Yoksa sunucudan indirsin, Eğer sunucudada yoksa hata mesajı versin ve tamam a tıkladığımda program arayüzüne devam etsin.

    Locale klasörü için;
    "HATA: Program dizininde Locale klasörü bulunamadı!nEksik dosyalar indirilsin mi?", "Locale klasörü eksik!"
    Evet dediğimde > klasör oluştursun
    Hayır dediğimde > program arayüzüne devam etsin

    Dil dosyaları için;
    "HATA: Program dizininde Locale klasörü içinde en_us_data_.dat, en_us_data.dir bulunamadı!nEksik dosyalar sunucudan indirilsin mi?", "Dil dosyaları eksik!"
    Evet dediğimde > oluşturulan Locale klasörünün içinde dosyalar indirilsin
    Hayır dediğimde > program arayüzüne devam etsin

    Dil dosyaları şunuda yoksa;
    "HATA: Locale klasör içeriği belirtilen Sunucu adresinde mevcut değil!nLütfen geliştirici ile iletişime geçin?", "Locale klasörü eksik!"
    Tama dediğimde > program arayüzüne devam etsin.

    SORU: İlk açılışta Locale klasörü eksikse oluşturacak, 2. açılışta tekrar Locale klasörü eksik hatası vermez değil mi?


    Mevcut kod:
    if (!Directory.Exists(Application.StartupPath + @"Locale"))
    {
    if (MessageBox.Show("HATA: Program dizininde Locale klasörü bulunamadı!nEksik dosyalar indirilsin mi?", "Locale klasörü eksik!",
    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
    {
    try
    {
    Directory.CreateDirectory(Application.StartupPath + @"Locale");
    WebClient wClient = new WebClient();
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dat", FilePath1);
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dir", FilePath2);
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/Geo-Md.ttf", FilePath3);
    MessageBox.Show("TEBRİKLER: Dil dosyaları başarıyla indirildi!", "Dil dosyaları indirildi", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch
    {
    MessageBox.Show("HATA: Locale klasörü belirtilen sunucu adresinde bulunamadı!nLütfen geliştiriciyle iletişime geçip bilgilendirin.", "Locale klasörü bulunamadı!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    Yardımcı olacak arkadaşlara şimdiden teşekkür ederim.
    Application.StartupPath + @"Locale" bu şekilde değil Application.StartupPath + "\Locale" bu şekilde olmalı.
  • 18-04-2020, 21:12:44
    #3
    whatsappdan ulaşırsan uzak bağlantı ile halledebilirim.
  • 19-04-2020, 00:54:41
    #4
    @oguzhane; dostum bu şekildede çalışıyor sorun yok benim sorunum farklı.

    Locale klasörü ve içindekileride kontrol ettirmem için bu kod üzerinde ne yapılabilir yada sıfırdan farklı kod mu yazılır anlayan bilen arkadaşlardan yardım istiyorum hiç anlamam bu işlerden ))) Eğer zahmet olmazsa sende 2 satır kod yazıp yardımcı olabilirsin

    @TurkceApi; dostumsaat geç oldu bu saatte telefondan yazıp rahatsız etmek istemedim dilersen sana özel mesaj gönderdim dosyalara bakıp düzenleyip tekrar upload edebilirsin yada artık gündüz yada akşam denk gelirsek dediğin gibi yaparız.
  • 19-04-2020, 02:11:56
    #5
    Sorun değil hep gece çalışıyoruz, kodları görmek istedim ki ben sana bir kaç örnek yazarım ama yine uğraştırır araştırmak zorunda kalırsın hem yazar hem anlatırım diyordum.

    delidolu1adam adlı üyeden alıntı: mesajı görüntüle
    @oguzhane; dostum bu şekildede çalışıyor sorun yok benim sorunum farklı.

    Locale klasörü ve içindekileride kontrol ettirmem için bu kod üzerinde ne yapılabilir yada sıfırdan farklı kod mu yazılır anlayan bilen arkadaşlardan yardım istiyorum hiç anlamam bu işlerden ))) Eğer zahmet olmazsa sende 2 satır kod yazıp yardımcı olabilirsin

    @TurkceApi; dostumsaat geç oldu bu saatte telefondan yazıp rahatsız etmek istemedim dilersen sana özel mesaj gönderdim dosyalara bakıp düzenleyip tekrar upload edebilirsin yada artık gündüz yada akşam denk gelirsek dediğin gibi yaparız.




    Alıntı
    1: Program ilk başladığında Locale klasörü yoksa indirilsin mi diyor evet diyorsun Locale klasörü oluşturuyor.- Sunucuda Locale klasöründeki dosyalar yoksa hata veriyor ve program devam ediyor, buraya kadar herşey güzel.- Ancak programı 2. açtığımda bu hatayı vermiyor, çünkü Locale klasörü var ama içindeki dosyalar yok.
    ifler ile ilgili sıkıntı vardı onu hallettim. şuan bu kısımda klasör yok ise soruyor eğer klasör varsa dosyaları indiriyor.

    Alıntı
    3: Butonlara tıkladığımda topbar sağ üst köşede iconlar ve isimler değişecek.
    private void TopbarIsimIconDegis(string isim, FontAwesome.Sharp.IconChar icon){
                IconTitle.IconChar = icon;
                LabelTitle.Text = isim;
    }
    böyle bir kod bloğu ekledim. Menüler zaten FontAwesome butonundan oluştuğu için sender i butona çevirip içindeki text i ve IconChari buraya gönderirsen değişir. Aşağıda ki örnek gibi.

        private void BtnYoutubeVideo_Click(object sender, EventArgs e)
            {
                var btn = sender as IconButton;
                TopbarIsimIconDegis(btn.Text, btn.IconChar);
                System.Diagnostics.Process.Start("https://www.youtube.com/delidolu1adam");
            }
    5. Kısımdaki olay zaten ilk aşamadaki olay. Aynı anda halledilmiş oldu. progressbar yazmışsın ama açıkcası çok ufak dosyalar göz açıp kapayıncaya kadar iniyor. Yinede istiyorsan araştırman gerekecek. Zor değil.
    6. Kısımdaki da halledildi. Basitçe anlatayım Birini Açarken diğerlerini kapatma komutunu yazman yeterli.

    7. İsteğine gelince formu baştan yazmak daha kolay gibi Açıkcası menü olayını çözemedim desem yeridir ama boş olursam bir bakarım bu menüye.
  • 19-04-2020, 12:37:57
    #6
    @TurkceApi; Allah razı olsun gerçekten, hepsini halletmişsin inan çok mutlu oldum çok sağol.

    O butonu taşıdım ben. Panel içinde olduğu için düğmelerin Dock değerini hep top yapmıştım. Serbest bırakıp elle konumlandırırsam program başladığında butonlar darma dağın oluyordu. bende Designer.cs dosyasından elimde kodları alıp istediğim butonun altına taşıdım düzeldi

    Dediğin çok mantıklı geldi şu an sürekli dosya indirip uyarı mesajı veriyor, dosyalar aynı değilse indirsin mi diye sorsa daha mantıklı.