C'est bien Mindphazer : tu te rapproches de la croyance de groupe. Encore quelques semaines de confinement, et tu seras monothéïste pur et dur !!!Mindphazer a écrit :Mais grands Dieux explique ce que tu veux faire exactement !?
Comment convertir une chaîne de tableau en code...
Re: Comment convertir une chaîne de tableau en code...
Re: Comment convertir une chaîne de tableau en code...
Oui je sais que c'est puissant ça, mais je en sais pas les utiliser, jvé creuser merciAr-S a écrit :Tu veux interpréter ceci ou cela, tu apprends à te servir des regex. Il y a plein d'exemples (et non je ne vais pas en proposer un de plus).je cherche à convertir une chaîne de caractères qui contient des tableaux vers du code PB
Mot cléCreateRegularExpression
Avec les regex, tu vas scinder ta chaine de caractères donc récupérer les morceaux à interpréter.
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.
- Mindphazer
- Messages : 700
- Inscription : mer. 24/août/2005 10:42
Re: Comment convertir une chaîne de tableau en code...
Oui pour le mois de juin, ça devrait le faire !Ollivier a écrit :C'est bien Mindphazer : tu te rapproches de la croyance de groupe. Encore quelques semaines de confinement, et tu seras monothéïste pur et dur !!!Mindphazer a écrit :Mais grands Dieux explique ce que tu veux faire exactement !?
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
- Mindphazer
- Messages : 700
- Inscription : mer. 24/août/2005 10:42
Re: Comment convertir une chaîne de tableau en code...
Cette phrase a du sens...Ombré a écrit : Moi je cherche à convertir une chaîne de caractères qui contient des tableaux vers du code PB et inversement
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Re: Comment convertir une chaîne de tableau en code...
Arrêtez de lire en diagonal c'est chiant, tu à qu'a suivre le sujet !
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: Comment convertir une chaîne de tableau en code...
On sent bien l'esprit gaulois dans ce poste, quand comprendrez-vous tous que vous êtes sur un forum d'antre-aide ???
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 6.20 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: Comment convertir une chaîne de tableau en code...
C'est sûr Micoute.. Mais tu remarqueras qu'il ni a que les posts de David qui sont sujet à controverses... Pour plusieurs raisons..
- 1 - Il n'est jamais clair dans ce qu'il demande..
- 2 - On lui propose quelque chose, il répond très souvent : "Non ça je sais" ou "non tu n'as pas compris ce que je voulais"... Ce qui est frustrant et ce qui est sans doute due à la raison 1..
- 3 - Il se lance toujours dans des trucs improbables qu'il ne finira pas car trop complexe (pour lui et pour beaucoup)
Donc cela créé des tentions.
Mindphazer a tenté de lui répondre plus haut, lis sa réponse....
@Shadow.. Exprime toi clairement mais simplement... Maintenant les tartines incompréhensibles je les vire.
@Autres.. Stop le sarcasme, ignorez le sujet si vous êtes saoulé.
- 1 - Il n'est jamais clair dans ce qu'il demande..
- 2 - On lui propose quelque chose, il répond très souvent : "Non ça je sais" ou "non tu n'as pas compris ce que je voulais"... Ce qui est frustrant et ce qui est sans doute due à la raison 1..
- 3 - Il se lance toujours dans des trucs improbables qu'il ne finira pas car trop complexe (pour lui et pour beaucoup)
Donc cela créé des tentions.
Mindphazer a tenté de lui répondre plus haut, lis sa réponse....
@Shadow.. Exprime toi clairement mais simplement... Maintenant les tartines incompréhensibles je les vire.
@Autres.. Stop le sarcasme, ignorez le sujet si vous êtes saoulé.
~~~~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: Comment convertir une chaîne de tableau en code...
Ce que je comprend surtout, c'est qu'on a toujours tendance à croire que tout le monde est comme nous, bien que l'homme le plus riche du monde de l'homme le plus pauvre du monde n'ont en commun que 24 heures par jour, mais ils ne l'utilisent pas de la même manière, donc à chacun son handicap et à chacun d'aider ceux qui sont moins nantis qu'eux. C'est bien pour cette raison que je n'oublie jamais de remercier celui ou ceux qui me sortent d'un mauvais 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 6.20 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: Comment convertir une chaîne de tableau en code...
Shadow a écrit :Salut,
Alors je ne demande pas de code, juste quelques info, jme débrouille pour le reste.
J'ai beaucoup de mal à me réprésenter un tableau sous forme de chaîne de caractères.
Comment ça s’interprète, comment ça se lit ?
Est ce que ce code de conversion est correcte ?:Code : Tout sélectionner
"[123, [234, Def], Abc, [345, [456, Mno, 567], Jkl], Ghi]" Dim Tableau.s(1, 2, 3) Tableau.s(0, 0, 0) = "123" Tableau.s(0, 1, 0) = "234" Tableau.s(0, 1, 1) = "Def" Tableau.s(0, 0, 1) = "Abc" Tableau.s(0, 2, 0) = "345" Tableau.s(1, 0, 0) = "456" Tableau.s(1, 0, 1) = "Mno" Tableau.s(1, 0, 2) = "567" Tableau.s(0, 2, 1) = "Jkl" Tableau.s(0, 0, 3) = "Ghi"
Juste pour s'amuser :
Code : Tout sélectionner
Structure subString
;if *sa = #Null then s.s contains the element, otherwise s.s is ignored and *sa points to another arraySubString as the element.
;si *sa = #Null alors s.s contient l'élément, sinon s.s est ignoré et *sa pointe vers un autre arraySubString comme élément.
s.s
*sa.arraySubString
EndStructure
Structure arraySubString
Array e.subString(0)
EndStructure
Structure charArrayPtr
c.c[0]
EndStructure
;Creates a SubString Array representation from a formatted string and returns the address of the new structure that was created.
;If formatted string is empty it returns zero, if there is not an equal number of left and right brackets it returns -1.
;If the address of a initial structure was passed in then that same address will be returned if the formatted string is not in error.
;Crée une représentation de type SubString Array à partir d'une chaîne formatée et renvoie l'adresse de la nouvelle structure qui a été créée.
;Si la chaîne formatée est vide, il renvoie zéro, s'il n'y a pas un nombre égal de crochets à gauche et à droite, il renvoie -1.
;Si l'adresse d'une structure initiale a été transmise, cette même adresse sera renvoyée si la chaîne formatée n'est pas erronée.
Procedure.i createSubStringArray(*t.arraySubString, i$)
Protected ic, ic_end, x = Len(i$), *charPtr.charArrayPtr, index_el, max_el, depth
;Debug i$
If *t = 0
*t = AllocateStructure(arraySubString)
EndIf
If CountString(i$, "[") <> CountString(i$, "]")
;badly formed string, does not have same number of matching brackets ;chaîne mal formée, n'a pas le même nombre de parenthèses correspondantes
ProcedureReturn -1
ElseIf x = 0
ProcedureReturn 0 ;empty string ;chaîne vide
Else
*charPtr = @i$
If *charPtr\c[ic] <> '[' Or *charPtr\c[x - 1] <> ']'
ProcedureReturn -1 ;badly formed string, needs left and right brackets ;chaîne mal formée, nécessite des crochets gauche et droit
EndIf
ic + 1
EndIf
;count total elements ;compter les éléments totaux
ic_end = ic
While ic_end <> x
Select *charPtr\c[ic_end]
Case '['
depth + 1
Case ']'
depth - 1
If depth < 0
;malformed string, more closing brackets occur before opening brackets ;chaîne malformée, plus de crochets de fermeture se produisent avant les crochets d'ouverture
x = ic_end ;reduce length of string ;réduire la longueur de la chaîne
Break
EndIf
Case ','
If depth = 0
max_el + 1
EndIf
EndSelect
ic_end + 1
Wend
Dim *t\e(max_el)
;Debug max_el
While ic <= x
If *charPtr\c[ic] <> '[' ;simple string ;chaîne simple
ic_end = ic + 1
While *charPtr\c[ic_end] <> ',' And *charPtr\c[ic_end] <> ']' And ic_end < x
ic_end + 1
Wend
;Debug Str(index_el) + "'" + PeekS(*charPtr + ic * SizeOf(character), ic_end - ic) + "'"
*t\e(index_el)\s = PeekS(*charPtr + ic * SizeOf(character), ic_end - ic)
Else ;sub-array string ;chaîne de sous-Tableau
;count total elements ;compter les éléments totaux
ic_end = ic + 1
depth = 0
While ic_end <> x
Select *charPtr\c[ic_end]
Case '['
depth + 1
Case ']'
depth - 1
If depth < 0 ;end of string ;fin de la chaîne
Break
EndIf
Case ','
If depth = 0
EndIf
EndSelect
ic_end + 1
Wend
ic_end + 1
;Debug Str(index_el) + " array "
*t\e(index_el)\sa = createSubStringArray(0, PeekS(*charPtr + ic * SizeOf(character), ic_end - ic))
EndIf
If *charPtr\c[ic_end] = ','
ic_end + 1
While ic_end < x And *charPtr\c[ic_end] = ' '
ic_end + 1
Wend
ic = ic_end
ElseIf *charPtr\c[ic_end] = ']'
Break ;exit the loop and return results ;sortir la boucle et renvoyer les résultats
EndIf
index_el + 1
Wend
ProcedureReturn *t
EndProcedure
;display formatted contents of SubStringArray ;afficher le contenu formaté de SubStringArray
Procedure.s outputSubStringArray(*t.arraySubString)
Protected i, o$, x = ArraySize(*t\e())
If x <> -1
o$ = "["
i = 0
While i <= x
If *t\e(i)\sa = 0
o$ + *t\e(i)\s
Else
o$ + outputSubStringArray(*t\e(i)\sa)
EndIf
o$ + ", "
i + 1
Wend
ProcedureReturn ReplaceString(o$, ", ", "]", #PB_String_NoCase, Len(o$) - 2)
Else
ProcedureReturn "[]" ;empty ;vide
EndIf
EndProcedure
;Free contents of SubStringArray structure and sub-structures previous created with createSubStringArray()
;Set is_ByValue = False if freeing a variable (i.e. Tableau.arraySubString) instead of a pointer.
;Returns contents of SubStringArray.
;Contenu libre de la structure SubStringArray et des sous-structures précédemment créées avec createSubStringArray()
;Set is_ByValue = False si l'on libère une variable (par exemple Tableau.arraySubString) au lieu d'un pointeur.
;Renvoie le contenu du tableau SubStringArray.
Procedure.s freeSubStringArray(*t.arraySubString, is_ByValue = #True)
Protected i, o$, x = ArraySize(*t\e())
o$ = outputSubStringArray(*t)
i = 0
While i <= x
If *t\e(i)\sa <> 0
freeSubStringArray(*t\e(i)\sa)
*t\e(i)\sa = 0
EndIf
i + 1
Wend
If is_ByValue
FreeStructure(*t)
Else
ClearStructure(*t, arraySubString)
EndIf
ProcedureReturn o$
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
Define Tableau.arraySubString, Tableu2.arraySubString, result
Define x$ = "[123, [234, Def], Abc, [345, [456, Mno, 567], Jkl], Ghi]"
result = createSubStringArray(@Tableau, x$)
Select result
Case -1
Debug "Formatted string contains unmatching brackets."
Case 0
Debug "Formatted string is empty."
Default
Debug "arraySubString structure created at address " + result + "."
EndSelect
Debug outputSubStringArray(@Tableau)
freeSubStringArray(@Tableau, #False)
CompilerEndIf
Re: Comment convertir une chaîne de tableau en code...
@Demivec, merci 
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.