Code : Tout sélectionner
Procedure xProc()
Protyected *Alpha ; Erreur de syntaxe
EndProcedure
xProc()
Code : Tout sélectionner
Procedure xProc()
Protyected *Alpha ; Erreur de syntaxe
EndProcedure
xProc()
Code : Tout sélectionner
Procedure xProc()
Biscuit *PurBeurre ; Erreur de syntaxe
ProcedureReturn @PurBeurre
EndProcedure
Debug xProc()
Code : Tout sélectionner
Procedure xProc()
Debug Protyected
Debug Alpha
Debug Protyected *Alpha
EndProcedure
xProc()
Weup! Tire pas trop vite ta cartouche (Surtout quand le titre est explicite, car indiquant "non explicite" !).Falsam a écrit :EnableExplicit en tete de code et tu aurais eu un message explicite.
Code : Tout sélectionner
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
Procedure xProc()
Protyected *A.PIF ; Erreur de syntaxe non signalée
*A = AllocateMemory(SizeOf(PIF) )
; Pavasse de lignes
*A\Paf = 1 ; Erreur réellement signalée (absence de structure)
EndProcedure
Code : Tout sélectionner
"Ligne 11: La variable suivante n'a pas de 'Structure' associee: *A"
que vois tu ??Protyected *A.PIF ; Erreur de syntaxe non signalée
Code : Tout sélectionner
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
Procedure xProc()
Protected *A.PIF ; plus d'Erreur de syntaxe a signaler
*A = AllocateMemory(SizeOf(PIF) )
; Pavasse de lignes
*A\Paf = 1 ; plus d'erreur
EndProcedure
Oui, c'est une structure bien indiquée en bonne et dûe forme. Une structure assignant forcément un pointeur (pas un flottant, ni même un entier usé en multiplication).Zorro a écrit :le type ".pif" est inconnu en
Purebasic
Code : Tout sélectionner
Protyected *Valeur.PIF ; "Protyected" ou "Biscuit" ou autre...
Code : Tout sélectionner
Entier * *Pointeur ; Puisqu'il y a ".PIF"
Code : Tout sélectionner
Protyected *Valeur.PIF ; "Protyected" ou "Biscuit" ou autre...
Code : Tout sélectionner
Entier * *Pointeur ; Puisqu'il y a ".PIF"
Code : Tout sélectionner
Protyected *Valeur.PIF
Code : Tout sélectionner
Protyected *A.PIF
Code : Tout sélectionner
Declare xproc()
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
A.PIF ; declaration de la structure
CallDebugger
xProc()
Procedure xProc()
debug Protyected * A.PIF ; ça c'est bien une multiplication ! (la tete a toto)
*A = AllocateMemory(SizeOf(PIF) )
; Pavasse de lignes
A\Paf = 1
EndProcedure
; Epb
Et beh si !Zorro a écrit :deja le fait qu'il y ai ".PIF" ,'implique absolument pas qu'on parle de pointeur !
Code : Tout sélectionner
JeSuisForcementUnPointeur.UneStructure
Code : Tout sélectionner
*AvecOuSansEtoile.UneStructure
Code : Tout sélectionner
operandeA * operandeB
c'est aussi ce que je pense lorsque je te lis !Ollivier a écrit :Ça tourne en rond, à défaut de tourner rond malheureusement !
mais c'est du n'importe quoi !!Et beh si !Zorro a écrit :deja le fait qu'il y ai ".PIF" ,'implique absolument pas qu'on parle de pointeur !
Pointeur = adresse mémoire
Structure = Manière d'indexer un buffer/bloc mémoire
Soit tu as .98765 ce qui ne nous intéresse pas plus que ça.
Soit tu as .abcdef qui est un suffixe assignant "abcdef" (en tant que structure) à un pointeur nommé à gauche du point,
Reponse :JeSuisForcementUnPointeur.UneStructure
Code : Tout sélectionner
ben_non_je_suis_une_variable.et_un_type
Code : Tout sélectionner
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
A.PIF ; declaration correcte de la structure
; la variable A a un nouveau Type "PIF"
a.pif\Zoup.i=10 ; le type PIF existe !!
CallDebugger
Code : Tout sélectionner
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
Protyected *A.PIF ; mauvaise declaration de la structure
; Le présumé pointeur *A se retrouve avec un mauvais TYPE qui n'existe pas !!puisque la declaration n'a pas été faite
; mais aussi parceque de toute façons les pointeurs n'ont pas de type en Purebasic !! donc ce n'est pas un pointeur !!
; tel quel , il s'agit d'une multiplication de la variable "Protyected" avec une variable A mal typé !!
; puisque la declaration a foiré, donc le type "Pif" n'existe pas ....
Protyected.Pif\Zoup.i=10 ; ce type Pif n'existe pas
Calldebugger
Code : Tout sélectionner
calldebugger
; comme ça , ça marche !!!
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
A.Pif ; la structure (et donc le type "PIF" ) est bien déclaré
A.Pif\Zoup.i=10 ; ce type Pif existe on a attribué une valeur (en mode pas a pas laisse le pointeur souris sur "a" pour voir l'attribution avec le popup )
*B=@A.Pif\Zoup.i ; on transfert le contenu dans un pointeur (en fait on pointe l'adresse de notre Variable A Typé "Pif" membrée Zoup.i, )
debug PeekI(*B) ; on affiche le contenu du pointeur (qui affiche bien 10 ) un pointeur n'a pas de Type (en fait c'est toujours un .I)
Calldebugger
Structure est utile pour définir un type utilisateur
Code : Tout sélectionner
calldebugger
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
A.Pif ; <------- Variable Typé Pif (structuré ) parfaitement declarée
; comme ça , ça marche !!!
;******* attribution des valeurs ***********************
A.Pif\Zoup.i=10 ;> ce type Pif existe on a attribué une valeur
A.Pif\Zot.i=20 ;> ce type Pif existe on a attribué une valeur
A.Pif\ Paf.i=30 ;> ce type Pif existe on a attribué une valeur
; *************************************************
;******** creation des pointeurs sur les membres de la structure ********
*B=@A.Pif\Zoup.i ;> on pointe l'adresse du membre de la structure de la variable ATypé PIF
*C=@A.Pif\Zot.i ;> on pointe l'adresse du membre de la structure de la variable A Typé PIF
*D=@A.Pif\Paf.i ;> on pointe l'adresse du membre de la structure de la variable A Typé PIF
; *****************************************************************
; *********** Affichage des résultats **********************************
debug PeekI(*B) ;> on affiche le contenu du pointeur (qui affiche bien 10 )
debug PeekI(*C) ;> on affiche le contenu du pointeur (qui affiche bien 20 )
debug PeekI(*D) ;> on affiche le contenu du pointeur (qui affiche bien 30 )
; *******************************************************************
Calldebugger
tu compliques tout , meme dans tes explicationsOllivier a écrit :Un pointeur peut être assigné par une structure contenant, elle-même, un ensemble de variables aux types divers.
Pas de confusion là-dedans.
Code : Tout sélectionner
Structure MaStructure ;Quelle que soit la structure, on peut "l'affecter" au pointeur dans la procédure....
BoutDeTexte1.s
BoutDeTexte2.s
TrucMachin.i
NombreStupide.i
Autrechampquisertarien.s
Sherman.s
EndStructure
MaVariable.MaStructure
MaVariable\BoutDeTexte1="Voila, ca marche !"
MaVariable\BoutDeTexte2="On peut affecter une structure à un pointeur !"
MaVariable\NombreStupide=643615455
MaVariable\TrucMachin=$02153
MaVariable\Autrechampquisertarien="Aloha"
MaVariable\Sherman="L'auteur a raison"
Procedure FaitUnTruc(*Pointeur.Mastructure);...Mais le pointeur n'a pas de type... c'est juste une adresse pointant sur une zone de mémoire ou se trouve la structure.
Debug *Pointeur\BoutDeTexte1;Et on peut en récupérer tous les éléments
Debug *Pointeur\BoutDeTexte2
EndProcedure
FaitUnTruc(MaVariable)
Code : Tout sélectionner
Structure PIF
Zoup.I
Zot.I
Paf.I
EndStructure
Protyected *A.PIF ; mauvaise declaration de la structure
Code : Tout sélectionner
A.PIF
Code : Tout sélectionner
A.PIF
*pointeur=@A.Pif
voila avec un pointeur : (mais il ya peut etre plus simple )
Code : Tout sélectionner
debug *pointeur\Zoup.I
T'as raison : j'aurai fait un délit de faciès avec ta lampe !Zorro a écrit :j'aurai pas voulu t'avoir comme prof
Code : Tout sélectionner
X * N.UneStructureQueTuChoisis