Steuerbefehle für übergebene Listen in Prozeduren

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Steuerbefehle für übergebene Listen in Prozeduren

Beitrag 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.
Benutzeravatar
TroaX
Beiträge: 684
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Steuerbefehle für übergebene Listen in Prozeduren

Beitrag 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.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: Fritz.Box 5690 Pro (Nur für Keepass-DB)
Coding: Purebasic, Spiderbasic, GDevelop, Javascript/Node
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Steuerbefehle für übergebene Listen in Prozeduren

Beitrag von NicTheQuick »

Gegenfrage: Was stört dich an dem Makro genau?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Steuerbefehle für übergebene Listen in Prozeduren

Beitrag 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()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten