Seite 2 von 2

Verfasst: 13.07.2006 13:10
von Leonhard
Eigendlich währe das möglich. Die Liste wird (soweit ich weis) als Pointer übergeben.

Verfasst: 13.07.2006 17:32
von ts-soft
Den Pointer zur ner Liste kannste schon immer übergeben, im Imterface ist
dies ja ein Long.

Verfasst: 14.07.2006 15:54
von Leonhard
Und wie kann ich diesen Pointer normal verwenden, wie eine Liste?
Gibt es dafür Funktionen, die aus einer Pointer-Liste lesen können?

Verfasst: 14.07.2006 16:18
von remi_meier
So könntest du die Übergabe einer Liste machen:

Code: Alles auswählen

Macro GetListPtr(ptrname, listname)
  MOV Eax, t_#listname
  MOV [p_#ptrname], Eax
EndMacro

Interface test
  getlist(a.l, *p)
EndInterface

Structure ctest
  *vt
  *getlist
EndStructure

Procedure test_getlist(*this.ctest, a.l, list.l())
  Debug "a ist " + Str(a)
  
  ForEach list()
    Debug "element enthält: " + Str(list())
  Next
EndProcedure


Define.test a
Define.ctest b
b\vt = @b+4
b\getlist = @test_getlist()
a = @b
;- end init

NewList k.l()
AddElement(k())
k() = 1
AddElement(k())
k() = 2
AddElement(k())
k() = 3
AddElement(k())
k() = 4
AddElement(k())
k() = 5

*p
GetListPtr(p, k)
a\getlist(666, *p)
D. h. vergiss es.

Mach deine Methode so, dass sie einen Pointer auf ein Element erwartet.
So kannst du deine Liste Element für Element durchgehen (und jedes
Element der Interface-Methode übergeben).

Viel Spass :allright: