Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C#] Riferimento a un oggetto non impostato su un'istanza di oggetto.

    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
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    una di queste 4 varibili/proprietà è null:
    1)pindex
    2)lai
    3)lai.ai_index
    4)lai e lai.ai_index

    fai un pò di debug per capire.
    I got the remedy

  3. #3
    dà problemi il metodo aray_index_exists().

    riservandomi di capire dove sia il problema con questo metodo abbastanza stupido ti ringrazio perchè ho risolto momentaneamente tutto il resto.

    grazie mille.

    cyb
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.