Hallo,
danke noch mal für die Tipps.
Das Video von NicTheQuick hatte ich mir schon vorher mal angesehen und gestaunt, wie einfach doch programmieren sein kann.
Ich bekomme aber schon Stirnrunzeln, wenn ich die zwei "::" sehe, kann damit garnichts anfangen und weiß auch nicht, ob das in den Anfängerbereich gehört. Ich finde dazu auch nichts in der Hilfe. Suchen kann man danach jedenfalls nicht. Vielleicht zeigt mir jemand mal, wo das erklärt wird.
Warum nicht Listen in eine ThreadProzedur übergeben?
Ich finde, das macht schon Sinn. Wenn ich 10 Listen bearbeiten will, müsste ich ja 10 Prozeduren anlegen. Bei einer Programmänderung ganz schön aufwendig.
Also, was ich gesucht habe war ein simples Beispiel für Anfänger, nach langem probieren hat es dann geklappt:
Code: Alles auswählen
Structure mitlisten
List zahlen.l()
EndStructure
Procedure ListeImThread(*zeiger.mitlisten)
LastElement(*zeiger\zahlen())
AddElement(*zeiger\zahlen())
*zeiger\zahlen() = 1
EndProcedure
Define.mitlisten adresse
CreateThread(@ListeImThread(),@adresse)
; etc
Daraus gemacht habe ich folgendes:
Code: Alles auswählen
Structure mitlisten
List zahlen.l()
List namen$()
; usw
EndStructure
Global listposition = 0
Global MaxListgroesse = 20
Procedure ListeImThread(*zeiger.mitlisten)
For z = 0 To MaxListgroesse -1
d.l = Random(3,1)*1000
Delay (d)
LastElement(*zeiger\zahlen())
AddElement(*zeiger\zahlen())
*zeiger\zahlen() = d + z
Debug "neuer Wert nach: " + Str(d/1000) + " Sekunden: " + Str(d+z)
Next
; z.B noch weitere Listen bearbeiten
AddElement(*zeiger\namen$()) : *zeiger\namen$() = "Willi"
AddElement(*zeiger\namen$()) : *zeiger\namen$() = "Moritz"
EndProcedure
Define.mitlisten adresse
CreateThread(@ListeImThread(),@adresse)
Procedure leseListe(List z.l())
If ListIndex(z()) = MaxListgroesse -1
listposition = 0
EndIf
If ListSize(z()) > listposition
SelectElement(z(), listposition)
Debug "Juhu: " + Str(z())
listposition +1
Else
Debug "Mist! Nichts neues!"
EndIf
EndProcedure
Repeat
leseListe(adresse\zahlen())
Delay(1500)
ForEver
Die Liste wird im Hintergrund gefüllt. Mal schneller, mal langsamer.
Ich kann aber schon daraus lesen, sofern Elemente vorhanden sind.
Bisher hat es funktioniert.
Oder spricht irgendwas dagegen, das so umzusetzen?
vg stab