Merci Falsam,
Sait tu comment faire avec l'exemple de G-Rom ?
Sans utiliser le Json, comme il a fait lui.
SimplyJson
Re: SimplyJson
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: SimplyJson
Bien sur qu'il le sait , mais si tu lui demande c'est que tu n'as pas compris mon code plus haut. il y a une notion de pointeur , de taille mémoire , etc...
si tu comprend mon exemple plus haut, tu peut tout écrire sur ton disque.
si tu comprend mon exemple plus haut, tu peut tout écrire sur ton disque.
Re: SimplyJson
Voici une version beaucoup plus court et Minimal.
Désormais plus de limite.
Désormais plus de limite.
Code : Tout sélectionner
; Créé par Dieppedalle David le 02/04/2020.
; Simplifie énormément les ajouts et les récupérations des données du Json grâce à un Patch (Adresse).
; Vous aurez besoin de la commande suivante pour l'utiliser avec les Json:
; SimplyJson::FindPatch(#IDJson, Patch$)
; Patch$ est une adresse sous forme de chaîne de caractères avec la syntaxe suivante: NomElement1\NomElement2\NomElement3, Etc.
; Grace à cela, vous n'avez plus à vous souciez des adresses mémoire multiples, Encombrantes, et Déroutante, le programme se charge de tous !
; Vous pouvez faire ce que bon vous semble, pas de limite !
DeclareModule SimplyJson
Declare.b CheckPatch(Patch.s)
Declare.i FindPatch(ID.i, Patch.s)
Declare.b CreatePatch(ID.i, Patch.s)
EndDeclareModule
Module SimplyJson
; Vérifie que la chaîne qui contient le Patch est correct.
Procedure.b CheckPatch(Patch.s)
If Mid(Patch.s, 1, 1) = "\" Or FindString(Patch.s, "\\") Or Mid(Patch.s, Len(Patch.s), 1) = "\" Or FindString(Patch.s, Chr(34)) Or FindString(Patch.s, "/") Or FindString(Patch.s, ":") Or FindString(Patch.s, "*") Or
FindString(Patch.s, "?") Or FindString(Patch.s, "<") Or FindString(Patch.s, ">") Or FindString(Patch.s, "|") Or Patch.s = ""
ProcedureReturn 0
Else
ProcedureReturn 1
EndIf
EndProcedure
; Cherche le Patch dans le Json et s'il a été trouvé alors renvoie sont adresse mémoire, sinon 0.
Procedure.i FindPatch(ID.i, Patch.s)
If IsJSON(ID.i) And CheckPatch(Patch.s) And JSONValue(ID.i)
PatchMemoryAdress.i = JSONValue(ID.i)
NombreSlash.i = CountString(Patch.s, "\")
If NombreSlash.i = 0
MembreName.s = StringField(Patch.s, 1, "\")
Trouver.b = 0
If JSONType(PatchMemoryAdress.i) = 5
If ExamineJSONMembers(PatchMemoryAdress.i)
While NextJSONMember(PatchMemoryAdress.i)
If JSONMemberKey(PatchMemoryAdress.i) = MembreName.s
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Trouver.b = 1
Break
EndIf
Wend
EndIf
If Trouver.b = 0
ProcedureReturn 0
Else
ProcedureReturn PatchMemoryAdress.i
EndIf
Else
ProcedureReturn 0
EndIf
ElseIf NombreSlash.i > 0
If JSONType(PatchMemoryAdress.i) = 5
For Index.i = 0 To NombreSlash.i
MembreName.s = StringField(Patch.s, Index.i + 1, "\")
Trouver.b = 0
If JSONType(PatchMemoryAdress.i) = 5 And ExamineJSONMembers(PatchMemoryAdress.i)
While NextJSONMember(PatchMemoryAdress.i)
If JSONMemberKey(PatchMemoryAdress.i) = MembreName.s
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Trouver.b = 1
Break
EndIf
Wend
EndIf
If Trouver.b = 0
ProcedureReturn 0
EndIf
Next
ProcedureReturn PatchMemoryAdress
Else
ProcedureReturn 0
EndIf
EndIf
EndIf
EndProcedure
; Création des éléments et de leur valeur dans le Json grace à un Patch (Adresse).
Procedure.b CreatePatch(ID.i, Patch.s)
If IsJSON(ID.i) And CheckPatch(Patch.s) And JSONValue(ID.i)
PatchMemoryAdress.i = FindPatch(ID.i, Patch.s)
If Not PatchMemoryAdress.i
PatchMemoryAdress.i = JSONValue(ID.i)
NombreSlash.i = CountString(Patch.s, "\")
If NombreSlash.i = 0
If Not JSONType(PatchMemoryAdress.i) = 5
Value.i = SetJSONObject(JSONValue(ID.i))
Else
Value.i = JSONValue(ID.i)
EndIf
If AddJSONMember(Value.i, Patch.s)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
ElseIf NombreSlash.i > 0
For Index.i = 0 To NombreSlash.i
MembreName.s = StringField(Patch.s, Index.i + 1, "\")
Trouver.b = 0
If JSONType(PatchMemoryAdress.i) = 5 ; La valeur est t'elle de type Objet ?
If ExamineJSONMembers(PatchMemoryAdress.i) ; Cherchons dans ses membres.
While NextJSONMember(PatchMemoryAdress.i); Tant qu'il y a des Membres.
If JSONMemberKey(PatchMemoryAdress.i) = MembreName.s ; Si le Nom du Membre en cours d'examination est le même que celui qu'on cherche.
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Trouver.b = 1
Break
EndIf
Wend
EndIf
If Trouver.b = 1
PrecedentMembreName.s = MembreName.s
Continue
ElseIf Trouver.b = 0
If JSONType(PatchMemoryAdress.i) <> 5
If AddJSONMember(SetJSONObject(PatchMemoryAdress.i), MembreName.s)
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Continue
Else
ProcedureReturn 0
EndIf
Else
If AddJSONMember(PatchMemoryAdress.i, MembreName.s)
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Continue
Else
ProcedureReturn 0
EndIf
EndIf
EndIf
Else
For Index2 = Index To NombreSlash.i
MembreName.s = StringField(Patch.s, Index2.i + 1, "\")
If AddJSONMember(SetJSONObject(PatchMemoryAdress.i), MembreName.s)
PatchMemoryAdress.i = JSONMemberValue(PatchMemoryAdress.i)
Continue
Else
ProcedureReturn 0
EndIf
Next
Break
EndIf
Next
ProcedureReturn 1
EndIf
Else
ProcedureReturn 0
EndIf
Else
ProcedureReturn 0
EndIf
EndProcedure
EndModule
#MyJson = 1 ; Id du Json.
If CreateJSON(#MyJson) ; Création du Json.
; Ont peut pour le fun, vérifier les Patchs pour voir si la syntaxe est valide: 0 = Non, 1 = Oui.
Debug SimplyJson::CheckPatch("Famille\Membre\Parents\Tom")
Debug SimplyJson::CheckPatch("Famille\Membre\Parents\Calypso")
Debug SimplyJson::CheckPatch("Famille\Membre\Parents\Enfants")
; Ajouts des éléments dans le Json, Renvoie: 0 = Echec, 1 = Ok.
; Ici le programme gère tous tout seul, si besoin, il crééra automatiquement les objets dans le Json.
SimplyJson::CreatePatch(#MyJson, "Famille\Membre\Parents\Tom")
SimplyJson::CreatePatch(#MyJson, "Famille\Membre\Parents\Calypso")
SimplyJson::CreatePatch(#MyJson, "Famille\Membre\Parents\Enfants")
; Inscris une valeurs dans chaque élément du Json.
SetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Tom"), "123")
SetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Calypso"), "234")
SetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Enfants"), "345")
; Récupère la valeur dans chaque élément du Json.
Debug "Famille\Membre\Parents\Tom = " + GetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Tom"))
Debug "Famille\Membre\Parents\Calypso = " + GetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Calypso"))
Debug "Famille\Membre\Parents\Enfants = " + GetJSONString(SimplyJson::FindPatch(#MyJson, "Famille\Membre\Parents\Enfants"))
; Affichage.
Debug "--------------------------------------------------------------------------------"
Debug ComposeJSON(#MyJson, #PB_JSON_PrettyPrint)
Debug "--------------------------------------------------------------------------------"
EndIf
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.