Seite 1 von 1

Steuerbefehle für übergebene Listen in Prozeduren

Verfasst: 28.05.2014 10:04
von Lebostein
Angenommen, ich möchte eine Funktion SecondElement(liste) schreiben (soll nur ein einfaches Beispiel sein). liste soll dabei eine beliebige Liste sein, ich will also nicht auf die Struktur eines Listenelementes zugreifen. Mit meinen Kenntnissen kriege ich das nur mit einem Macro hin

Code: Alles auswählen

Macro SecondElement(liste)

  FirstElement(liste)
  NextElement(liste)

EndMacro
Geht das auch mit einer Prozedur? Dort muss ich ja den Typ der Liste angeben, die ich an die Prozedur übergebe, obwohl ich in der Prozedur nur einfache Listen-Steuerbefehle (AddElement, NextElement, SwapElement usw.) verwenden möchte.

Re: Steuerbefehle für übergebene Listen in Prozeduren

Verfasst: 28.05.2014 11:11
von TroaX
Müsste eigentlich mit Pointer gehen. Beispiel habe ich gerade leider nicht parat. Bin unterwegs. Aber lese dich da mal ein. Das müsste gehen.

Re: Steuerbefehle für übergebene Listen in Prozeduren

Verfasst: 28.05.2014 11:17
von NicTheQuick
Gegenfrage: Was stört dich an dem Makro genau?

Re: Steuerbefehle für übergebene Listen in Prozeduren

Verfasst: 28.05.2014 12:14
von STARGÅTE
Vermutlich, dass man kein Rückgabewert nutzen kann.

Da Prozedurparameter von hinten nach vorne ausgeführt werden (zuminest nach aktuellen Stand), kann man sich folgendes Hilfs-Macro erstellen:

Code: Alles auswählen

Procedure SecondElement_P(*Pointer1, *Pointer2)
  ProcedureReturn *Pointer1 
EndProcedure

Macro SecondElement(ListName)
  SecondElement_P(NextElement(ListName), FirstElement(ListName))
EndMacro


NewList Test()
AddElement(Test()) : Test() = 1
AddElement(Test()) : Test() = 2
AddElement(Test()) : Test() = 3
AddElement(Test()) : Test() = 4

Debug PeekI(SecondElement(Test()))
Debug Test()