Seite 1 von 1
Pointer to List()! Wie?
Verfasst: 27.03.2023 11:30
von SMaag
Wie bekommt man Pointer auf Listen ähnlich der Übergabe eine Liste an eine Procedure
so ist es kein Problem
Code: Alles auswählen
Procedure Test(List MyList.i())
AddElement MyList()
EndProcedure
Jetzt das ganze, wenn die Liste innerhalb der Procedure mit Pointer sein soll
Code: Alles auswählen
Global NewList List1.i(), NewList List2.i()
Procedure TestListPointer()
Protected *ptrList
; Protected List *ptrList
*ptrList = @List1()
AddElement (*ptrList)
*ptrList =@List2()
AddElement (*ptrList)
EndProcedure
ich bekomm das nicht gebacken!
geht das überhaupt irgendwie?
Re: Pointer to List()! Wie?
Verfasst: 27.03.2023 11:52
von STARGÅTE
So direkt leider nicht.
Da musst du dir eine Helfer-Struktur machen und dann den Pointer der Struktur-Daten übergeben:
Code: Alles auswählen
Structure MyList
List List0.i()
EndStructure
Global MyList1.MyList, MyList2.MyList
Procedure TestListPointer()
Protected *ptrList.MyList
*ptrList = @MyList1
AddElement (*ptrList\List0())
*ptrList = @MyList2
AddElement (*ptrList\List0())
EndProcedure
TestListPointer()
ShowVariableViewer()
CallDebugger
Re: Pointer to List()! Wie?
Verfasst: 27.03.2023 18:17
von Benubi
Das geht nur mit in Strukturen eingebauten PB Linked Lists (Arrays, Maps...). Diese Daten-Typen bzw. Struktur-Elemente für Listen, Array und Maps sind auch größer als nur 1 Zeiger/Integer. Es wird also eine Struktur implementiert und nicht ein Zeiger auf eine Struktur (k.A. ob es deswegen nur indirekt geht).
Code: Alles auswählen
Structure MyMap
Map env.s()
EndStructure
Procedure$ ReplaceEnvVariables(String$, *Env.MyMap)
Debug "MyMap pointer"
Debug *Env
Debug @*Env\env() ; <- !?
EndProcedure
Define bla.MyMap
Debug ReplaceEnvVariables("Hello", bla)
Danke
Verfasst: 29.03.2023 10:20
von SMaag
So hab ich das jetzt im Prinzip gelöst, das listen von Listen!
Code: Alles auswählen
Structure TListWraper
List MyList.i()
EndStructure
NewList Lister.TListWraper()
For I=1 To 5
AddElement(Lister())
For N = 1 To 20
AddElement(Lister()\MyList())
Lister()\MyList() = I
Next
Next
ResetList(Lister())
ForEach Lister()
Debug "Lister "
ResetList(Lister()\MyList())
ForEach Lister()\MyList()
Debug Lister()\MyList()
Next
Next
Re: Pointer to List()! Wie?
Verfasst: 29.03.2023 13:57
von NicTheQuick
Du brauchst kein ResetList() vor einem ForEach.
