27/03/16 23:20
Thejuster
Salve ragazzi.
Credo o che sia l'ora, magari lo stress, o che mi perdo tra l'enorme grandezza del progetto.
Ma in tutta la giornata non ne sono venuto a capo.
forse sbaglio qualche cavolata che non riesco a capire dove sta.
Ed'è pure strano che chiedo aiuto su questa cosa.
ma non trovo il motivo di questo errore.
Magari sta proprio sotto al mio naso e non me ne rendo conto.
partiamo dalla struttura
Test n° 1: Prova di inserimento valori per testare eventuali problemi
Errore: Riferimento a un oggetto non impostato su un'istanza di oggetto.
Codice:
Dal debugger il t.point è null.
Test alternativo: Inserimento valori
Erorre: la lista Point non viene aggiornata rimane sempre su 0
Codice:
A ( Creazione di un elemento )
B: ( Inserimento di prova sia nella lista ostacoli che in quella Point della struttura )
C: (Salvataggio dei valori)
C: (Recupero dei valori precedentemente creati)
In questo caso, l'operazione per aggiungere gli elementi alla lista Tileset funziona.
ma quando recupero i valori,
il numero di elementi presenti nella lista point contenuta nella struttura è sempre = a 0.
Riuscite a capire dov'è il problema?
Credo o che sia l'ora, magari lo stress, o che mi perdo tra l'enorme grandezza del progetto.
Ma in tutta la giornata non ne sono venuto a capo.
forse sbaglio qualche cavolata che non riesco a capire dove sta.
Ed'è pure strano che chiedo aiuto su questa cosa.
ma non trovo il motivo di questo errore.
Magari sta proprio sotto al mio naso e non me ne rendo conto.
partiamo dalla struttura
/// <summary> /// Struttura tileset /// i point sono definiti come punti di ostacoli. /// se esempio è definito 3,5 sarà 3 * 32 X 5 * 32 , 32 ,32 /// </summary> [Serializable] public struct _tileset { public string filename; public string tilename; public int id; public List<Point> point; } public List<_tileset> Tileset = new List<_tileset>();
Test n° 1: Prova di inserimento valori per testare eventuali problemi
Errore: Riferimento a un oggetto non impostato su un'istanza di oggetto.
Codice:
MappyLib.Database._tileset t = new MappyLib.Database._tileset(); for (int i = 0; i < 10; i++) { t.filename = project_path + "\" + project_name + "\Content\data\Tileset\" + nsTextBox150.Text; t.id = i; t.tilename = "a"; for (int j = 0; j < i * 5; j++) { t.point.Add(new Point(5,5)); // Errore qui } } db.Tileset.Add(t); for (int i = 0; i < db.Tileset.Count; i++) { MessageBox.Show(string.Format("Tileset:{0}\nNome:{1}\nOstacoli:{2}", db.Tileset[i].filename, db.Tileset[i].tilename, db.Tileset[i].point.Count())); }
Dal debugger il t.point è null.
Test alternativo: Inserimento valori
Erorre: la lista Point non viene aggiornata rimane sempre su 0
Codice:
A ( Creazione di un elemento )
MappyLib.Database._tileset t = new MappyLib.Database._tileset(); t.filename = proj_path + "\" + proj_name + "\Content\data\Tileset\" + ComboBox6.Text; t.id = tilelist.Items.Count; t.tilename = TextBox7.Text; t.point = ostacoli; //ostacoli. Lista <Point> Provvisoria vuota. tilelist.Items.Add(t.tilename); db.Tileset.Add(t); Assembly a = Assembly.Load("Languague"); ResourceManager rm = new ResourceManager("Languague.Italian", a); MessageBox.Show(rm.GetString("tilest_msg149"), "Mire", MessageBoxButtons.OK, MessageBoxIcon.Error);
B: ( Inserimento di prova sia nella lista ostacoli che in quella Point della struttura )
ostacoli.Add(new Point(x, y)); db.Tileset[tileid].point.Add(new Point(x, y));
C: (Salvataggio dei valori)
MappyLib.Database._tileset t = new MappyLib.Database._tileset(); t = db.Tileset[tileid]; db.Tileset[tileid] = t; //rimpiazzo il salvataggio
C: (Recupero dei valori precedentemente creati)
ostacoli.Clear(); //svuoto la lista provvisoria string nome = tilelist.Items[tilelist.SelectedIndex].ToString(); MappyLib.Database._tileset t = new MappyLib.Database._tileset(); //Ciclo, recupero il nome del tiles selezionato dalla lista //se quello selezionato dall'utente è presente nel database dei tileset //imposto la struttura t con i valori recuperati for (int i = 0; i < db.Tileset.Count; i++) { if (db.Tileset[i].tilename == nome) { t = db.Tileset[i]; tileid = i; } } TextBox7.Text = t.tilename; ostacoli = t.point; pictureBox14.Image = Image.FromFile(t.filename); pictureBox14.Refresh(); RicaricaPassaggi(t); /// <summary> /// Ricarico dove si può passare e dove no /// </summary> /// <param name="t"></param> public void RicaricaPassaggi(MappyLib.Database._tileset t) { Graphics g = Graphics.FromHwnd(pictureBox14.Handle); for (int i = 0; i < t.point.Count; i++) { g.DrawImage(Properties.Resources.image__www_imagesplitter_net__13_0,new Rectangle(t.point[i].X,t.point[i].Y,32,32)); } }
In questo caso, l'operazione per aggiungere gli elementi alla lista Tileset funziona.
ma quando recupero i valori,
il numero di elementi presenti nella lista point contenuta nella struttura è sempre = a 0.
Riuscite a capire dov'è il problema?
mire.forumfree.it/ - Mire Engine
C# UI Designer
C# UI Designer