Aufruf Array funktioniert nicht

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Aufruf Array funktioniert nicht

Beitrag von dibro »

Hi,
ich hab mir neu PB4.0 gezogen und direkt ein Problem:

Code: Alles auswählen

Structure WkstDaten
Name.s
Dichte.f
SpezWid.f
SpezW.f
EndStructure


Dim Mat.WkstDaten(5)
;
Mat(0)\Name 		= "3020"  : Mat(0)\Dichte 	= 7.9 : Mat(0)\SpezWid = 1.04 : Mat(0)\SpezW 	= 0.5
;
;

; Aufruf in einer Procedur
.....
SetGadgetText(#String_Dichte,StrF(Mat.WkstDaten(GetGadgetState(#Combo_Wkst))\Dichte,3))
.....
Der Compiler meldet: Mat() is Not a function,array Or linked list

unter 3.94 läuft das. Ist das ein Bug oder nur eine neue Syntax
Gruß aus Solingen, PB 6.0 Win 10 Pro
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Global Dim ;-) Lies mal die Änderungen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Beitrag von dibro »

in welchen Änderungen?
In der Hilfe zu 4.0 steht
Arrays in PureBasic sind immer global verfügbar. Dies bedeutet, dass auf sie auch aus Prozeduren heraus zugegriffen werden kann, ohne die Befehle Global oder Shared aufrufen zu müssen.
Und in der Readme, die mit dem Download kommt heißt es
; Array
;
;

Dim Array.Point(10, 15)

Array(0,0)\x = 1
Array(1,0)\x = 2

Procedure TestIt(c.l, ParameterArray.Point(2))

ParameterArray(1, 2)\x = 3
ParameterArray(2, 2)\x = 4

EndProcedure

TestIt(10, array())

MessageRequester("Array", Str(array(1, 2)\x))
Nix Global Dim
Möglicherweise noch nicht korrigiert ?
Gruß aus Solingen, PB 6.0 Win 10 Pro
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Code: Alles auswählen

; Array
;
;

Global Dim Array.Point(10, 15)

Array(0,0)\x = 1
Array(1,0)\x = 2

Procedure TestIt(c.l, ParameterArray.Point(2))

ParameterArray(1, 2)\x = 3
ParameterArray(2, 2)\x = 4

EndProcedure

TestIt(10, array())

MessageRequester("Array", Str(array(1, 2)\x)) 
Doch global, funzt hier
Bild
Benutzeravatar
dibro
Beiträge: 143
Registriert: 11.03.2006 12:52
Computerausstattung: Win 10 64 bit
Wohnort: Solingen

Beitrag von dibro »

na klar funzt das, wenn man das weiß.
Aber bisher und auch noch in der Hilfe und Readme ist das Global nicht erforderlich. Umkehrschluss: Wenn Arrays nicht mehr global sind, müsste man sie auch in Proceduren lokal anlegen können, und das wäre neu.
Ist das beabsichtigt?
:cry:
Nachtrag:
Ich hab da was übersehen, das Array ist in dem Beispiel als Parameter an die Funktion übergeben worden, deshalb wohl Global hier nicht erforderlich, die Procedur lernt es ja erst durch die Übergabe kennen.
Dann ist nur der Hilfetext noch nicht up to date.
Mit Newlist scheint es so ähnlich zu sein.
Zuletzt geändert von dibro am 26.04.2006 19:31, insgesamt 1-mal geändert.
Gruß aus Solingen, PB 6.0 Win 10 Pro
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

dibro hat geschrieben:na klar funzt das, wenn man das weiß.
Aber bisher und auch noch in der Hilfe und Readme ist das Global nicht erforderlich. Umkehrschluss: Wenn Arrays nicht mehr global sind, müsste man sie auch in Proceduren lokal anlegen können, und das wäre neu.
Ist das beabsichtigt?
Das ist sogar sinn und zweck das ganzen

Gillt im übrigen auch für Linked Lists ...
Ich hab grad mal die Hilfe der PB 4.0 Beta 11 angeschaut, da steht es
unter Dim : ReDim richtig erklärt, solltest dir vielleicht mal die aktuellsten
Dateien besorgen :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

sollte ma endlich aufhören so schnell zu sein und erstmal den Code lesen
bevor ich ihn ausführe..
Bild
Gesperrt