Ce n'est pas que les pointeurs ne sont pas typés, c'est qu'ils n'acceptent qu'un seul type qui est Integer (.i) (enfin depuis que la version x64 existe)
Avant on pouvait faire *pointer.a ou *pointer.w et le compilateur ne bronchait pas mais comme le compilateur voyait que c'était un pointeur, il était correctement interprété comme un .i ou .l avant la version x64.
Je parlais d'une exception plus haut, il s'agit justement des Strings car lorsqu'on place un @ devant un String, on a bien l'adresse de la mémoire contenant la chaîne de caractères; par contre dans une structure on obtient en fait l'adresse d'un pointeur vers l'adresse de la chaîne de caractères, voici un code illustrant ce propos:
Code : Tout sélectionner
Structure chaine
Texte.s
EndStructure
Procedure.l ModifTexte (*Test.chaine)
Debug PeekS(PeekI(*Test))
*Test\Texte = *Test\Texte + " lolo"
EndProcedure
Test1.s = "lili"
Debug @Test1
; @Test1 --> ici on accède directement à l'adresse mémoire
; de la chaine de caractère
*Pointer = @Test1 ; d'où la nécessité d'utilisé un pointeur dans cet exemple.
ModifTexte (@*Pointer)
Debug @Test1
Debug Test1
Test2.chaine\Texte = "popo"
Debug @Test2\Texte
; @Test2\Texte --> ici on accède à l'adresse d'une mémoire qui pointe
; vers l' adresse mémoire de la chaine de caractère
; l'adresse mémoire de la chaine est donc PeekI(@Test2\Texte)
ModifTexte (@Test2)
Debug @Test2\Texte
Debug Test2\Texte