IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

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.

SommaireLes tableaux (4)
précédent sommaire suivant
 

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

Mis à jour le 14 février 2008 comtois

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

Mis à jour le 14 février 2008 comtois

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

Mis à jour le 14 février 2008 comtois

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
Depuis la version 4.50 c'est encore plus simple, la fonction CopyArray() est ajoutée.

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

Mis à jour le 14 février 2008 Bob comtois Emmanuel Delahaye

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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.