Structure liste
*suivant.liste
*precedent.liste
Nom.s
age.l
EndStructure
Debug SizeOf(liste)
ta structure fait 16 soit 4 long
le prob est que je sias pas comment est stocké le string dans une structure mais en tous cas, pas directement dedans
en tous cas, j'ai déjà buté sur ce problème alors si quelqu'un à une solution
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
le prob est que je sias pas comment est stocké le string dans une structure mais en tous cas, pas directement dedans
en tous cas, j'ai déjà buté sur ce problème alors si quelqu'un à une solution
Structure entree_agenda
Nom.s
age.l
EndStructure
Procedure CopieEntree(*src.entree_agenda,*dst.entree_agenda)
*dst\Nom=*src\Nom ;<- seul façon stable de copier une chaîne de structure à structure, à ma connaissance
*dst\age=*src\age
EndProcedure
Structure liste
*suivant.liste
;*precedent.liste <- inutilisé pour l'instant
entree.entree_agenda
EndStructure
Global *Pointeur_debut.liste
Global agenda.entree_agenda
Procedure ajoute(*ajouter.entree_agenda)
*nouveau.liste=AllocateMemory(SizeOf(liste))
CopieEntree(*ajouter,@*nouveau\entree)
*nouveau\suivant=*Pointeur_debut
*Pointeur_debut.liste=*nouveau
EndProcedure
agenda\Nom="david"
agenda\age=10
ajoute(@agenda)
Debug *Pointeur_debut\entree\Nom
Debug *Pointeur_debut\entree\age
agenda\Nom="nicolas"
agenda\age=11
; curieux, je perds mes informations
Debug *Pointeur_debut\entree\Nom
Debug *Pointeur_debut\entree\age
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
@Fred : Avec la v4, peut-on espérer utiliser CopyMemory sur une structure comportant des variables typées string ?
Mon objectif est d’avoir une seule fonction permettant de dupliquer des données, sinon on est obligé (voir exemple de filperj) d’en créer autant que de structures différentes (ayant des string)
CopyMemory c'est CopyMemory... Faudrait plutôt une commande PB "CopyStructure" qui gèrerait ca automatiquement... C'est à dire qui serait adaptée à la structure au moment de la compilation comme le font les listes chainées...
#MaxChar = 64
Structure liste
*suivant.liste
*precedent.liste
Nom.b[#MaxChar]
age.l
EndStructure
Comme çà CopyMemory() fonctionne sans problème. Inconvénient, faire des PeekS() et des PokeS(). Mais quand on cache la réalisation dans des procédures bien faites et explicites çà roule tout seul.
Ceci dit, une copie en natif d'une structure serait effectivement l'idéal.
Bah pour le champ "nom" c'est un pointeur sur une chaine de caractères (char*).
Donc faut faire un deuxième allocateMemory pour le string et modifier le champs "nom".
Je vois pas où est le problème. C'est normal que ca le fasse pas automatiquement. L'idée de CopyStructure est bonne.
Du moins c'est la manip que je fais dans ma librairie de listes chaînées : Liib Vector
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !