SA-MP Client için bir dizin belirlemek istiyorum. Doğru dizini seçsem bile hata veriyor ve MessageBox kapanmıyor. Bilerek hatalı dizin seçtiğimde MessageBox'u kapatmak için 3 kere tıklamam gerekiyor. Yardımlarınızı bekliyorum. Kodlarım bu şekilde:
private void Button3_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
FileInfo[] rgFiles = di.GetFiles();
foreach (FileInfo fi in rgFiles)
{
if (fi.Name == "samp.exe" && fi.Name == "samp.dll")
{
ayarlar12.Default.konum = fbd.SelectedPath;
MessageBox.Show(string.Format("Yeni dosya yolu: {0}", ayarlar12.Default.konum), "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (fi.Name != "samp.exe" && fi.Name != "samp.dll")
{
MessageBox.Show("Lütfen geçerli bir dosya yolu giriniz.", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
Uyarı mesajını gönderdikten sonra döngüyü durdurman gerek. Durdurmazsan döngü her turda aynı kontrolleri tekrar yapacaktır. Bunun içinde "break;" deyimini kullanman lazım.
Kolay gelsin.
private void Button3_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
FileInfo[] rgFiles = di.GetFiles();
foreach (FileInfo fi in rgFiles)
{
if (fi.Name == "samp.exe" && fi.Name == "samp.dll")
{
ayarlar12.Default.konum = fbd.SelectedPath;
MessageBox.Show(string.Format("Yeni dosya yolu: {0}", ayarlar12.Default.konum), "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else if (fi.Name != "samp.exe" && fi.Name != "samp.dll")
{
MessageBox.Show("Lütfen geçerli bir dosya yolu giriniz.", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
}
}
Hocam hata mesajı sorunu düzeldi çok sağ ol ama şimdi de "C:\Program Files (x86)\Rockstar Games\GTA San Andreas"ı seçmeme rağmen hala hata mesajını alıyorum.
Alıntı yapılan: darkwing - 01 Temmuz 2019, 00:15:10
Hocam hata mesajı sorunu düzeldi çok sağ ol ama şimdi de "C:\Program Files (x86)\Rockstar Games\GTA San Andreas"ı seçmeme rağmen hala hata mesajını alıyorum.
O zaman ilk uyarıya da aynısını eklemek gerek.
private void Button3_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
FileInfo[] rgFiles = di.GetFiles();
foreach (FileInfo fi in rgFiles)
{
if (fi.Name == "samp.exe" && fi.Name == "samp.dll")
{
ayarlar12.Default.konum = fbd.SelectedPath;
MessageBox.Show(string.Format("Yeni dosya yolu: {0}", ayarlar12.Default.konum), "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
else if (fi.Name != "samp.exe" && fi.Name != "samp.dll")
{
MessageBox.Show("Lütfen geçerli bir dosya yolu giriniz.", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
}
}
Ekledim fakat hala aynı hata mesajını alıyorum.
Alıntı yapılan: darkwing - 01 Temmuz 2019, 00:20:33
Ekledim fakat hala aynı hata mesajını alıyorum.
Şöyle bir mantık hatası var. fi.Name'yi iki değere birden eşitlemişsin. Bir değişkenin iki değeri birden olamaz. O kısmı && (ve koşulu) değil || (veya koşulu) olarak düzenlersen sorun düzelecektir. Aşağıda ki kodu dener misin?
private void Button3_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
FileInfo[] rgFiles = di.GetFiles();
foreach (FileInfo fi in rgFiles)
{
if (fi.Name == "samp.exe" || fi.Name == "samp.dll")
{
ayarlar12.Default.konum = fbd.SelectedPath;
MessageBox.Show(string.Format("Yeni dosya yolu: {0}", ayarlar12.Default.konum), "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
break;
}
else if (fi.Name != "samp.exe" && fi.Name != "samp.dll")
{
MessageBox.Show("Lütfen geçerli bir dosya yolu giriniz.", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
}
}
Seçtiğin dizinde samp.dll ve samp.exe mevcut mu?
Evet bu şekilde. (http://prntscr.com/o8r8qu)
Alıntı yapılan: darkwing - 01 Temmuz 2019, 00:29:30
Evet bu şekilde. (http://prntscr.com/o8r8qu)
private void Button3_Click(object sender, EventArgs e)
{
bool l_fExists = false;
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
{
DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
FileInfo[] rgFiles = di.GetFiles();
foreach (FileInfo fi in rgFiles)
{
if (fi.Name == "samp.exe" || fi.Name == "samp.dll")
{
ayarlar12.Default.konum = fbd.SelectedPath;
MessageBox.Show(string.Format("Yeni dosya yolu: {0}", ayarlar12.Default.konum), "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
l_fExists = true;
break;
}
}
if (l_fExists == false)
{
MessageBox.Show("Lütfen geçerli bir dosya yolu giriniz.", "HATA", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Oldu hocam @CaLderoN çok teşekkürler. Konu K&A.