Verständnisproblem Declare "Procedure(List)" [gelöst]

Für allgemeine Fragen zur Programmierung mit PureBasic.
MenschMarkus
Beiträge: 229
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Verständnisproblem Declare "Procedure(List)" [gelöst]

Beitrag von MenschMarkus »

Hallo zusammen,

versuche gerade aus einer Prozedur mit einer Linked List an eine weitere Prozedur diese Linked List zu übergeben. Leider muss die zweite aufrufende Prozedur vor der aufgerufenen liegen.
Das Problem ist, dass ich nicht weiss welchen Parameter ich bei der Deklaration angeben muss.

Code: Alles auswählen

Declare Prozedur2(List) ;funktioniert nicht
Declare Prozedur2(List LinkedList()) ;funktioniert auch nicht
Declare Prozedur2(LinkedList());was soll ich sagen, auch nicht...usw.
Declare Prozedur2(value.l) ;funktioniert ebenfalls nicht
Hat jemand eine Idee?

LG
menschmarkus
Zuletzt geändert von MenschMarkus am 19.08.2014 21:25, insgesamt 1-mal geändert.
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
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: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von NicTheQuick »

Also ich sehe hier kein Problem:

Code: Alles auswählen

Declare proc2(List liste.i())

Procedure proc1()
	Protected NewList liste.i()
	
	proc2(liste())
EndProcedure

Procedure proc2(List liste.i())
EndProcedure


proc1()
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von Nino »

MenschMarkus hat geschrieben:Das Problem ist, dass ich nicht weiss welchen Parameter ich bei der Deklaration angeben muss.
Alle.
Benutzeravatar
CodeCommander
Beiträge: 213
Registriert: 02.03.2014 16:06

Beitrag von CodeCommander »

Besser wäre es "eigentlich" wenn man nur den Prozedurennamen bei der Deklaration angibt
sonst gibt es Redundanz und man muss die Parameter zwei mal anpassen wenn man zb. einen neuen Parameter hinzufügt.
Hat das jemand schon mal im englischen Forum vorgeschlagen? Ich mag redundanten Code nicht. ;)
Zuletzt geändert von CodeCommander am 18.01.2015 14:28, insgesamt 1-mal geändert.
~ DELETE ~
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von Nino »

CodeCommander hat geschrieben:Besser wäre es "eigentlich" wenn man nur den Prozedurennamen bei der Deklaration angibt
Dann würden aber entscheidende Informationen fehlen.
Benutzeravatar
Tommy
Spassvogel
Beiträge: 319
Registriert: 17.10.2013 14:36

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von Tommy »

Hi CodeCommander :)
Du kannst es mit Macros lösen. Ist zwar nicht sauber bzw. nicht übersichtlich aber immerhin :

Code: Alles auswählen

Macro Proc_Params
Param1, Param2, Param3
EndMacro
Declare Proc (Proc_Params)
Proc (1, 2, 3)
Procedure Proc (Proc_Params)
ProcedureReturn
EndProcedure
Zuletzt geändert von Tommy am 27.01.2015 11:05, insgesamt 2-mal geändert.
PB 5.41 x64
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von X0r »

Besser wäre es "eigentlich" wenn man nur den Prozedurennamen bei der Deklaration angibt
Nein, gerade Parameternamen sind redundant. Für eine Funktionssignatur ist es eigentlich unerheblich, welche Namen sich der Programmierer zusammendenkt. Wichtig sind die Anzahl der Parameter sowie die jeweiligen Datentypen.
MenschMarkus
Beiträge: 229
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von MenschMarkus »

NicTheQuick hat geschrieben:Also ich sehe hier kein Problem:

Code: Alles auswählen

Declare proc2(List liste.i())

Procedure proc1()
	Protected NewList liste.i()
	
	proc2(liste())
EndProcedure

Procedure proc2(List liste.i())
EndProcedure


proc1()
Hallo Nic,
schön wär's wenns auch funktionieren würde. Ich erhalte die Fehlermeldung:

LinkedList stimmt nicht mit dem Prozedur-Parameter überein.

Hier mal der komplette Testcode:

Code: Alles auswählen

Structure   TestListe
    Wert1.s
    Wert2.s
    Wert3.s
