[erledigt] DIM Felder

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

CarpeDingsbums

Betreff: [erledigt] DIM Felder

BeitragDi, Dez 26, 2006 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen

Ich hät da ein Problem...
ich habe ein DIM Feld Deklariert, kriege es aber nicht in den Unterprogrammen aufgerufen ...
wie kann ich das ändern ??

hauptprogramm:
include "unterprogramm.bb"
Dim Objects (7,200,30)

unterprogramm:
Function testobject()
Return Objects(0,0,1)
End Function

allein dieses meckert mir der Kompiler schon an - versteh ich nicht.
In der Hilfe stand doch, dim felder wären automatisch global

und dazu direkt noch was :
wie groß ist ein Dim feld, oder Array, welches ich mit 3 Deklariere ??
global array[3]
array[0]
array[1]
array[2]
array[3] ????

hoffe auf schnelle Hilfe, weil habe mein Projekt jetzt diesmal nicht auf Type Felder aufgesetzt, sondern auf DIMs - wär ne echte Katastrophe,
wenn dat nun nicht geht!

Frohe Weihnachten,
David
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst
  • Zuletzt bearbeitet von CarpeDingsbums am Di, Dez 26, 2006 16:06, insgesamt einmal bearbeitet

pixelshooter

BeitragDi, Dez 26, 2006 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
du deklarierst das array, NACHDEM du das unterprogramm aufrufst!
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc
 

CarpeDingsbums

Betreff: ???

BeitragDi, Dez 26, 2006 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry verstehe nicht ganz was Du damit meinst.

Das DIM Feld habe ich in der ersten Zeile meines Hauptprogrammes definiert mit
Dim Objects (7,200,30)

irgendwo in nem Unterprogramm verwende ich es dann,
und er sagt mir "function not found", da er es auf einmal wegen der
klammern für ne Funktion hält, die er aber nirgends findet.

Rufe ich es im Hauptprogramm selbst auf, klappt et problemlos

(mit eckigen Klammern klappt et leider auch nicht, also Objects [0,0,0] = ...)

kann da jemand helfen ?

Mfg,
David
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst

ToeB

BeitragDi, Dez 26, 2006 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

;Haubtprogramm
Dim Object(7,200,8)
Include "Unterprogramm.bb"


;Unterprogramm
Function tesObject()
Return Object(1,112,4)
End Function


Iss aussem Kopf müsste aba Funtzen...
 

CarpeDingsbums

BeitragDi, Dez 26, 2006 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hauptprogramm:

Dim Objects (MAXPLAYERS,MAXOBJECTS,30)

Function GetObjects (x,y,z)
Return Objects(x,y,z)
End Function

Function SetObjects (x,y,z,var)
Objects(x,y,z) = var
End Function

Beispielaufruf im Unterprogramm:
print GetObjects(0,0,1)

<<<<
Das ist die Krücke die ich mir gebastelt hatte,
die auch funzt - aber : Ich finde das relativ unbefriedigend,
muss ich gestehen.

Deine Lösung ging auch in die Richtung, wenn ich sie richtig verstanden habe.

Mache dass jetzt erstma so, um weiter arbeiten zu können,
die guten alten Getter&Setter kennen wir ja aussa Objektorientierung...

Wäre aber über nen Tipp, wie man es wie im ersten Post erwähnt machen könnte, relativ dankbar!

Mfg,
David
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst

BladeRunner

Moderator

BeitragDi, Dez 26, 2006 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich solltest Du ohne Probleme und ohne spezielle Funktionen in deinem Include auf das Array zugreifen können - solange Du das Array vorher deklariert hast. (in deinem ersten Posgt rufst Du erst die Include auf und deklarierst dann das Array, das geht nicht).

Ein array ist immer bei Null beginnend, also ist dim a(3) 4 Felder groß. Das hättest Du aber mit einem simplen Test selbst rausfinden können.
Falls Du sie noch nicht hast empfehle ich dir die Deutsche Onlinehilfe, dort wird vieles erklärt.

~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.


Sind eher Beginnerfragen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CarpeDingsbums

BeitragDi, Dez 26, 2006 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank !!!

Ich wusste nur nicht, dass man diese Deklaration VOR dem Include machen muss ... dachte das wäre egal!

Aber zu der Sache mit dem Array :
Das ist in jeder Programmiersprache anders:
Bei Blitz habe ich es getestet - und festgestellt, dass ich munter über die Begrenzungen des Arrays hinaus schreiben und lesen kann:

Code: [AUSKLAPPEN]
global test[3]
for i = 0 to 10
test[i] = i
print test[i]
next ;i


läuft wunderbar! (Nicht nachmachen, leute ^^)

daher konnte ich dass also so nicht herausfinden.

Dass Arrays nullbasiert sind ,ist mir durchaus bewusst.
Allerdings wusst ich nicht, ob die Deklarationszahl (hier 3) auch
die Nummer des höchsten Elementes ist - also ob test[3] in diesem Fall schon zu hoch ist, oder nicht.

Aber dass Du diese Frage in den Beginner Thread stellst,
akzeptiere ich mal Very Happy
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst

BladeRunner

Moderator

BeitragDi, Dez 26, 2006 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm... bei mir gibt er einen 'Blitz array subscript out of range' error aus wenn ich versuche ausserhalb zuzugreifen, beziehungsweise einen Index out of Bounds. Du solltest mal den Debugger einschalten Wink.
Abgesehen davon wäre es ein Fehler Blitzarrays und Dims miteinander zu verwechseln.
Ich kann Dir nur nochmal die OH ans Herz legen.

Was die Anzahl an Elementen angeht, so weiss ich durchaus was Du meinst- man verzeihe mir die missverständliche Formulierung. Wie gesagt, Blitz beginnt bei 0 bis hin zum Index, und somit sind die Dims ein Element größer als indiziert.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CarpeDingsbums

Betreff: danke

BeitragDi, Dez 26, 2006 16:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ok dann weiss ich ja jetzt bescheid,
vielen Dank noch mal,
hab den Thread dann jetzt mal als erledigt markiert

Mfg,
David
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group