Quel est le but de Pascal pour déclarer une variable pointeur sur un pointeur? J'ai un code dans Mac Think Pascal. Voici certaines parties du code que je ne comprends pas:Pointeur vers pointeur et fonction NewHandle dans (Think) Pascal
type
my_array = array[1..100] of integer;
my_array_pointer = ^my_array;
my_array_handle = ^my_array_pointer;
...
var
xx : my_array_handle;
...
begin
xx:= my_array_handle(NewHandle(sizeof(my_array)));
Comme vous le voyez, la dernière ligne est une affectation d'un type my_array_handle
à la variable xx
. Qu'est-ce que ça veut dire? Que fait la fonction NewHandle? (Ceci est une fonction interne de Think Pascal
). En fait, je dois convertir un programme Think Pascal
en Windows Pascal
. Cependant, je ne trouve pas la description de la fonction NewHandle
, et je ne sais pas comment implémenter cette fonction en utilisant les fonctions de pointeur standard (New()
, GetMem()
etc).
Merci pour vos commentaires. Je pense que l'instruction avec la fonction 'NewHandle()' dans le code fait une certaine initialisation de la variable pointeur. Je ne peux pas le supprimer, car il n'y a pas d'autres fonctions (comme 'New()') dans le code qui initialise le pointeur. On sait qu'il est dangereux d'utiliser une variable pointeur sans initialisation. – user2320292
Voir les notes ajoutées pour répondre, et veuillez préciser le compilateur que vous utilisez maintenant. –
(Désolé, je ne peux pas voter pour votre réponse, parce que je n'ai pas assez de points). Dans votre fonction, la variable 'result' n'est pas définie. Mais comme je l'ai compris, la ligne pour 'xx' devrait être changée en' New (xx); GetMem (xx ^, sizeof (mon_array)); '. S'il vous plaît dites-moi, si ce n'est pas correct. J'utilise un ancien Dev-Pas 1.9.2. Comme écrit dans un fichier doc, il est possible d'utiliser un nouveau compilateur (FreePascal) dans Dev-Pas (vous l'avez également souligné dans d'autres threads [Fonctions de bits dans Think Pascal] (http://stackoverflow.com/questions/16218767/bit-functions-in-think-pascal? rq = 1) Je vais vérifier la liste mac-pascal – user2320292