list() ist keine Funktion, Makro..

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
PureSoft
Beiträge: 20
Registriert: 18.06.2008 11:08
Wohnort: Saarland
Kontaktdaten:

list() ist keine Funktion, Makro..

Beitrag von PureSoft »

Hey Leute

Lese mich grad wieder bisschen in PureBasic mithilfe ein paar Tutorials rein. Jedoch bekomme ich hier einen Fehler den ich irgendwie nicht aufgeklärt bekomme, vielleicht könnt ihr mir helfen..

Code: Alles auswählen

Structure playershot
  x.l
  y.l
  speedX.l
  speedY.l
EndStructure

NewList playershot.playershot()

Procedure AddPlayershot(x, y, speedX, speedY)
  AddElement(playershot())
  playershot()\x = x
  playershot()\y = y
  playershot()\speedX = speedX
  playershot()\speedY = speedY
EndProcedure
Das ist nur ein Ausschnitt. Wenn ich es jedenfalls starte kommt die Meldung

"playershot() ist keine Funktion, Array, Makro oder LinkedList"

Obwohl es eine LinkedList ist?
Projekte: -
Fortschritt: -
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von RSBasic »

Das liegt daran, dass deine List nur lokal vorhanden/verfügbar ist.
Entweder definierst du deine List als Global (Global NewList playershot.playershot()) oder du übergibst deine List an deine Prozedur.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: list() ist keine Funktion, Makro..

Beitrag von ts-soft »

Lokale Listen sind in der Procedure nicht bekannt!

Code: Alles auswählen

Global NewList playershot.playershot()
sollte helfen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureSoft
Beiträge: 20
Registriert: 18.06.2008 11:08
Wohnort: Saarland
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von PureSoft »

Vielen Dank für diese super tolle und schnelle Hilfe, der hammer :)
Projekte: -
Fortschritt: -
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von STARGÅTE »

Und das trotz alter Foren-Engine ^^
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
PureSoft
Beiträge: 20
Registriert: 18.06.2008 11:08
Wohnort: Saarland
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von PureSoft »

Hm hab jetz hinzugefügt das man die Feinde abschießen kann und sie somit gelöscht werden wenn die Verteidigung auf 0 ist.
Klappt auch bei einigen ganz gut, doch irgendwann crasht entweder der Compiler oder ungültiger Speicherzugriff kommt als Fehlermeldung in dieser Zeile

Code: Alles auswählen

If enemy()\armor < 1 
DeleteElement(enemy())
EndIf
Verstehe nicht, was daran falsch sein soll
Projekte: -
Fortschritt: -
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von RSBasic »

Versuch mal folgendes:

Code: Alles auswählen

DeleteElement(enemy(), 1)
PB-Hilfe hat geschrieben:Wenn dieser Parameter auf 1 gesetzt wird und dann das erste Element gelöscht wird, wird das zweite Element (dasjenige nach dem gelöschten Element) das neue aktuelle Element sein. Dieses Flag stellt sicher, dass nach dem Löschen immer ein gültiges aktuelles Element vorhanden ist, solange es noch Elemente in der Liste gibt.
Könnte vielleicht daran liegen, weil du kein aktuelles Element mehr hast.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: list() ist keine Funktion, Makro..

Beitrag von ts-soft »

Dann gibt es aber eine andere Fehlermeldung, nämlich: kein aktuelles Element.

Wie immer ist also ein ausführbarer Code, auf ein minumum reduziert, der das Problem aufzeigt, erforderlich.
Auch wenn der Fehler an der Stelle gemeldet wird, bedeutet dies nicht unbedingt, das dieser dort erzeugt wird.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
PureSoft
Beiträge: 20
Registriert: 18.06.2008 11:08
Wohnort: Saarland
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von PureSoft »

Denke das Problem mit dem Fehler hat sich durch das Flag erledigt, nur crasht der Compiler weiterhin nach ein paar Sekunden..
Soll ich mal den kompletten Code posten?
Projekte: -
Fortschritt: -
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: list() ist keine Funktion, Makro..

Beitrag von RSBasic »

Wenn es nicht viel Code ist, kannst du das machen, aber ansonsten versuch daraus einen kürzeren Beispielcode zu schreiben, dann können wir das Problem am leichtesten nachvollziehen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten