[4.61] Liste als Parameter bei Definition nicht lokal

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

[4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von Josef Sniatecki »

Der Compiler meckert, obwohl es nichts zu meckern gibt:

Code: Alles auswählen

Global Dim Bar.i(0)

Procedure.i Foo(List Bar.i())
  ;...
EndProcedure
Der ungewünschte Fehler:

Code: Alles auswählen

Invalid name: same as an array
Mich wundert es, dass dieser Bug scheinbar noch nicht gefunden wurde, wenn doch, so ist es mir... äußerst peinlich :mrgreen:

Gruß Josef
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Andreas21
Beiträge: 390
Registriert: 30.08.2004 09:05
Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64
Wohnort: Heidelberg

Re: [4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von Andreas21 »

Das kann daran liegen das Arrayers nicht mit list übergeben werden sonder mit Array.

Info aus der PB Hilfe:

..... Es ist auch möglich, mit dem Array-Schlüsselwort ein Array als Parameter an eine Prozedur zu übergeben - es wird dabei "by reference" (was bedeutet, dass das Array nicht kopiert wird, sondern stattdessen die Funktionen in der Prozedur das originale Array manipulieren) übergeben. ......

Code: Alles auswählen

Procedure fill(Array A.l(1), length)  ; die 1 gibt hier die Anzahl der Dimensionen im Array an.
    For i = 0 To length
      A(i) = i
    Next i
  EndProcedure
  
  Dim A.l(10)
  fill(A(), 10)  ; das Array A() wird hier als Parameter übergeben
  
  Debug A(5)
  Debug A(10)
Und wenn du es Global hast brauchst du es nicht übergeben da du es ja benutzen kannst in der Procedure.
Es ist ja Global.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
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: [4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von ts-soft »

Andreas21 hat geschrieben:Und wenn du es Global hast brauchst du es nicht übergeben da du es ja benutzen kannst in der Procedure.
Es ist ja Global.
Du übersiehst dabei aber, das die übergebene Variable und die globale nicht identisch sind. Die übergebene Variable ist
eine geschützte (protected) lokale Variable, die nur in der Procedure gültig ist und keinen Einfluss auf gleichnamige
globale Variable hat.

@Josef Sniatecki
Kann man als Bug sehen oder als nicht dokumentiertes nicht unterstütztes verhalten, was ja auch ein Bug ist :mrgreen:

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
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: [4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von STARGÅTE »

@Andreas21

Er wollte ja gerade beweisen, dass es nichts zu meckern gibt, weil der Parameter und die Globale Definition nix gemeinsam haben.

Richtig arbeitet tu das Protected aber:

Code: Alles auswählen

Global Dim A.i(10)

Procedure.i Foo(Array A.i(1))
	A(5) = 5
EndProcedure

Global Dim B.i(10)

Foo(B())

Debug B(5)
Debug A(5)
scheint also nur eine Fehlerhafte Fehlermeldung zu sein.
Zuletzt geändert von STARGÅTE am 14.01.2012 16:21, insgesamt 1-mal geändert.
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
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: [4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von ts-soft »

@STARGÅTE
In Deiner Procedure fehlt die Dimensionsangabe oder ist das Absicht?
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
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: [4.61] Liste als Parameter bei Definition nicht lokal

Beitrag von STARGÅTE »

Komisch beim kopieren war sie eigentlich da :lol: , habs editiert.
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