Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Muecke Gast
|
Verfasst am: 17.01.2014, 13:07 Titel: Array anstat mit Nr. mit Worten |
|
|
Hallo miteinander
kann ich ein Array eigentlich auch anstatt mit Nr. mit Worten aufrufen?
so wird das ja normalerweise gemacht
Code: | Dim As Integer Monitor( 1 To 3) |
dann kann ich die so abfragen
Code: | Print Monitor(1)
Print Monitor(3) |
ich würde jedoch gerne das so gestalten:
Code: | Dim As Integer Monitor(Breite, Hoehe, Tiefe) |
um es dann so wider abzurufen
Code: | Print Monitor(Breite)
Print Monitor(Tiefe) |
ist so was Möglich? oder eher nicht?
im PHP habe ich so was schon gesehen jedoch nichts was auf darauf deutet das es unter FB auch machbar ist. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 17.01.2014, 14:10 Titel: |
|
|
Assoziative Arrays sind in FreeBasic (im Gegensatz zu PHP) nicht direkt möglich.
Allerdings ist für dein Beispiel ohnehin anstatt eines Arrays wohl ein Typ besser geeignet: Code: | type monitor
breite as integer
hoehe as integer
tiefe as integer
end type
dim mein_monitor as monitor
mein_monitor.breite = 100
print mein_monitor.breite
'...
|
Alternativ lassen sich natürlich auch einfach Konstanten bzw. lässt sich ein Enum für die Wörter "Breite", "Hoehe" und "Tiefe" anlegen, die dann jeweils einer bestimmten Zahl entsprechen. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 17.01.2014, 14:16 Titel: |
|
|
Hmm das muss ich mir mal genauer anschauen, mit Type habe ich noch nie gearbeitet, sieht jedoch schon sehr gut aus
wie ist das wenn das z.B. eine SUB mit geben möchte alle Werte die in Type Monitor stehen
übergebe ich dann nur Monitor
oder muss ich dann als Parameter jeden Einzel aufrufen
also mit Monitor.Breite, Monitor.Hoehe .... |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 17.01.2014, 14:24 Titel: |
|
|
Wenn du den ganzen Typ übergeben ist das genauso möglich, wie wenn du nur einzelne ausgewählte Werte übergeben willst.
Sobald man einen Typ definiert hat, kann man ihn ähnlich wie andere Datentypen (Integer, Double, ...) einsetzen.
Man muss genauso Variablen von diesem Typ anlegen. Also genauso wie du Integer nicht direkt verwenden kannst (im Sinn von z.B. "Integer = 3") kannst du auch den selber definierten Typen Monitor nicht direkt verwenden (z.B. "Monitor.Breite = 3"). Man muss zuerst eine Variable dieses Typs anlegen ("Dim m as Monitor" bzw. "Dim i as Integer") und kann dann diese Variable verwenden (z.B. "m.Breite = 1" bzw. "i = 3").
Also folgendes ist z.B. möglich mit obiger type definition: Code: | function berechneVolumen(m as Monitor) as Integer
return m.Breite * m.Tiefe * m.Hoehe
end function
dim dellmon as Monitor
dellmon.Breite = 200
dellmon.Hoehe = 100
dellmon.Tiefe = 20
print berechneVolumen(dellmon) |
Man kann übrigens auch Arrays von diesem Typen anlegen: Code: | dim monitorSammlung(0 to 10) as Monitor
monitorSammlung(0).Breite = 100
monitorSammlung(0).Hoehe = 100
monitorSammlung(0).Tiefe = 100
monitorSammlung(1) = dellmon
|
_________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 17.01.2014, 14:42 Titel: |
|
|
habe etwas Literatur gefunden. die ich auch nicht so richtig verstanden habe
daher habe ich es getestet
das ist die Literatur ganz unten: HIER
ich habe mal ein Kleines Beispiel mir gebaut, und es geht
das ist genial denn hier kann ich auch Strings mit Integer mischen und dennoch alles auf einmal übergeben dann werden die SUB Parameter nicht so lange und das Prog bleib Übersichtlicher.
DANKE.
das ist mein Code: Code: | Type T_Monitor '' Type Definiren
Breite As Integer '' Type zusatz definiren angabe was das ist Zahl / Text ....
Hoehe As integer '' Type zusatz definiren angabe was das ist Zahl / Text ....
Tiefe As Integer '' Type zusatz definiren angabe was das ist Zahl / Text ....
Text As String '' Type zusatz definiren angabe was das ist Zahl / Text ....
End type
Declare Sub Meine_SUB(Monitor As T_Monitor) '' Hier muss ich auch wider alle Variablen anlegen um alles vom Type duchgeben zu Können.
dim Monitor as T_Monitor '' Variablen einen Speicherplatz zuweisen
Monitor.Breite = 321
Monitor.Hoehe = 987
Monitor.Tiefe = 32
Monitor.Text = "Hallo das ist ein String !"
Print "-->> Nicht in der SUB <<--"
Print "Monitor.Breite = ";Monitor.Breite
Print "Monitor.Hoehe = ";Monitor.Hoehe
Print "Monitor.Tiefe = ";Monitor.Tiefe
Print "Monitor.Text = ";Monitor.Text
Print
Meine_SUB (Monitor) '' Sub aufrufen und alle Variablen inkl. Dekleration aus dem TYP T_Monitor übergeben
Sleep
End
Sub Meine_SUB(Monitor As T_Monitor)
Print "-->> Wir sind in der SUB <<--"
Print "Monitor.Breite = ";Monitor.Breite
Print "Monitor.Hoehe = ";Monitor.Hoehe
Print "Monitor.Tiefe = ";Monitor.Tiefe
Print "Monitor.Text = ";Monitor.Text
End Sub |
DANKE du hast mir genau den richtigen Tip gegeben das habe ich gesucht, jetzt schreibe ich mein Programm zwar wider neu, doch dann ist es vielleicht irgend wann mal Übersichtlich was ich da mache
DANKE |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 17.01.2014, 17:23 Titel: |
|
|
Ansonsten kann man auch assoziative Arrays bis zu einem gewissen Grad mit Konstanten faken, solange die "Worte" nicht variabel sein müssen (also im Code immer fest "Breite" stehen kann):
Code: |
#define Breite 1
#define Hoehe 2
#define Tiefe 3
Monitor(Breite) = 9001 ' äquivalent zu Monitor(1) = 9001
|
_________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Zuletzt bearbeitet von Jojo am 17.01.2014, 17:35, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Muecke Gast
|
Verfasst am: 17.01.2014, 17:27 Titel: |
|
|
Habe gerade gesehen das du deinen Beitrag erweitert hast
das mit dem Array ist eine echt gute Sache
habe da meine Button die ich auf den Monitor zeichne in so eins rein geschrieben
Jetzt kann ich die Daten abfragen um es auf den Monitor zu zeichnen und ich kann mit dem Selben Array auch die Mausabfrage machen das ist genial.
DANKE
du hast mir richtig Arbeit erspart bzw. mein Programm einen Neuen Lug (Code) gegeben
DANKE
ps. schade das es hier im Forum so einen Danke sagen Button nicht gibt. |
|
Nach oben |
|
|
|