Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
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: 3691
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: 3691
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: 1310
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: 3691
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: 1310
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: 3691
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: 1310
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


HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
Finalmente rilevata la stella compagna d...
UBTech Walker S2: il robot umanoide cine...
Musk guarda ai più piccoli: in ar...
The Witcher 3 su RISC-V? Ora è po...
Il segreto per lavorare meglio? È...
Mini PC con 16GB RAM e 512GB SSD a poco ...
Radeon RX 9000: questa app gratuita cons...
Windows 11 supporterà la condivis...
Synology DS725+: connettività 2.5...
Microsoft vuole dire addio ai problemi d...
I giocatori si divertono a spendere di p...
Il monopattino che punta a battere il re...
Apple e crittografia, Londra verso la re...
Trump pubblica video con Obama arrestato...
A Vienna consegne postali completamente ...
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: 03:01.


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