AddElementTableau()
Re: AddElementTableau()
Oui, mais dans ce cas on pourrait remplacer Macro par Procedure, je veux parler des macros ou on utilise le signe # pour concaténer, c'est ce principe que je ne comprend pas.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: AddElementTableau()
Le dièse sert de joker.
L'exemple en ligne est parlant : https://www.purebasic.com/french/docume ... acros.html
Je le reprends en remplaçant Type par JOKER
Ici on voit JOKER, Texte
On laisse le choix à l'utilisateur de remplacer JOKER par ce qu'on veut. Donc c'est comme si on écrivait JOKERCase
macro Xcase (JOKER, texte)
JOKER#CASE peut donc être remplacer par xxxxCASE en l’occurrence dans l'exemple U et L permettent donc d’écrire Ucase ou Lcase histoire de choisir maj et min.
L'exemple en ligne est parlant : https://www.purebasic.com/french/docume ... acros.html
Je le reprends en remplaçant Type par JOKER
Ici on voit JOKER, Texte
On laisse le choix à l'utilisateur de remplacer JOKER par ce qu'on veut. Donc c'est comme si on écrivait JOKERCase
macro Xcase (JOKER, texte)
JOKER#CASE peut donc être remplacer par xxxxCASE en l’occurrence dans l'exemple U et L permettent donc d’écrire Ucase ou Lcase histoire de choisir maj et min.
Code : Tout sélectionner
Macro XCase(JOKER, Texte) ; renvoie le texte dans la casse du type spécifié
JOKER#Case(Texte) ; Type U => MAJUSCULES
EndMacro ; Type L => minuscules
Debug XCase(U, "Salut") ; macro remplacée par UCase("Salut")
Debug XCase(L, "Salut") ; macro remplacée par LCase("Salut")
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: AddElementTableau()
Merci pour cette explication Ar'S, ça devrais être mis dans l'aide car
maintenant j'ai compris comment ça fonctionne grâce a toi
maintenant j'ai compris comment ça fonctionne grâce a toi
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: AddElementTableau()
Je suis d'accord, une aide un peu plus précise sur la concaténation serait la bienvenue dans la doc.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: AddElementTableau()
Mais bon sang, mais c'est bien sûr, vu comme ça, ça change tout.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: AddElementTableau()
C'est vraiment un truc de dingue ces MACROS
Je sais pas si ça existe dans les autres langages, mais je pense qu'on a surement du mal à mesurer la puissance de ce truc
Je sais pas si ça existe dans les autres langages, mais je pense qu'on a surement du mal à mesurer la puissance de ce truc
Re: AddElementTableau()
Pourtant ça fait un bail qu'on utilise ça dans les punchs
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: AddElementTableau()
Pour moi la meilleurs façon est celle-ci car elle ne duplique pas du code
et que on peut mettre tous se qu'on veux dans les paramètre
du moment qu’on respecte le type en entrée:
J'ai tenté de mettre le code sur le forum mais il étais long et à été supprimer par Falsam sans raison:
https://www.dropbox.com/s/mi2u8tgzpkqxp ... te.pb?dl=0
et que on peut mettre tous se qu'on veux dans les paramètre
du moment qu’on respecte le type en entrée:
J'ai tenté de mettre le code sur le forum mais il étais long et à été supprimer par Falsam sans raison:
https://www.dropbox.com/s/mi2u8tgzpkqxp ... te.pb?dl=0
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: AddElementTableau()
Les utilisateurs jugeront à la fois tes propos et l'hérésie intellectuelle et déontologique de ton code.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: AddElementTableau()
Même si poster un code est apprécié, il faut quand même que celui-ci reste dans une limite de taille raisonnable. Ton code était énorme, et le principe est facile à comprendre en quelques lignes. Dans ce cas, il vaut mieux le poster sur un espace personnel et partager le lien. Attention à dropbox, car le fichier finira par être effacé, et le lien qui restera sur le forum sera mort.
Re: AddElementTableau()
Ok, c'est noté
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- Kwai chang caine
- Messages : 6962
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: AddElementTableau()
Bon....j'aurais été MODO, je l'aurais, je pense pas, supprimé....falsam a écrit :Les utilisateurs jugeront à la fois tes propos et l'hérésie intellectuelle et déontologique de ton code.
Mais j'ai regardé ton code SHADOW..... il m'a fait du bien....
Je comprend quand même un peu, ce qu'à voulu dire FALSAM , sincèrement des fois "on s'demande" ????
Ton code.... c'est pire qu'un plat mexicain pour le processeur non ???
Re: AddElementTableau()
Bha j'ai chercher comment faire autrement mais j'y parviens pas
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.
PureBasic: 5.60 x64 Bits.
Re: AddElementTableau()
Il est utile d'utiliser un tableau en l'agrandissant à la place d'un liste dans deux cas:
1/ Dans le cas où la quantité de mémoire est critique (un tableau prend moins de mémoire qu'une liste qui stock 2 pointeurs en plus des données)
2/ Dans le cas où la vitesse du traitement de cette succession de données est critique (la mémoire cache apprécie grandement que les données soient sériels tandis que dans une liste doublement chaînée les éléments sont potentiellement éloignées les uns des autres.)
Concernant le point 1, c'est quand même asse rare, avec les grosses quantités de mémoire qu'on a de nos jours, qu'on soit à 2 dwords ou 2 Qwords prêt par donnée stockée. Mais bon.
Concernant l'allocation mémoire, il semblerait que le système alloue directement 2^16 (65536) octets par défaut dont 65024 utilisables.
Donc tant que ton tableau ne dépasse pas 65024 octets de long, il peut être étendu sans ralentissement notable. Au dela, une plage deux fois plus longue sera allouée et les éléments existants seront copiés dans cette nouvelle zone entraînant forcément un petit laps de temps supplémentaire.
On notera aussi qu'utiliser un tableau avec les fonctions d'une liste pose certains problèmes
-Les insertions/suppressions, hormis à la fin, seront extrêmement lentes, à cause de l'obligation de décaler les valeurs du tableau pour faire une place ou la supprimer.
1/ Dans le cas où la quantité de mémoire est critique (un tableau prend moins de mémoire qu'une liste qui stock 2 pointeurs en plus des données)
2/ Dans le cas où la vitesse du traitement de cette succession de données est critique (la mémoire cache apprécie grandement que les données soient sériels tandis que dans une liste doublement chaînée les éléments sont potentiellement éloignées les uns des autres.)
Concernant le point 1, c'est quand même asse rare, avec les grosses quantités de mémoire qu'on a de nos jours, qu'on soit à 2 dwords ou 2 Qwords prêt par donnée stockée. Mais bon.
Concernant l'allocation mémoire, il semblerait que le système alloue directement 2^16 (65536) octets par défaut dont 65024 utilisables.
Donc tant que ton tableau ne dépasse pas 65024 octets de long, il peut être étendu sans ralentissement notable. Au dela, une plage deux fois plus longue sera allouée et les éléments existants seront copiés dans cette nouvelle zone entraînant forcément un petit laps de temps supplémentaire.
On notera aussi qu'utiliser un tableau avec les fonctions d'une liste pose certains problèmes
-Les insertions/suppressions, hormis à la fin, seront extrêmement lentes, à cause de l'obligation de décaler les valeurs du tableau pour faire une place ou la supprimer.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: AddElementTableau()
Depuis, j'ai trouvé d'autres solutions pour remplir un tableau sans se soucier de sa dimension, parce que ça ne marche qu'avec une seule, mais on pourrait le faire avec plusieurs.
Code : Tout sélectionner
Procedure iAjElemTab(Array idTableau(1),var.s)
For i=1 To CountString(var.s,",") + 1
ReDim MonTableau(i)
MonTableau(i) = Val(StringField(var.s,i,","))
Next i
EndProcedure
Procedure sAjElemTab(Array idTableau.s(1),var.s)
For i=1 To CountString(var.s,",") + 1
ReDim idTableau(i)
idTableau(i) = StringField(var.s,i,",")
Next i
EndProcedure
Global Dim MonTableau(0), Dim MonTableau2.s(0)
MonTableau(0) = 10
MonTableau2.s(0) = "10"
iAjElemTab(MonTableau(),"1,2,42,13,21,420,24,3,1")
sAjElemTab(MonTableau2(),"1,2,42,13,21,420,24,3,1")
; vérification MonTableau()
For i = 0 To ArraySize(MonTableau())
Debug MonTableau(i)
Next
Debug ""
; vérification Montableau2()
For i = 0 To ArraySize(MonTableau2())
Debug MonTableau2(i)
Next
Debug ""
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !