hAppywAy, le principe du pointeur n'est pas celui d'une simple variable et encore moins d'un type record. En fait ton pointeur est une variable contenant une adresse mémoire (et rien d'autre que ça). Autrement dit, ce n'est pas le contenu de ton pointeur qui est utile mais le contenu de l'emplacement mémoire vers lequel il pointe.
Par défaut, Ada initialise les pointeurs à Null donc la ligne ci-dessous, si elle constitue un bon réflexe, est inutile en Ada (mais pas en C par exemple) :
Ensuite quand tu écris :
Base.nom_base(1..L):=S(1..L);
Tu devrais plutôt écrire :
Base.all.nom_base(1..L):=S(1..L);
Le langage Ada permet ce raccourci mais du coup tu sembles oublier que Base n'est pas un objet de type structuré (record) mais un pointeur valant NULL ! Pour accéder au contenu pointé, tu utilises Base.all, sauf que ton pointeur ne pointe sur rien ! Tu dois auparavant réserver un espace mémoire vers lequel pointera Base.
Pour créer ton objet pointé, il te suffira d'écrire :
Ensuite tu pourras affecter une valeur à Base.all ! Mais seulement après.
Partager