Prototype und Listen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
4Planes
Beiträge: 37
Registriert: 19.11.2020 17:08

Prototype und Listen

Beitrag von 4Planes »

Hallo,

ich versuche etwas umzusetzen, das in etwa diese Form hat:

Code: Alles auswählen

Prototype.i Proc( )
NewList Procs.Proc()

AddElement ( Procs.Proc() )
Procs.Proc() = @main()

ForEach Procs.Proc()
  
  Procs.Proc()
  
Next


Procedure main()
  
  MessageRequester ("", "works!" )
  
EndProcedure
Allerdings bekomme ich die Fehlermeldung:
Ein Prototype kann nicht mit einer Liste verwendet werden.
Jetzt ist meine Frage: Geht das grundsätzlich gar nicht oder habe ich es nur falsch angestellt?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Prototype und Listen

Beitrag von STARGÅTE »

Du musst das in eine Struktur einbetten.
Problem wäre sonst nämlich, dass Procs() (mit Klammern) ja für das Element der Liste verwendet wird, der Funktionsaufruft wäre dann irgendwie Procs()() oder so, was aber nicht gültig ist.

Code: Alles auswählen

Procedure main()
 
  MessageRequester ("", "works!" )
 
EndProcedure


Prototype.i Proc( )

Structure Struc
	Proc.Proc
EndStructure

NewList Procs.Struc()

AddElement ( Procs() )
Procs()\Proc = @main()

ForEach Procs.Proc()
 
  Procs()\Proc()
 
Next
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
Benutzeravatar
4Planes
Beiträge: 37
Registriert: 19.11.2020 17:08

Re: Prototype und Listen

Beitrag von 4Planes »

Vielen Dank für die schnelle Antwort und die elegante Lösung und die Korrektur meines Codes!
Funktioniert prima! :allright:
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Prototype und Listen

Beitrag von NicTheQuick »

Du musst übrigens auch nicht überall ".Proc" oder ".Struc" dahinter schreiben. Das reicht einmal am Anfang bei der Deklarierung/Definition. Das erspart auch jede Menge Tipparbeit. :allright:
Bild
Antworten