Delphi -> Delphi Prism, come utilizzare array di dischi?
-
19-09-2019 - |
Domanda
Sto imparando Delphi Prism, e io non trovare il modo di scrivere il seguente codice con esso:
type
TRapportItem = record
Label : String;
Value : Int16;
AnomalieComment : String;
end;
type
TRapportCategorie = record
Label : String;
CategoriesItems : Array of TRapportItem;
end;
type
TRapportContent = record
Categories : array of TRapportCategorie;
end;
Poi, da qualche parte, cerco di inserire gli elementi nella matrice:
rapport.Categories[i].Label:=l.Item(i).InnerText;
Ma non funziona .. Qualcuno mi può illuminare?
Grazie!
Soluzione
- Lei non ha specificato esattamente ciò che "non ha funzionato". È necessario includere l'errore in questioni come questa.
- Gli array sono tipi di riferimento, e cominciano con la
nil
valore. Hanno bisogno di essere inizializzato prima che gli elementi sono accessibili.
È possibile farlo con l'operatore new
:
rapport.Categories = new TRapportCategorie[10]; // 0..9
- Gli array sono un certo tipo di basso livello. Di solito è meglio lavorare con
List<T>
invece.
Quindi, ci si dichiara:
Categories: List<TRapportCategorie>;
- ma elenca anche bisogno di inizializzazione, utilizzando l'operatore
new
. Inoltre, modificando il valore restituito dell'indicizzatore in un elenco che contiene un tipo di valore sarà modifica di una copia, non l'originale, che porta al punto successivo. - Dati di solito non sono il miglior tipo di dati per la rappresentazione dei dati, in quanto non sono riferimento tipi; è molto facile finire la modifica di una copia dei dati, piuttosto che i dati originali. Di solito è meglio usare classi invece, dove si può mettere tutto il codice di inizializzazione (come ad esempio l'assegnazione della matrice o lista) nel costruttore.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow