Problem ze sprawdzaniem istnienia plików

0

Mam taki problem:

Napisałem polecenie mające sprawdzac istnienie danego pliku i w zalezności czy on jest czy nie wykonac odpowiednia akcje. Niestety w przypadku nie istnienia pliku wyskakuje bład :/

Próbowałem na dwa sposoby:

private void button10_Click(object sender, EventArgs e)  // Technologie - [Wczytaj];
        {
            FileInfo Badania_ia = new FileInfo(@"E:\Andromeda\Impedium Andromeda\Badania.ia");
            if (Badania_ia.Exists)
            {
                StreamReader Tech_Wczytaj = File.OpenText(@"E:\Andromeda\Impedium Andromeda\Badania.ia");
                string Dane = Tech_Wczytaj.ReadToEnd();

                string[] Tech_W = Dane.Split(new char[] { '.' });
                {
                    textBox31.Text = Tech_W[0];
                    [...]
                    textBox46.Text = Tech_W[15];
                }
                Tech_Wczytaj.Close();
            }
            else
            {
                button11.Click += new EventHandler(button11_Click);
            }
        }
private void button10_Click(object sender, EventArgs e)  // Technologie - [Wczytaj];
            if (File.Exists(@"E:\Andromeda\Impedium Andromeda\Badania.ia"))
            {
                StreamReader Tech_Wczytaj = File.OpenText(@"E:\Andromeda\Impedium Andromeda\Badania.ia");
                string Dane = Tech_Wczytaj.ReadToEnd();

                string[] Tech_W = Dane.Split(new char[] { '.' });
                {
                    textBox31.Text = Tech_W[0];
                    [...]
                    textBox46.Text = Tech_W[15];
                }
                Tech_Wczytaj.Close();
            }
            else
            {
                button11.Click += new EventHandler(button11_Click);
            }
        }

Prosze o pomoc w rozwiazaniu problemu :-)</cpp>

0

Bez rodzaju wyjatku moze byc dosyc trudno zgadnac...

acz sprobojmy... nie masz praw dostepu do pliku? :) Jakas inna aplikacja uzywa pliku na wylacznosc? a moze tego pliku tak naprawde nie ma, a istnieje tylko w tablicy plikow? :)

0

Hmm.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button10_Click(object sender, EventArgs e)
        {
            if (File.Exists(@"C:\NieistniejacyPlik.txt"))
            {
                MessageBox.Show("Plik istnieje, działam!");
            }
            else
            {
                MessageBox.Show("Plik nie istnieje, przypisuje event");
                button11.Click += new EventHandler(button11_Click);
            }
        }

        private void button11_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Tutaj Button11 !");
        }
    }

To działa u mnie (utworzyłem na formie dwa buttony i ponazywałem je tak, jak Ty).

0

Rozumiem że jakiś wyjątek się pojawia, powinien on mieć jakaś nazwę, jakąś treść. Jak używasz środowiska które o tym informacji nie pokazuje to zrób te operacje w bloku try{}catch{}

try
{
// kod
}
catch(Exception err)
{
MessageBox.Show(err.Message.ToString())
}

Możliwe że po treści błędu dojdziesz do tego co jest nie tak. Ponieważ testowałem ten kod u siebie i nie mając pliku do którego jest podana ścieżka, sprawdzenie czy plik istnieje jest dobrze wykonywane i program przechodzi do else.

0

Troche zmodyfikowałem kod ale problem nadal istnieje ;/ Teraz tylko troche inny ;-P bo nie działa nawet przy istniejacym pliku ;-(

Oto co sie pojawia po urzyciu nieszczesnego przycisku:
user image
http://w407.wrzuta.pl/obraz/powieksz/agP4659eIKY

0

try catch i daj tresc wyjatku jak misiekZ sugerowal.

0
ShurTugal napisał(a)

Troche zmodyfikowałem kod ale problem nadal istnieje ;/ Teraz tylko troche inny ;-P bo nie działa nawet przy istniejacym pliku ;-(

Oto co sie pojawia po urzyciu nieszczesnego przycisku:
user image
http://w407.wrzuta.pl/obraz/powieksz/agP4659eIKY

D

Rozwiązanie jest bardzo proste, na tym screenie w drugiej linijce widać żółtą strzałkę na tle czerwonej kropki. Ta kropka oznacza breakpoint, miejsce w którym program się zatrzymuje i możesz go sobie debugować. Kliknij na ta kropkę by ją usunąć i problem zniknie.

0

@ShurTugal - taki offtop - nie myślałeś nigdy o tym, żeby nazywać kontrolki po ludzku, a nie nic niemówiącymi numerami?

0

[wstyd] idiota ze mnie [rotfl] juz działa [browar] dzieki za uwage ;-)
A co do nazewnictwa to mi tam odpowiada ;-P

0

Oj, ShurTugal... topic sie tak rozwinal... i chcesz nas tak zostawic bez poznania odpowiedzi? Co bylo problemem? :)

