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.
La fonction assembleur Dup permet de dupliquer une valeur. Exemple : 4 Dup (25) duplique 4 fois la valeur 25.
Cette fonction peut être utilisée pour étendre les possibilités avec une DataSection. Et comme le montre l'exemple ci-dessous, il est possible de mixer la syntaxe classique de PureBasic avec la fonction Dup.
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | Macro Data_B : !db EndMacro Macro Data_L : !dd EndMacro DataSection label: Data.b 18 Data_b 4 Dup (5) Data_l 8 Dup (1,2) Data.l 123, 456 Data.q $7FFFFFFFFFFFFFFF EndDataSection Restore label Read.b b Debug b For i=1 To 4 Read.b b Debug b Next For i=1 To 18 Read.l l Debug l Next Read.q q Debug q |
Cette méthode est multi plateforme (pas d'asm) et fonctionne pour tous les types de données.
Code purebasic : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | ; repeat once Macro _R1(_type_, _val_) Data._type_ _val_ EndMacro ; repeat 10 times Macro _R10(_type_, _val_) _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_) _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_): _R1(_type_, _val_) EndMacro ; repeat 100 times Macro _R100(_type_, _val_) _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_) _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_): _R10(_type_, _val_) EndMacro ; repeat _count_ times (0-999) Macro Times(_type_, _val_, _count_) CompilerIf (_count_) > 999 CompilerError "Repeat count cannot be more than 999" CompilerEndIf CompilerIf (_count_) >= 900: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 800: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 700: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 600: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 500: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 400: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 300: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 200: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) >= 100: _R100(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 90: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 80: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 70: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 60: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 50: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 40: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 30: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 20: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 100 >= 10: _R10(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 9: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 8: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 7: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 6: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 5: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 4: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 3: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 2: _R1(_type_, _val_): CompilerEndIf CompilerIf (_count_) % 10 >= 1: _R1(_type_, _val_): CompilerEndIf EndMacro ; ---- example ---- Restore values For i = 1 To 134 Read.s x.s Debug Str(i) + ": " + x Next i DataSection values: Times(s, "foo", 23) Times(s, "bar", 111) EndDataSection |
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.