Şimdi Ara

C# hakkında yardım gerekiyor

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
5
Cevap
0
Favori
645
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba, arkadaşlar Dosyaların güncel olup olmadığını kontrol ettirmek ve değilse indirtmek istiyorum.

    Elimde bir oyunun Türkçe çevirisine ait 3 adet dosya var bu dosyalar her gün güncelleniyor Türkçeye çevrilerek ve ben bu dosyaları her açılışta kontrol ettirmek ve güncel değilse sunucudan indirtmek istiyorum.


    Elimdeki Mevcut KOD tam istediğim gibi olmadı, ve buradan sonrası beni aştı gerçekten:

    public partial class FormMain : Form
    {

    // Dosya yolları
    public string FilePath1 = Application.StartupPath + @"\Locale\en_us_data.dat";
    public string FilePath2 = Application.StartupPath + @"\Locale\en_us_data.dir";
    public string FilePath3 = Application.StartupPath + @"\Locale\\Geo-Md.ttf";

    public FormMain()

    {
    InitializeComponent();

    // Başlangıçta FormStarting gösterilsin
    PanelMain.Controls.Add(new FormStarting());

    // Başlangıçta Locale klasörünü kontrol et
    if (!Directory.Exists(Application.StartupPath + @"\Locale"))

    // Locale klasörü mevcut değilse uyar
    if (MessageBox.Show("HATA: Program dizininde Locale klasörü bulunamadı!
    Eksik dosyalar indirilsin mi?", "Locale klasörü eksik!",
    MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

    // Kullanıcı seçimi Evet olursa klasörü oluştur ve alt kısımdaki dosyaları indir
    Directory.CreateDirectory(Application.StartupPath + @"\Locale");
    else

    // Kullanıcı hayır derse klasör oluşturmayı iptal et ve dosyaları indirme
    return;


    // Program her başladığında dosyaları otomatik olarak arkaplanda indir
    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);

    // Dil dosyalarını otomatik indirildiğinde mesaj göster
    // MessageBox.Show("TEBRİKLER: Dil dosyaları başarıyla indirildi!", "Dil dosyaları indirildi", MessageBoxButtons.OK, MessageBoxIcon.Information);

    }

    // Dosyalar eğer mevcut sunucuda yoksa uyar
    catch
    {
    MessageBox.Show("HATA: Locale klasörü belirtilen sunucu adresinde bulunamadı!
    Lütfen geliştiriciyle iletişime geçip bilgilendirin.", "Locale klasörü bulunamadı!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    }



    Örnek vermek gerekirse;

    Program her açılışta Locale klasörü varmı yok mu kontrol edecek.
    Yoksa kullanıcıyı bir mesaj ile uyaracak.
    HATA: Program dizininde Locale klasörü yok! indirmek ister misin?
    Evet > Program dizininde bir Locale klasörü oluşturacak ve sunucudaki 3 dosyayı indirecek.
    Hayır > Klasör oluşturmadan, dosya indirmeden program çalışmaya devam edecek.


    Program her açılışta dosyaların güncel olup olmadığını kontrol edecek.
    Dil dosyaları eğer mevcut dosyalardan boyut yada uzunluk olarak farklıysa kullanıcıyı uyaracak.
    HATA: Dil dosyalarınız güncel değil! şimdi indirmek ister misiniz?
    Evet > Porgram dizinindeki Locale klasörü içine sunucudaki dosyalar indirilecek.
    Hayır > Hiç bir işlem yapmadan program çalışmaya devam edecek.

    Dosyaların indirileceği dizin programın yanında bir Locale klasörü

    Dosyaların sunucu adresi:

    1:http://www.okolay.net/serhat/ps2/locale/en_us_data.dat

    2:http://www.okolay.net/serhat/ps2/locale/en_us_data.dir

    3:http://www.okolay.net/serhat/ps2/locale/Geo-Md.ttf

    Elimdeki programı sağdan soldan bakarak yardım alarak buraya kadar getirdim son 2 sorunum kaldı ama en önemlisi bu.
    Bu konuda ücretli yada ücretsiz yardımcı olabilecek arkadaşlar varsa lütfen ilgilenebilir mi?

    Herşey Türkçe oyun oynamak için :)



    < Bu mesaj bu kişi tarafından değiştirildi Guazy -- 20 Nisan 2020; 16:46:50 >







  • kabaca böyle birşey exceptionları bakarsın

    private string uygulamayolu = Application.StartupPath + "\\Locale";
    private string[] eskidosyalarmd5 = new string[3];
    private string[] yenidosyalarmd5 = new string[3];
    string geçiciklasör = System.IO.Path.GetTempPath();
    string CalculateMD5(string filename)
    {
    using (var md5 = MD5.Create())
    {
    using (var stream = File.OpenRead(filename))
    {
    var hash = md5.ComputeHash(stream);
    return BitConverter.ToString(hash).Replace("-", "").ToLowerInvariant();
    }
    }
    }
    bool dosyamd5kontrol()
    {
    if (File.Exists(uygulamayolu + "\\en_us_data.dat") && File.Exists(uygulamayolu + "\\en_us_data.dir") && File.Exists(uygulamayolu + "\\Geo-Md.ttf"))
    {
    eskidosyalarmd5[0] = CalculateMD5(uygulamayolu + "\\en_us_data.dat");
    eskidosyalarmd5[1] = CalculateMD5(uygulamayolu + "\\en_us_data.dir");
    eskidosyalarmd5[2] = CalculateMD5(uygulamayolu + "\\Geo-Md.ttf");
    return true;
    }
    return false;
    }
    private void dosyaindir()
    {

    WebClient wClient = new WebClient();
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dat", geçiciklasör + "en_us_data.dat");
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/en_us_data.dir", geçiciklasör + "en_us_data.dir");
    wClient.DownloadFile("http://www.okolay.net/serhat/ps2/locale/Geo-Md.ttf", geçiciklasör + "Geo-Md.ttf");

    yenidosyalarmd5[0] = CalculateMD5(geçiciklasör + "en_us_data.dat");
    yenidosyalarmd5[1] = CalculateMD5(geçiciklasör + "en_us_data.dir");
    yenidosyalarmd5[2] = CalculateMD5(geçiciklasör + "Geo-Md.ttf");
    }
    private void dosyakopyala()
    {
    File.Copy(geçiciklasör + "en_us_data.dat", uygulamayolu + "\\en_us_data.dat", true);
    File.Copy(geçiciklasör + "en_us_data.dir", uygulamayolu + "\\en_us_data.dir", true);
    File.Copy(geçiciklasör + "Geo-Md.ttf", uygulamayolu + "\\Geo-Md.ttf", true);
    }
    void Main()
    {

    if (!Directory.Exists(uygulamayolu))
    {
    if (MessageBox.Show("HATA: Program dizininde Locale klasörü bulunamadı! Eksik dosyalar indirilsin mi ? ", "Locale klasörü eksik!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
    Directory.CreateDirectory(uygulamayolu);
    dosyaindir();
    dosyakopyala();
    }
    else
    {
    if (dosyamd5kontrol())
    {
    dosyaindir();
    if (eskidosyalarmd5[0] != yenidosyalarmd5[0] || eskidosyalarmd5[1] != yenidosyalarmd5[1] || eskidosyalarmd5[2] != yenidosyalarmd5[2])
    {
    if (MessageBox.Show("Dil dosyalarınız güncel değil! şimdi indirmek ister misiniz?", "Locale klasörü eksik!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) return;
    dosyakopyala();
    }
    }
    }



    }

    // Define other methods and classes here





  • Çok teşekkür ederim Gökşen,

    Edit: Diğer sorunumu sağolsun bir arkadaş bu basit şey için para ödemeni istemedim diyerek halletti. Kendisine teşekkür ediyorum :)



    < Bu mesaj bu kişi tarafından değiştirildi Guazy -- 21 Nisan 2020; 0:6:34 >
  • Programı istediğiniz şekilde tasarlayabilirim, PM gönderdim
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.