EndStructure

Declare ListInProcedure(List Liste.l())


Procedure   MakeList()
    NewList  Liste.Testliste()
    AddElement(Liste())
    Liste()\Wert1 = "Wert1"
    Liste()\Wert2 = "Wert2"
    Liste()\Wert3 = "Wert3"

    FirstElement(Liste())
    Debug   "Prozedur 1:"
    Debug   Liste()\Wert1
    Debug   Liste()\Wert2
    Debug   Liste()\Wert3
    Debug   "Listenende"
    Debug   " "
    ListInProcedure(Liste())
    Debug   "Zurück in Prozedur 1!"
;    FirstElement(Liste())
    ForEach Liste()
        Debug   Liste()\Wert1
        Debug   Liste()\Wert2
        Debug   Liste()\Wert3
    Next            
    Debug   "Listenende"
    Debug   " "    
EndProcedure

Procedure   ListInProcedure(List GotListe())
    AddElement(GotListe())
    GotListe()\Wert1 = "Wert4"
    GotListe()\Wert2 = "Wert5"
    GotListe()\Wert3 = "Wert6"
    FirstElement(GotListe())
    Debug   "Innerhalb der Prozedur 2:"  ;Hier kann man natürlich ForEach einsetzen ;-)
    Debug   GotListe()\Wert1
    Debug   GotListe()\Wert2
    Debug   GotListe()\Wert3
    NextElement(GotListe())
    Debug   GotListe()\Wert1
    Debug   GotListe()\Wert2
    Debug   GotListe()\Wert3
    Debug   "Listenende"       
EndProcedure   
    
MakeList()
Wissen schadet nur dem, der es nicht hat !
Benutzeravatar
mk-soft
Beiträge: 3902
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: kleines Verständnisproblem Declare "Procedure(List)"

Beitrag von mk-soft »

Der Type der Liste muss mit angegeben werden...

Code: Alles auswählen

Structure   TestListe
    Wert1.s
    Wert2.s
    Wert3.s
EndStructure

Declare ListInProcedure(List GotListe.TestListe())


Procedure   MakeList()
    NewList  Liste.Testliste()
    AddElement(Liste())
    Liste()\Wert1 = "Wert1"
    Liste()\Wert2 = "Wert2"
    Liste()\Wert3 = "Wert3"

    FirstElement(Liste())
    Debug   "Prozedur 1:"
    Debug   Liste()\Wert1
    Debug   Liste()\Wert2
    Debug   Liste()\Wert3
    Debug   "Listenende"
    Debug   " "
    ListInProcedure(Liste())
    Debug   "Zurück in Prozedur 1!"
;    FirstElement(Liste())
    ForEach Liste()
        Debug   Liste()\Wert1
        Debug   Liste()\Wert2
        Debug   Liste()\Wert3
    Next            
    Debug   "Listenende"
    Debug   " "    
EndProcedure

Procedure   ListInProcedure(List GotListe.TestListe())
    AddElement(GotListe())
    GotListe()\Wert1 = "Wert4"
    GotListe()\Wert2 = "Wert5"
    GotListe()\Wert3 = "Wert6"
    FirstElement(GotListe())
    Debug   "Innerhalb der Prozedur 2:"  ;Hier kann man natürlich ForEach einsetzen ;-)
    Debug   GotListe()\Wert1
    Debug   GotListe()\Wert2
    Debug   GotListe()\Wert3
    NextElement(GotListe())
    Debug   GotListe()\Wert1
    Debug   GotListe()\Wert2
    Debug   GotListe()\Wert3
    Debug   "Listenende"       
EndProcedure   
    
MakeList()
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
MenschMarkus
Beiträge: 229
Registriert: 30.04.2009 21:21
Computerausstattung: i5-2300 (2.8 Ghz) Win10 -64bit / PB 5.73 LTS

Verständnisproblem Declare "Procedure(List)" [gelöst!]

Beitrag von MenschMarkus »

HA,

kaum macht man es richtig, funktioniert's :mrgreen:

Danke mk-soft :allright:

edit:
sollte man ggf. mit in die PB Hilfe aufnehmen !!
Wissen schadet nur dem, der es nicht hat !
Antworten