Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-03-2010, 22:20   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[C#]Riferimento a un oggetto non impostato su un'istanza di oggetto.

Ottengo questo errore (Riferimento a un oggetto non impostato su un'istanza di oggetto.) nel seguente codice. Eppure ho scritto TagLib.Tag[] tag = new TagLib.Tag[risultati_gracenote.Elements().Count()]; Che cosa non ho capito? (in grassetto ecco la parte che mi da errore, anche se suppongo che anche le altre 2 righe dopo lo darebbero )
Codice:
TagLib.Tag[] tag = new TagLib.Tag[risultati_gracenote.Elements().Count()];

            Console.WriteLine("Indice array è uguale a " + risultati_gracenote.Elements().Count());

            for (int a = 1; a <= risultati_gracenote.Elements().Count(); a++)
            {
                Console.WriteLine("a è uguale a " + a);
                Console.WriteLine("titolo: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value);
                Console.WriteLine("artisti: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(3).Value);
                Console.WriteLine("album: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(5).Value);
                tag[a].Title = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value;
                tag[a].Performers[0] = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(3).Value;
                tag[a].Album = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(5).Value;
            }
Grazie a tutti!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2010, 22:42   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ottengo questo errore (Riferimento a un oggetto non impostato su un'istanza di oggetto.) nel seguente codice. Eppure ho scritto TagLib.Tag[] tag = new TagLib.Tag[risultati_gracenote.Elements().Count()]; Che cosa non ho capito? (in grassetto ecco la parte che mi da errore, anche se suppongo che anche le altre 2 righe dopo lo darebbero )
Codice:
TagLib.Tag[] tag = new TagLib.Tag[risultati_gracenote.Elements().Count()];

            Console.WriteLine("Indice array è uguale a " + risultati_gracenote.Elements().Count());

            for (int a = 1; a <= risultati_gracenote.Elements().Count(); a++)
            {
                Console.WriteLine("a è uguale a " + a);
                Console.WriteLine("titolo: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value);
                Console.WriteLine("artisti: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(3).Value);
                Console.WriteLine("album: " + risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(5).Value);
                tag[a].Title = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value;
                tag[a].Performers[0] = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(3).Value;
                tag[a].Album = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Elements().ElementAt(5).Value;
            }
Grazie a tutti!
Da come hai scritto il ciclo for immagino che tu non sappia che il primo elemento ha indice 0.
Il for dovrebbe infatti partire da 0.
Quindi, immagino, quello che e'
risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1)
vorrebbe esssere forse
risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(0)

Comunque ti consiglio di prendere i vari riferimenti, che tanto non costano assolutamente nulla e vengono risolti infase di compilazione.

qualcosa come
Codice:
var elementi = gracenote.Elements()
var elemento = elementi[a];
var sottoelementi = elemento.Elements();
var sottoelemeno = sottoelementi[0];
etc.
Cosi' quando ti ritrovi questo errore puoi risalire a quale e' l'elemento nullo.

Comunque, almeno il primo riferimento lo puoi ottenere ciclando direttamente sul primo elements(), che immagino implementi IEnumerable
Codice:
foreach(var elemento in gracenote.Elements())
{
   etc.

}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2010, 23:11   #3
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Lo sapevo ma non pensavo fosse un problema se partisse da uno.. Quindi invece lo è?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 31-03-2010, 23:18   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Lo sapevo ma non pensavo fosse un problema se partisse da uno.. Quindi invece lo è?
Quando scrivi
risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1)
se per esempio l'ultima collezione avesse 0 oppure 1 elemento solo, cercando di accedere tu al secondo elemento (che e' quello con indice 1), sollevi un'eccezione.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 00:24   #5
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
credo che il problema sia che l'array è pieno di puntatori nulli.
L'operatore new sull'array non instanzia automaticamente tutti gli oggetti che contiene, quindi

Codice:
Tag[a].Title = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value;
genera una NullRreferenceException perché tag[a] è null
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 00:27   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Uno dei tanti errori possibili.
PRocedendo prendendo i riferimenti, passo dopo passo, puoi mettere delle guard e notificare di conseguenza invece che lasciare sollevare l'eccezione.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 10:11   #7
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Quando scrivi
risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1)
se per esempio l'ultima collezione avesse 0 oppure 1 elemento solo, cercando di accedere tu al secondo elemento (che e' quello con indice 1), sollevi un'eccezione.
questa opzione la scarterei subito
Quote:
Originariamente inviato da astorcas Guarda i messaggi
credo che il problema sia che l'array è pieno di puntatori nulli.
L'operatore new sull'array non instanzia automaticamente tutti gli oggetti che contiene, quindi

Codice:
Tag[a].Title = risultati_gracenote.Elements().ElementAt(a).Elements().ElementAt(1).Element("ul").Value;
genera una NullRreferenceException perché tag[a] è null
Probabilmente è proprio qui il problema. Come risolvo?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 11:21   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Probabilmente è proprio qui il problema. Come risolvo?
tag[a] = new TagLib.Tag() ?
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 11:42   #9
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
mi sembra mi desse qualche errore di compilazione..
EDIT: ho controllato e in fase di compilazione dà questo errore: Impossibile creare un'istanza della classe o dell'interfaccia astratta 'TagLib.Tag'

Ultima modifica di Mattyfog : 01-04-2010 alle 11:55.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 12:44   #10
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
mi sembra mi desse qualche errore di compilazione..
EDIT: ho controllato e in fase di compilazione dà questo errore: Impossibile creare un'istanza della classe o dell'interfaccia astratta 'TagLib.Tag'
Scusa ma il tipo di dato esatto lo dovresti conoscere te.
Io ho solo cercato di indovinare il tipo dal codice che hai postato e dato che tag è un array di TagLib.Tag pensavo che fosse un tipo concreto. In tal caso devi trovare nel codice qualche classe che implementi l'interfaccia o classe astratta TagLib.Tag o cercare nella documentazione della libreria.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 13:47   #11
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ah, quindi non è un problema di sintassi... Mannaggia..
Credo che risolverò usando un array di string perchè non saprei proprio dove cercare il tipo nel codice sorgente..
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 13:49   #12
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ah, quindi non è un problema di sintassi... Mannaggia..
Credo che risolverò usando un array di string perchè non saprei proprio dove cercare il tipo nel codice sorgente..
implementala tu allora, tanto se è una classe astratta è probabile che il lavoro da fare non sia molto
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 19:08   #13
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Quote:
Originariamente inviato da astorcas Guarda i messaggi
implementala tu allora, tanto se è una classe astratta è probabile che il lavoro da fare non sia molto
Ma come faccio ad implementarla? Poi potrei associarla anche a TagLib?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 20:35   #14
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Ma come faccio ad implementarla? Poi potrei associarla anche a TagLib?
Codice:
public class MyTag : TagLib.Tag
{
...
}
L'auto completamento di Visual Studio fa il resto.

Cosa intendi per "associarla anche a TagLib"? TagLib a quanto si può capire dal codice sembra essere un namespace, puoi sempre racchiudere la tua implementazione all'interno di quel namespace.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 20:41   #15
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Scusa è che sono ignorante... TagLib.Tag è un tipo di variabile che non posso ricreare da zero, credo. Infatti ha alcuni metodi che permettono di salvare un id3 tag su un file mp3. Tant'è che ho dovuto aggiungere questa libreria come dll. Se io faccio questa cosa, che hai detto tu, potrò ancora usufruire di questi metodi per salvare e leggere i tag mp3?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 21:20   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
questa opzione la scarterei subito
Guarda che non era una proposta
Era un tentativo, in assenza di altri dati, di trovare il problema.
Non "ti propongo di sollevare un'eccezione", ma bensi' "facendo cosi', se bla bla, allora ti ritrovi a sollevare un'eccezione"
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2010, 22:10   #17
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Scusa è che sono ignorante... TagLib.Tag è un tipo di variabile che non posso ricreare da zero, credo. Infatti ha alcuni metodi che permettono di salvare un id3 tag su un file mp3. Tant'è che ho dovuto aggiungere questa libreria come dll. Se io faccio questa cosa, che hai detto tu, potrò ancora usufruire di questi metodi per salvare e leggere i tag mp3?
Scusa ma hai letto la documentazione della libreria?
Ti sei documentato su come funziona e nel caso specifico di come si usa questa classe TagLib.Tag?
Se non lo sai te che conosci la libreria come pretendi che possiamo saperlo noi solo dal nome di una sua classe che scopriamo in seguito essere pure astratta?
Non hai nemmeno riportato il nome di questa libreria.

Questo post va avanti senza che tu abbia fornito dettagli utili, ma solo facendo domande a cui possiamo rispondere solo tirando ad indovinare da quel poco codice che hai postato.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2010, 10:01   #18
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
si avete ragione, solo che io sono molto ignorante e pensavo fosse solo un errore di sintassi..
la libreria è questa: http://developer.novell.com/wiki/index.php/TagLib_Sharp
non pretendo che vi leggiate i sorgenti pertanto userò un ia classe personalizzata..
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2010, 11:11   #19
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
http://developer.novell.com/wiki/ind...harp:_Examples

Qua c'è un esempio di come usare 'sta liberira
astorcas è offline   Rispondi citando il messaggio o parte di esso
Old 03-04-2010, 06:34   #20
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ok grazie, ora parto per le vacanze se avrò ancora problemi vi farò sapere
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Nuovo storico lancio per il razzo spazia...
Elgato Embrace: una sedia ergonomica pro...
Brad Pitt torna in pista: F1 – Il Film a...
Hitachi Vantara annuncia la sua AI Facto...
Brembo passa all'alluminio riciclato al ...
HONOR pronta a sfidare gli iPad Pro con ...
OpenAI esce allo scoperto: confermati i ...
In arrivo altri due prodotti da Apple en...
Il tool per aggiornare da Windows 10 a W...
Rishi Sunak entra in Microsoft e Anthrop...
Porsche in poche ore chiude la formazion...
iPhone 17 disponibili su Amazon al prezz...
La Ferrari Elettrica non è la cau...
Ricarica da record: Zeekr supera i 1.300...
Un 'capezzolo' con feedback aptico al po...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:28.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v