Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Object reference not set to an instance

[es] :: .NET :: C# Object reference not set to an instance

[ Pregleda: 1982 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

shocknp
zeljko maksimovic
beograd

Član broj: 333605
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon C# Object reference not set to an instance26.12.2016. u 22:22 - pre 89 meseci
Zdravo svima,

Imam problem sa delom koda gde trebam da proverim da li je projekcija uneta,tj. da li naziv filma koji unosim u textbox-u "txtNazivFilma" postoji u fajlu projekcija.txt,ali ne znam zbog cega.Bio bih vam zahvalan ako bi mi pomogli,jer vec neko vreme ne mogu da otkrijem sta je u pitanju.

Evo klase gde mi izbacuje gresku(greska je oznacena je sa *****) :

Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace zeljko_nrt_7514
{
    public partial class AProjekcije : Form
    {
        List<Sala> listaSala;
        List<Film> listaFilmova;
        List<Projekcija> listaProjekcija;
        Sala sala;
        Film film;
        int idProjekcije;
        string putanjaSala;
        string putanjaFilm;
        string putanjaProjekcija;
        public AProjekcije()
        {
            InitializeComponent();

            listaProjekcija = new List<Projekcija>();
            listaSala = new List<Sala>();
            listaFilmova = new List<Film>();
            putanjaSala = "sale.txt";
            putanjaFilm = "filmovi2.txt";
            putanjaProjekcija = "projekcije.txt";
        }

        private void btnUnesi_Click(object sender, EventArgs e)
        {
            bool postojiFilm = false, postojiSala = false, postojiProjekcija = false;

            if (!File.Exists(putanjaFilm) || new FileInfo(putanjaFilm).Length == 0 || !File.Exists(putanjaSala) || new FileInfo(putanjaSala).Length == 0)
            {
                MessageBox.Show("Azurirajte film i salu.");
                return;

            }
            //de sala
            BinaryFormatter bf1 = new BinaryFormatter();
            FileStream fs1 = File.OpenRead(putanjaSala);

            listaSala = bf1.Deserialize(fs1) as List<Sala>;
            fs1.Dispose();
            //de film
            BinaryFormatter bf2 = new BinaryFormatter();
            FileStream fs2 = File.OpenRead(putanjaFilm);

            listaFilmova = bf2.Deserialize(fs2) as List<Film>;
            fs2.Dispose();
            //uzimanje filma iz liste
            foreach(Film f in listaFilmova)
            {
                if(txtNazivFilma.Text.Equals(f.naziv))
                {
                    film = f;
                    postojiFilm = true;
                    break;
                }
            }
            //uzimanje sale iz liste
            foreach (Sala s in listaSala)
            {
                if (txtSala.Text.Equals(s.naziv))
                {
                    sala = s;
                    postojiSala = true;
                    break;
                }
            }
           
            //ako postoje film i sala obavesti
            if (postojiFilm == false)
            {
                MessageBox.Show("Uneti film ne postoji.");
                return;
            }
            if (postojiSala == false)
            {
                MessageBox.Show("Uneta sala ne postoji.");
                return;
            }
           



            //de i sr projekcije ako postoji putanja--------------------------------------------------
            if (File.Exists(putanjaProjekcija) && new FileInfo(putanjaProjekcija).Length > 0)
            {
                int id;

                BinaryFormatter bf = new BinaryFormatter();
                FileStream fs = File.OpenRead(putanjaProjekcija);

                listaProjekcija = bf.Deserialize(fs) as List<Projekcija>;
                fs.Dispose();
                listBox1.DataSource = listaProjekcija;
                id = listaProjekcija.Count + 1;

                MessageBox.Show("Uspesno ocitavanje");

                foreach (Projekcija p in listaProjekcija)
                {
 *************if (txtNazivFilma.Text.Equals(p.film.naziv))*********************
                    {
                        postojiProjekcija = true;
                        break;
                    }
                }
                if (postojiProjekcija == true)
                {
                    MessageBox.Show("Projekcija je vec uneta.");
                    return;
                }

                BinaryFormatter bf3 = new BinaryFormatter();
                FileStream fs3 = File.OpenWrite(putanjaProjekcija);
                listaProjekcija.Add(new Projekcija(id, film, sala, txtVreme.Text));
                bf3.Serialize(fs3, listaProjekcija);
                fs3.Dispose();
                MessageBox.Show("Uspesno upisivanje");
            }
            else 
            {
                //sr projekcije ako nema putanje
                BinaryFormatter bf4 = new BinaryFormatter();
                FileStream fs4 = File.OpenWrite(putanjaProjekcija);
                listaProjekcija.Add(new Projekcija(1, film, sala, txtVreme.Text));
                bf4.Serialize(fs4, listaProjekcija);
                fs4.Dispose();
                MessageBox.Show("Uspesno upisivanje");
            }
        }
    }
}



A evo i klase Projekcija.cs

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zeljko_nrt_7514
{
    [Serializable]
    class Projekcija
    {
        public int id;
        public Film film;
        public Sala sala;
        public string vreme;

        public Projekcija(int id, Film film, Sala sala, string vreme)
        {
            this.id = id;
            this.film = film;
            this.sala = sala;
            this.vreme = vreme;
        }
        public override string ToString()
        {
            return id + " -" + film + "- " + sala + " -" + vreme;
        }
    }
}



Evo i slike gde izbacuje gresku:
Slika

Hvala unapred.

[Ovu poruku je menjao shocknp dana 26.12.2016. u 23:33 GMT+1]
 
Odgovor na temu

AMD guy
Miroslav
.NET developer

Član broj: 128930
Poruke: 1007

Sajt: www.its.edu.rs


+38 Profil

icon Re: C# Object reference not set to an instance26.12.2016. u 23:54 - pre 89 meseci
Object reference not set to an instance of an object. In simple words this error means that you are trying to use a reference of an object which is null i.e. you haven't initialized it yet. If you have to use any object you have to first initialize it.

Jel si probao da stavis breakpoint na gresku da vidis koja je vrednost ili da nije Null?
Koliko vidim na slici p.film je Null, verovatno zbog toga ti daje tu gresku.

Proveri
Code:
foreach (Projekcija p in listaProjekcija)
, sta li sadrzi listaProjekcija?
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
 
Odgovor na temu

shocknp
zeljko maksimovic
beograd

Član broj: 333605
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 00:03 - pre 89 meseci
Da u pravu ste, vrednost je null,ali mi nije jasno zasto? cini mi se sve prethodno odradio kako treba.
 
Odgovor na temu

AMD guy
Miroslav
.NET developer

Član broj: 128930
Poruke: 1007

Sajt: www.its.edu.rs


+38 Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 00:08 - pre 89 meseci
Prepostavljam da radis uporedjivanje, sa jedne strane imas list projekcija u List<Projekcija>(); a sa druge imas text u textboxu pa uporedjujes

Ako uradis samo
Code:
listaProjekcija = new List<Projekcija>();


to kreira samo listu tipa Projekcija sa null vrednostima, tu listu prvo moras da popunis da bi imao nesto da uporedjujes.
Jel
Code:
listaProjekcija
ima neke vrednosti?
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
 
Odgovor na temu

shocknp
zeljko maksimovic
beograd

Član broj: 333605
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 00:14 - pre 89 meseci
Ja se izvinjavam,nisam lepo procitao
foreach (Projekcija p in listaProjekcija) sadrzi:slika
ali if (txtNazivFilma.Text.Equals(p.film.naziv)) je null :slika2

listaProjekcija je popunjena deserijalizacijom fajla projekcije.txt.
isto tako i listaFilmova i listaSala pune se iz fajlova filmovi.txt i sale.txt

ja sam listaFilmova i listaSala popunio ,a nakon toga i listaProjekcija.Ono gde zeza jeste kada proverava da li je film vec dodat u projekcije,tj uporedjuje string za naziv filma koji zelim da dodam iz textBox-a sa listaProjekcija.film.naziv
 
Odgovor na temu

AMD guy
Miroslav
.NET developer

Član broj: 128930
Poruke: 1007

Sajt: www.its.edu.rs


+38 Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 00:20 - pre 89 meseci
A jel mozes da postavis i klasu Film?
http://i.imgur.com/V3feW.jpg
http://on.wsj.com/H9yjz6 -- India Graduates Millions, but Too Few Are Fit to Hire
 
Odgovor na temu

shocknp
zeljko maksimovic
beograd

Član broj: 333605
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 00:22 - pre 89 meseci
Naravno:

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace zeljko_nrt_7514
{
    [Serializable]
    public class Film
    {
        public int idFilm, idKorisnik;
        public string naziv, zanr, opis, sala, slikaEnter, slikaLeave;
        public double ocena;

        public Film(int idFilm, int idKorisnik, string naziv, string zanr, string opis, double ocena, string sala, string slikaEnter, string slikaLeave)
        {
            this.idFilm = idFilm;
            this.idKorisnik = idKorisnik;
            this.naziv = naziv;
            this.zanr = zanr;
            this.opis = opis;
            this.ocena = ocena;
            this.sala = sala;
            this.slikaEnter = slikaEnter;
            this.slikaLeave = slikaLeave;
        }
        public override string ToString()
        {
            return idFilm + " " +idKorisnik+" "+ naziv+" "+zanr+" "+opis+" "+ocena+" "+sala;
        }
        public string Slika { get { return slikaEnter; } }
    }
}

 
Odgovor na temu

shocknp
zeljko maksimovic
beograd

Član broj: 333605
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: C# Object reference not set to an instance27.12.2016. u 01:39 - pre 89 meseci
Uspeo sam da popravim ovu gresku,ali mi se sada isto desava sa drugim delom aplikacije,ali ne uvek.Da li to moze da bude zato sto sam na dosta mesta deserijalizovao i serijalizovao?

slika
slika
 
Odgovor na temu

[es] :: .NET :: C# Object reference not set to an instance

[ Pregleda: 1982 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.