Ik zal even de post van K7Jz verduidelijken.
Zoals net gezegd is, is deze oplossing niet echt praktisch:
code:
Dier1 = "Aap"
Dier2 = "Kip"
Dier3 = "Olifant"
Waarom niet?: een variable kun je in de meeste programmeertalen niet dynamisch maken.
Dit soort dingen sla je beter in een array op (of je nu bij 0 of 1 begint maakt voor het voorbeeld even niet uit):
code:
Dier[1] = "Aap"
Dier[2] = "Kip"
Dier[3] = "Olifant"
Hier ontstaat weer een ander probleem: Hoe weet je of je alle keywords hebt? (in dit voorbeeld "Dier" / "Soort" / "Voedsel").
Als je vantevoren exact weet welke keywords je hebt kun je meerdere arrays maken, voor elk keyword een array dat maakt het een stukken simpeler.
Maar stel dat het niet zo is dus je weet niet wat je kunt verwachten? Dan zul je een meerdimensionaal array moeten maken. Bijvoorbeeld:
code:
variable["Dier"][1] = "Aap"
variable["Dier"][2] = "Kip"
..
variable["Voedsel"][2] = "Graantjes"
Dit ziet er dan al netjes overzichtelijk uit.
Afhankelijk van je gebruikte programmeertaal kan deze constuctie simpel te implementeren zijn maar ook heel complex!
(in C heel lastig, perl/python/ruby => makkie)
Een string als index gebruiken (in dit geval "Dier") is in een aantal high level (script) talen erg simpel: Zoiets noemt men een hash table / dictonary etc. De index noemt men dan de "key" en de inhoud de "value".
Ik weet niet of dit in flowcode kan.
Nu even over de string ontleden: Ik jouw voorbeeld zie ik regelmatig dit stuk string langs komen:
code:
.... "key" : "value" ....
Als dat echt consistent en altijd zo is kun je dat relatief makkelijk "parsen" mits de "key" een beperkte lengte heeft.
Je ontvangt alle tekens in een (ring) buffer als je nu een ":" tegenkomt kijk je in de buffer achteruit naar de eerste complete string die tussen de string quotes ("") staat, dat is je key en sla je die tijdelijk op.
Dan ga je verder kijken in de ontvangen buffer tot je weer een nieuwe string hebt gevonden, dus een stuk text tussen "". Dat is nu je value.
Nu heb je nog een andere uitdaging: Je zult per "key" een teller moeten bijhouden waar je mee doornummert. Dit kun je ook in een hash-table opslaan, bijvoorbeeld:
Hierbij dien je rekening te houden dat als je een key tegenkomt die je nog nooit gezien hebt, eerst de hashentry op nul moet zetten.
Dus krijg je zoiets als pseudo code:
code:
if defined count[key] {
count[key] += 1
} else {
count[key] = 0
}
index = count[key]
// Opslaan
variable[key][index] = value
In sommige programmeertalen kun je meteen de hash variable incrementen, een "undefined" entry wordt bij een increment als 0 verondersteld.
Ik hoop dat je er iets aan hebt en je me nog kunt volgen, anders leg ik het nog wel verder uit.