FAQ PureBasicConsultez toutes les FAQ
Nombre d'auteurs : 7, nombre de questions : 68, dernière mise à jour : 3 janvier 2013 Ajouter une question
Bienvenue dans la F.A.Q. PureBasic !
Celle-ci va tenter de répondre aux questions les plus fréquemment posées sur le langage PureBasic et tous ses outils de programmation. Si elle n'a pas pour vocation de répondre à toutes les interrogations possibles, elle reste une bonne base de connaissances sur le PureBasic, et ne demande qu'à être enrichie par vos expériences personnelles.
Bien entendu, malgré toute l'attention qui a pu être portée à cette F.A.Q., des erreurs ont toujours pu s'y glisser. Prenez donc toutes les précautions qui s'imposent avant d'essayer un exemple.
Nous vous souhaitons une bonne lecture ! Et n'oubliez pas qu'en cas de problème, vous pourrez toujours poser votre question sur le forum PureBasic !
L'équipe PureBasic de Developpez.
Un tableau statique dans une structure ne se comporte pas de la même façon qu'un tableau défini avec la commande Dim. Ceci pour être conforme au format de structures en C/C++ (pour permettre un portage direct des structures de l'API). Ce qui signifie que a[2] assignera un tableau de 0 à 1 (deux éléments) alors que Dim a(2) assignera un tableau de 0 à 2 (trois éléments).
Code purebasic : | Sélectionner tout |
1 2 3 4 5 | Structure MaStructure TableauStatique.l[2] ; Comporte 2 éléments de 0 à 1. EndStructure Dim Tableau.l(2) ; Comporte 3 éléments de 0 à 2 |
Par défaut un tableau est local, pour le rendre global il suffit d'ajouter le mot clé Global devant la déclaration du tableau.
Code purebasic : | Sélectionner tout |
1 2 3 | Dim TableauLocal.l(10) ; Ce tableau sera local Global Dim TableauGlobal.l(10) ; Ce tableau sera global |
Pour passer un tableau en paramètre d'une procédure, il suffit d'indiquer le nombre de dimensions du tableau dans le paramètre de la procédure et d'appeler la procédure en indiquant l'adresse du tableau.
- Tableau() renvoie l'adresse du tableau, vous pouvez également écrire @Tableau().
Depuis la version 4.30, il est nécessaire d'utiliser le mot clé Array dans la déclaration des paramètres d'une procédure.
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 | Procedure Modifier(Array ptr.point(2)) ; Tableau de type 'point' à deux dimensions ptr(1,3)\x=10 EndProcedure Dim Tableau.point(2,5) Tableau(1,3)\x=15 ; Tableau(1,3)\x vaut 15 Tableau(1,3)\y=23 ; Tableau(1,3)\y vaut 23 Modifier(Tableau()) ; Tableau(1,3)\x vaut maintenant 10 , Tableau(1,3)\y est inchangé Debug Tableau(1,3)\x |
Pour copier un tableau vers un autre, on a deux solutions. La première consiste à copier chaque case du tableau numéro 1 dans la case correspondante du tableau numéro 2. Mais cette manière est parfois complexe et risque d'être lente.
La deuxième possibilité est d'utiliser la fonction CopyMemory(). Elle admet trois paramètres, le premier étant le tableau source et le deuxième le tableau destination. Enfin, le troisième est le nombre d'octets à copier. Par exemple, pour copier le tableau Tableau1 dans le tableau Tableau2, il suffit de faire :
Code purebasic : | Sélectionner tout |
1 2 3 4 | Dim Tableau1.point(10) Dim Tableau2.point(10) CopyMemory(Tableau1(), Tableau2(), SizeOf(point)*11) ; 11 éléments |
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Structure Test Age.l Nom.s EndStructure Dim A.Test(4) Dim B.Test(4) A(1)\Age = 45 A(1)\Nom = "Toto" CopyArray(A(), B()) Debug B(1)\Age Debug B(1)\Nom |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.