0

chyba ten breakpoint

0

Hehe :) dokładnie :) ta mała wredna kropeczka chamowała program ;]
Ale jednak jest problem dalej :-P

Bo program wykonuje operacje jesli "If" jest spełnione, ale jesli "If" jest nie spełnione to nie działa mi "else" :-/ ale stawiam ze czegos tam brakuje [glowa] . Moze ktos mi napisac jak powinna wygladac operacja "else" alby program 'klikną' na button11 [???]

Podam jeszcze kod:

private void button10_Click(object sender, EventArgs e)  // Technologie - [Wczytaj];
        {
            Sciezka adres_badania = new Sciezka();

            FileInfo Plik_Badania = new FileInfo(adres_badania.Adres + "/Badania.ia");

            if (Plik_Badania.Exists)
            {
                StreamReader Tech_Wczytaj = File.OpenText(adres_badania.Adres + "/Badania.ia");
                string Dane = Tech_Wczytaj.ReadToEnd();

                string[] Tech_W = Dane.Split(new char[] { '.' });
                {
                    textBox31.Text = Tech_W[0];
                    textBox32.Text = Tech_W[1];
                    textBox33.Text = Tech_W[2];
                    textBox34.Text = Tech_W[3];
                    textBox35.Text = Tech_W[4];

                    textBox41.Text = Tech_W[5];
                    textBox42.Text = Tech_W[6];
                    textBox43.Text = Tech_W[7];

                    textBox36.Text = Tech_W[8];
                    textBox37.Text = Tech_W[9];
                    textBox38.Text = Tech_W[10];
                    textBox39.Text = Tech_W[11];
                    textBox40.Text = Tech_W[12];

                    textBox44.Text = Tech_W[13];
                    textBox45.Text = Tech_W[14];
                    textBox46.Text = Tech_W[15];
                }
                Tech_Wczytaj.Close();
            }
            else
            {
                button11.Click += new EventHandler(button11_Click);
                
            }
        }
0

Hmm szczerze mówiąc, zaczynasz działać trochę na nerwy.
Wiesz czym jest event? Przypisanie delegata do eventa Click buttona nie powoduje jego kliknięcia, wypadaloby o tym poczytać, ono tylko przypisuje delegata ("metodę") do tego zdarzenia, dzięki temu po kliknięciu w button wywołasz te metodę.

a jeśli chcesz kliknąć w button11 w programie, wystarczy poszukać:
http://lmgtfy.com/?q=Button+Click+Event+Programmatically
albo:
http://lmgtfy.com/?q=click+button+in+program+c%23

Zajęło mi to 5 sekund, każda z tych stron prowadzi do rozwiązania, które można znaleźć bez trudu.

btw nie wiem czemu przypisujesz klik w programie (można to zrobić w designerze), ale jeśli to konieczne to musisz przypisać delegata przed wykonaniem metody, która znajdziesz wyżej.

0

zamiast button11.Click += new EventHandler(button11_Click); wklej kod ktory jest wykonywany po kliknieciu drugiego guzika...

Panowie, nasz kolega chyba dopiero sie uczy, event to dla niego masakra, nie piszmy mu o delegatach, bo chlopak spac nie bedzie mogl :) a co najgorsze, zrazi sie do tak pieknego jezyka jakim jest C# :D

0

Owszem poczatkujacy, ale o tym pisałem;) a ty tez sie wiedza nie popisałes :-) crtl+c i crtl+v to nawet idiota umie urzyc ;) a ja w tym wypadku chce aby klikniety został jeden przycisk, ale w innym bede miał ich z 10 ;) wiec wole sie dowiedzeic jak tego urzyc;) i predzej sie zraze co do Ciebie niz co do C# ;-)

PS. z googla umiem korzystac ;-P ale mój angielski byc bardzo marny ;-)

0

w ten sposob np:
buttonx.PerformClick();

0

Dzieki wielkie HideYoshi :) Działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1