Hallo zusammen,
um allen die auf diesen Thread stoßen, das Ergebnis meiner Überlegungen zu hinterlassen poste ich die Lösung für die ich mich letztendlich entschieden habe.
Code: Alles auswählen
Structure meals
name.s
ingredient.s
preparation.s
time.f
people.l
pic.s
EndStructure
Global NewList meal.meals()
Structure wines
name.s
sort.s
color.s
description.s
EndStructure
Global NewList wine.wines()
;---------------------------------------------- load data
Procedure load_data(filename.s)
OpenPreferences(filename.s)
number.l = ReadPreferenceLong("number_meal",0) ;Anzahl der Mahlzeiten auslesen
For i=0 To number
AddElement(meal())
meal()\name = ReadPreferenceString("name"+Str(i),"0")
meal()\ingredient = ReadPreferenceString("ingredient"+Str(i),"0")
meal()\preparation = ReadPreferenceString("preparation"+Str(i),"0")
meal()\time = ReadPreferenceFloat("time"+Str(i),0)
meal()\people = ReadPreferenceLong("people"+Str(i),0)
meal()\pic = ReadPreferenceString("pic"+Str(i),"0")
Next
number = ReadPreferenceLong("number_wine",0) ;Anzahl der Weine auslesen
For i=0 To number
AddElement(wine())
wine()\name = ReadPreferenceString("name"+Str(i),"0")
wine()\sort = ReadPreferenceString("sort"+Str(i),"0")
wine()\color = ReadPreferenceString("color"+Str(i),"0")
wine()\description = ReadPreferenceString("description"+Str(i),"0")
Next
ClosePreferences()
EndProcedure
;---------------------------------------------- save data
Procedure save_data(filename.s)
CreatePreferences(filename.s)
number.l = ListSize(meal())
WritePreferenceLong("number_meal",number) ;Anzahl der Mahlzeiten ermitteln und speichern
FirstElement(meal()) ;auf das erste Element springen
For i=0 To number ;könnte auch mit "foreach" gelöst werden
WritePreferenceString("name"+Str(i),meal()\name)
WritePreferenceString("ingredient"+Str(i),meal()\ingredient)
WritePreferenceString("preparation"+Str(i),meal()\preparation)
WritePreferenceFloat("time"+Str(i),meal()\time)
WritePreferenceLong("people"+Str(i),meal()\people)
WritePreferenceString("pic"+Str(i),meal()\pic)
NextElement(meal())
Next
number = ListSize(wine())
WritePreferenceLong("number_wine",number) ;Anzahl der Weine ermitteln und speichern
FirstElement(wine()) ;auf das erste Element springen
For i=0 To number
WritePreferenceString("name"+Str(i),wine()\name)
WritePreferenceString("sort"+Str(i),wine()\sort)
WritePreferenceString("color"+Str(i),wine()\color)
WritePreferenceString("description"+Str(i),wine()\description)
NextElement(wine())
Next
ClosePreferences()
EndProcedure
Aufgerufen wird das ganze dann im Programm mit folgenden Befehlen:
Sorry für die Codemenge, aber es kamen so viele gute Entwürfe, daß ich ein vollständiges Ergebnis hinterlassen wollte. Ich habe mich in erster Linie für eine Lösung entschieden, die ich als PureAnfänger durchblicken kann, und wo ich mich einigermaßen sicher fühle. Die Funktion ist nun doch spezifisch und nicht universal einsetzbar geworden. Trotzdem bin ich mit dem Ergebnis sehr zufrieden. Sobald ich ein wenig besser geworden bin, sehe ich mir den Thread nochmal an, und knöpfe mir die eleganteren Lösungen vor

Danke nochmal an alle die sich beteiligt haben.
Gruß