Ciao a tutti.
In fase di esecuzione testando delle classi mi dà questo errore. Mi era già successo altre volte, ma questa volta non riesco proprio a risolverlo.
Eseguendo questo codice
codice:
array arrayofitems = new array();
arrayofitems.array_add("host", "192.168.1.20");
vado a richiamare la classe array così definita
codice:
public class array
{
public int array_count;
public arrayitem array_first;
public arrayitem array_last;
public debug array_debug;
public array()
{
this.array_debug = new debug(debug.debug_type_file, lib.debug_default_file);
this.array_first = new arrayitem(null, null, null, null);
this.array_last = new arrayitem(null, null, null, null);
this.array_count = 0;
}
public bool array_add(string pindex, string pvalue)
{
arrayitem lai, lai_temp;
if (pindex == "")
return false;
if (this.array_index_exists(pindex))
return this.array_set(pindex, pvalue);
if (this.array_count == 0)
{
this.array_first = this.array_last = new arrayitem(pindex, pvalue, null, null);
this.array_count++;
}
else
{
lai = new arrayitem(pindex, pvalue, null, null);
lai_temp = this.array_last;
this.array_last = lai;
this.array_last.ai_prev = lai_temp;
lai_temp.ai_next = this.array_last;
if (this.array_count == 1)
this.array_first.ai_next = this.array_last;
this.array_count++;
}
return true;
}
public bool array_index_exists(string pindex)
{
if (this.array_find(pindex).ai_index != null)
return true;
else
return false;
}
public arrayitem array_find(string pindex)
{
arrayitem lai = new arrayitem();
lai = this.array_first;
while (pindex != lai.ai_index)
lai = lai.ai_next;
return lai;
/* try
{
}
catch (Exception exc)
{
this.array_debug.debug_log("[ERROR][array.array_find] " + exc.Message);
return new arrayitem(null, null);
}*/
}
[...]
}//array
dentro ci sono anche altri metodi che non ci interessano.
l'errore lo da sul metodo array_find() sulla riga
codice:
while (pindex != lai.ai_index)
so che di solito questo errore viene dato quando non si inizializza con new qualcosa, ma io non riesco a capire dove.
ho provato eccedendo di zelo ad inizializzare lai così
codice:
arrayitem lai= new arrayitem(null, null, null, null)
ma ovviamente la cosa non cambia.
pensavo che il problema fosse array_first, ma mi viene inizializzato da costruttore e valorizzato da array_add().
secondo voi dove è il problema?
grazie per l'attenzione e scusate la prolissità.
cyb