Page 1 sur 1
[TUTO débutants] les structures
Publié : sam. 18/août/2018 8:27
par microdevweb
"Oméga" m'a suggéré de faire un tutoriel sur les structures. Je propose donc aux débutants en programmation ce petit tutoriel.
Plan du tutoriel :
Pourquoi; quand, comment?
Les listes de structure.
L'héritage de structure.
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 9:19
par microdevweb
Pourquoi; quand, comment?
Qu'est-ce qu'une structure?
Une structure est un regroupement de variables, qui peuvent être du même type ou des types différents.
Pourquoi et comment les utiliser ?
Prenons un cas simple, une gestion de contact avec les informations suivantes.
Nom;
Prénom;
Téléphone
Sans structure on devrait écrire ceci :
Remarque : dans cet exemple j'emploie des variables du type globales. En général ce type de variable est à proscrire.
Je vous recommande l'utilisation d'EnableExplicit" ceci vous forcera à déclarer les variables. Même si l'autodéclaration est un gain de temps, on risque un bug de fonctionnement (pas de compilation) suite à une faute de frappe et ce type d'erreur est difficile à résoudre
Vous me direz qu'il n'y a rien d'anormal. Et pourtant en développent de cette manière on va très vite s'enliser dans un code non structuré et cela deviendra très vite compliqué (surtout si l'on veut faire une liste de contacts)
Nous pouvons constater qu'il serait idéal de regrouper ces variables et ce que nous allons faire avec une "structure"
Code : Tout sélectionner
EnableExplicit
Structure contact
nom.s
prenom.s
telephone.s
EndStructure
Global monContact.contact
Je ne sais pas pour vous, mais moi je trouve déjà ce code beaucoup plus élégant.
Mais que peu t on place dans une structure?
Eh bien vous pouvez placer tout type de variable de "PureBasic" des long; float; double; string etc...
Mais aussi des listes des tables de hachage (map) ou des tableaux et même des structures.
Comment accédé-t-on au contenu de la structure ? Rien de plus simple, regardez l'exemple.
Code : Tout sélectionner
EnableExplicit
Structure contact
nom.s
prenom.s
telephone.s
EndStructure
Global.contact Pierre,Alain
Pierre\nom = "Bielen"
Pierre\prenom = "Pierre"
Pierre\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
Alain\nom = "Dupond"
Alain\prenom = "Alain"
Alain\telephone = "+33062252287"
Voici une petite astuce avec la commande "with" qui peut dans le cas de grosse structure vous simplifier la tâche.
Code : Tout sélectionner
EnableExplicit
Structure contact
nom.s
prenom.s
telephone.s
EndStructure
Global.contact Pierre,Alain
With Pierre
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
EndWith
With Alain
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
EndWith
Allons un peux plus loin en ajoutant une adresse à notre contact.
Aie peu t'être avez-vous penser faire comme ceci ?
Code : Tout sélectionner
Structure contact
nom.s
prenom.s
telephone.s
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Ben non même si cela est correct on peut mieux faire non . Comment allez-vous me dire ? Ben en créant une structure pour l'adresse tout simplement.
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Global.contact Pierre,Alain
With Pierre
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
With Alain
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
Remarque : Il n'est malheureusement pas possible d'imbriquer plusieurs commandes "Width" (qui est est macro en vérité)
Pour résumé cette première partie
quand doit-on utiliser une structure ? Du moment on l'on peut regrouper des variables il conseille de les structurer.
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 9:52
par microdevweb
Les listes de structure.
Dans la première partie, vous pouvez constater que ce code est extrêmement limité. En effet on doit créer une variable par contact et cela n'est absolument pas dynamique.
Nous allons donc créer 3 cas (tableaux,listes,map), à vous de choisir en fonction de votre projet ce qui vous conviendra le mieux.
Avec un tableau
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Global Dim mesContacts.contact(2) ; un tableau de 2 contact
With mesContacts(0)
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
With mesContacts(1)
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
; on on affiche les données pour tester notre code
Define i
For i = 0 To ArraySize(mesContacts())-1
With mesContacts(i)
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
Next
Avec une liste chaînée
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Global NewList mesContacts.contact() ; un liste chaînée dynamique
; Ajoute un élement à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
; Ajoute un élement à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
; on on affiche les données pour tester notre code
ForEach mesContacts()
With mesContacts()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
Next
Avec une table de hachage (Map)
Remarque : une table de hachage contrairement à ce que l'on pourrait croire est plus rapide qu'une liste chaînée.
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Global NewMap mesContacts.contact() ; un table de hachage dynamique
; Ajoute un élement à la liste
AddMapElement(mesContacts(),"pierre")
With mesContacts()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
; Ajoute un élement à la liste
AddMapElement(mesContacts(),"alain")
With mesContacts()
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
; on on affiche les données pour tester notre code
ForEach mesContacts()
With mesContacts()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
Next
; Exemple d'accès depuis la clé
If FindMapElement(mesContacts(),"pierre")
With mesContacts()
Debug "DEPUIS LA CLE"
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
EndIf
If FindMapElement(mesContacts(),"alain")
With mesContacts()
Debug "DEPUIS LA CLE"
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
EndIf
Comme vous l'aurez constaté implanter une liste de structure n'est pas très compliqué.

Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 10:21
par microdevweb
L'héritage de structure.
Aie-le voici encore reparti dans son délire de programmation objet.
Ben non je vous rassure, mais "PureBasic" nous permet de faire des héritages de structure et on ne va pas sen priver.
Imaginons que nous désirions ajouter une liste de clients. On pourrait évidemment faire une nouvelle structure toute propre et neuve.
Mais les informaticiens sont en général un peu paresseux et quand ils peuvent se passer de taper du code ils n'hésitent pas à sauter sur l'occasion.
Si on réfléchit bien, un client c'est un contact non. Il a seulement quelques informations supplémentaires.
Et c'est la que vient à la rescousse cette fameuse notion d'héritage (et sans que personne ne décède ça c'est cool).
Regardez plutôt ce code .
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Structure client Extends contact
nomSociete.s
numTVA.s
adressLivraison.adresse
EndStructure
Global NewList mesContacts.contact()
Global NewList mesClients.client()
Vous pouvez constater que c'est assez simple à mettre en place
Et voici un code complet
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Structure client Extends contact
nomSociete.s
numTVA.s
adressLivraison.adresse
EndStructure
Global NewList mesContacts.contact()
Global NewList mesClients.client()
; Ajoute un contact à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
; Ajoute un contact à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
; Ajoute un client à la liste
AddElement(mesClients())
With mesClients()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
\nomSociete = "MicrodevWeb"
\numTVA = "BE:740.635.896"
\adressLivraison\rue = " rue de la Livraison"
\adressLivraison\numero = 20
\adressLivraison\codePostal = 400
\adressLivraison\localite = "Liège"
EndWith
; on on affiche les données pour tester notre code
Debug "CONTACTS"
ForEach mesContacts()
With mesContacts()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
Next
Debug "CLIENTS"
ForEach mesClients()
With mesClients()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
Debug \nomSociete
Debug \numTVA
Debug \adressLivraison\rue
Debug \adressLivraison\numero
Debug \adressLivraison\codePostal
Debug \adressLivraison\localite
EndWith
Next
Allons un peux plus loin. Et si notre client pouvait avoir des contacts .
Ben c'est facile à faire, on va juste ajouter une liste de contacts à notre structure client.
Code : Tout sélectionner
Structure client Extends contact
nomSociete.s
numTVA.s
adressLivraison.adresse
List mesContacts.contact()
EndStructure
Et voici un code qui implémente cela
Remarque : Evidement ceci est code exemple dans un vrai logiciel on copierait juste l'adresse (mémoire) du contact dans la structure client.
Code : Tout sélectionner
EnableExplicit
Structure adresse
rue.s
numero.l
codePostal.l
localite.s
EndStructure
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Structure client Extends contact
nomSociete.s
numTVA.s
adressLivraison.adresse
List mesContacts.contact()
EndStructure
Global NewList mesContacts.contact()
Global NewList mesClients.client()
; Ajoute un contact à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
EndWith
; Ajoute un contact à la liste
AddElement(mesContacts())
With mesContacts()
\nom = "Dupond"
\prenom = "Alain"
\telephone = "+33062252287"
\monAdresse\rue = "rue du Cirque"
\monAdresse\numero = 200
\monAdresse\codePostal = 75000
\monAdresse\localite = "Paris"
EndWith
; Ajoute un client à la liste
AddElement(mesClients())
With mesClients()
\nom = "Bielen"
\prenom = "Pierre"
\telephone = "+3242214888" ; numéro bidon ne me téléphoner pas ;)
\monAdresse\rue = "rue Sainry"
\monAdresse\numero = 140
\monAdresse\codePostal = 4870
\monAdresse\localite = "Trooz"
\nomSociete = "MicrodevWeb"
\numTVA = "BE:740.635.896"
\adressLivraison\rue = " rue de la Livraison"
\adressLivraison\numero = 20
\adressLivraison\codePostal = 400
\adressLivraison\localite = "Liège"
; Et on ajoute un contact
AddElement(\mesContacts())
\mesContacts()\nom = "Durabon"
\mesContacts()\prenom = "Olivier"
\mesContacts()\telephone = "+32475 225 66 32"
\mesContacts()\monAdresse\rue = "Rue de la Botte"
\mesContacts()\monAdresse\numero = 35
\mesContacts()\monAdresse\codePostal = 4370
\mesContacts()\monAdresse\localite = "Blegny"
EndWith
; on on affiche les données pour tester notre code
Debug "CONTACTS"
ForEach mesContacts()
With mesContacts()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
EndWith
Next
Debug "CLIENTS"
ForEach mesClients()
With mesClients()
Debug \nom
Debug \prenom
Debug \telephone
Debug \monAdresse\rue
Debug Str(\monAdresse\numero)
Debug Str(\monAdresse\codePostal)
Debug \monAdresse\localite
Debug \nomSociete
Debug \numTVA
Debug \adressLivraison\rue
Debug \adressLivraison\numero
Debug \adressLivraison\codePostal
Debug \adressLivraison\localite
; Affichage des contacts
Debug "CONTACTS CLIENT"
ForEach \mesContacts()
Debug \mesContacts()\nom
Debug \mesContacts()\prenom
Debug \mesContacts()\telephone
Debug \mesContacts()\monAdresse\rue
Debug Str(\mesContacts()\monAdresse\numero)
Debug Str(\mesContacts()\monAdresse\codePostal)
Debug \mesContacts()\monAdresse\localite
Next
EndWith
Next
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 13:40
par omega
Bonjour Microdevweb
C'est bien, c'est un vrai tuto pour débutant. Mais j'attends avec impatience l'utilité des structures par rapport aux tables sqlite. Je ne sais pas si c'est prévu dans ton programme tuto mais j'avoue que c'est très très utile, d'ailleurs c'est la raison principale pour laquelle je refais mon code de gestion commerciale. G-Rom et d'autres Pubistes de ce forum m'ont recommandé d'utiliser les structures mais, franchement, je ne sais pas encore pourquoi tant que je n'ai pas vu d'exemple en ce sens, je comprendrais dès que tu nous donnes certainement un exemple de mise à jour d'une table-sqlite (table client par exemple) en utilisant une ou plusieurs structures.
Merci et bonne continuation
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 14:02
par microdevweb
Omega,
Non ce n'est pas prévu car ça n'a pas vraiment de rapport il suffit simplement de copier la valeur de la base dans le champ de la structure adéquate.
voici un exemple :
Code : Tout sélectionner
Structure contact
nom.s
prenom.s
telephone.s
monAdresse.adresse
EndStructure
Global NewList mesContacts.contact()
Procedure load()
Protected req.s = "SELECT * FROM contacts"
OpenDatabase(0,"myDb.db","","")
If DatabaseQuery(0,req)
While NextDatabaseRow(0)
AddElement(mesContacts())
With mesContacts()
\nom = GetDatabaseString(0,0)
\prenom = GetDatabaseString(0,1)
\telephone = GetDatabaseString(0,2)
;etc ...
EndWith
Wend
EndIf
EndProcedure
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 14:02
par G-Rom
Omega, sqlite est un moyen de sauvegarde / lecture de donnée , rien a voir avec les structures. c'est à partir d'une bdd que tu remplis une liste de clients venue d'une bdd...
le meme code que dans l'autre topic avec sauvegarde sur disque dur, après a toi , d'utilisé une bdd, le reseau , etc... mais déjà , tu peu te passer de bdd pour ton logiciel
à moins de vouloir partagé les datas avec un site web...
Code : Tout sélectionner
Structure Client
Nom.s{64} ; pour les io disque on a besoin de string de taille fixe sinon ca enregistre uniquement le pointeur sur le disque...
Prenom.s{64}
Telephone.s{64}
EndStructure
Global NewList MesClients.Client()
Procedure DebugClient(*client.Client)
Debug *client\Nom
Debug *client\Prenom
Debug *client\Telephone
EndProcedure
Procedure SaveClients()
file = CreateFile(#PB_Any,"c:\client.data")
If file
ForEach MesClients()
WriteData(file, @MesClients(), SizeOf(Client))
Next
CloseFile(file)
EndIf
EndProcedure
Procedure LoadClients()
file = ReadFile(#PB_Any,"c:\client.data")
If file
size = FileSize("c:\client.data")
number = size / SizeOf(Client)
For i = 0 To number - 1
AddElement(MesClients())
ReadData(file,@MesClients(), SizeOf(Client))
Next
CloseFile(file)
EndIf
EndProcedure
; on ajoute des clients bidons
; Nouveau client
AddElement( MesClients() )
MesClients()\Nom = "Pierre"
MesClients()\Prenom = "Durand"
MesClients()\Telephone = "0645064506"
; Nouveau client
AddElement( MesClients() )
MesClients()\Nom = "Jean"
MesClients()\Prenom = "Bon"
MesClients()\Telephone = "0744064506"
; on sauvegarde sur le disque !
SaveClients()
; on efface les clients existants
ClearList( MesClients() )
; on charge depuis le disque dur
LoadClients()
; on affiche
ForEach MesClients()
Debug "-------------------------"
DebugClient( @MesClients() )
Next
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 15:22
par omega
@G-Rom
mais déjà , tu peu te passer de bdd pour ton logiciel
Tu es sûr que je n'ai pas besoin d'une bdd pour mon logiciel de gestion commerciale? Je suis étonné de ce que tu viens de dire ! J'ai besoin des fichiers client, fournisseur, facture, bon de réception, bon de livraison, bon de caisse, bon de versement, etc.... Tous ces fichiers n'exigent pas une Bdd? C'est sérieux G-Rom?
Si c'est vraiment le cas, alors j'aurais d'autres questions à poser sur les fichiers mémoires
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 15:34
par G-Rom
Je viens de te donner un exemple, la bdd n'est pas une obligation, regarde mon code d'exemple, il démontre la simple sauvegarde & chargement de donnée...
c'est toi le maestro, si tu as envie d'utilisé les bdd , libre à toi, mais les bdd non absolument aucun rapport avec les structures, qui est le sujet de base.
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 15:44
par omega
@G-Rom: [quote]D'après toi, pour mon logiciel de gestion commerciale, qu'est ce que tu me conseilles: utiliser Bdd sqlite ou fichier data? J'ai vu ton code exemple et je l'ai bien compris (enfin je crois). Tout est clair sauf sur un seul point: si je dois utiliser fichier data, comment faire pour structurer l'enregistrement du fichier data de la façon suivante: nomclient,adresse,numtel? Sur ton exemple, chaque enregistrement contient un seul champ, alors que mon programme demande plusieurs champs par fichier.
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 16:00
par G-Rom
C'est ta structure en mémoire qui est écrite dans le fichier final. il n'y a pas de notion "de champs" , une seule ligne suffit pour écrire le contenu de la mémoire sur le disque
WriteData() c'est ta structure qui définira comment est écrit le fichier final. la liste structurée n'est qu'une simple zone mémoire qui est copié physiquement sur le disque dur :
SizeOf Client : 3 * 64*
....Client A....client B....client C....client N
{64,64,64} | {64,64,64} | {64,64,64} | etc...
Tu peu rajouté des champs que tu veut a l'intérieur a l'exception des pointeurs qui ne servent à rien lors d'une sauvegarde, d'ou le string de taille fixe.
Après , je te conseil rien du tout, a toi de voir. moi , je n'utiliserais pas de bdd.
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 16:21
par omega
@G-Rom: J'ai quelques questions importantes à poser si tu permets :
1. Y a t il une limite maximale du nombre d'enregistrements sur fichier Data?
2. Y a t il un moyen rapide pour récupérer l'ensemble des enregistrements du fichier data vers la structure ? sans passer par AddElement () pour chaque enregistrement (sinon si c rapide, cela me convient)
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 17:03
par G-Rom
1- Oui, la taille de ta ram , de ton disque.
2- Oui, 2 solutions, la première alloué une liste de la taille de tes clients ( chaque élément correspond à un client ) , puis copié le fichier sur le pointeur du 1° element
le reste sera en théorie rempli comme il faut car la mémoire est normalement contigüe , n'étant pas sur de ce que je te dit, c'est donc pas safe.
la seconde méthode , utilisé AllocateMemory() est alloue la mémoire nécessaire pour copié les datas dans le buffer. bon, là , faut taquiner les pointeurs...
Re: [TUTO débutants] les structures
Publié : sam. 18/août/2018 17:20
par omega
Merci G-Rom, je vais essayer de m'exercer sur un fichier client avec utilisation d'une structure, si cela me convient, j'opterais pour cette solution pour mon logiciel. Merci Beaucoup G-Rom et a+