Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Array anstat mit Nr. mit Worten

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muecke
Gast





BeitragVerfasst am: 17.01.2014, 12:07    Titel: Array anstat mit Nr. mit Worten Antworten mit Zitat

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 lächeln 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

BeitragVerfasst am: 17.01.2014, 13:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 17.01.2014, 13:16    Titel: Antworten mit Zitat

Hmm das muss ich mir mal genauer anschauen, mit Type habe ich noch nie gearbeitet, sieht jedoch schon sehr gut aus lächeln

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

BeitragVerfasst am: 17.01.2014, 13:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muecke
Gast





BeitragVerfasst am: 17.01.2014, 13:42    Titel: Antworten mit Zitat

habe etwas Literatur gefunden. lächeln die ich auch nicht so richtig verstanden habe traurig
daher habe ich es getestet lächeln

das ist die Literatur ganz unten: HIER

ich habe mal ein Kleines Beispiel mir gebaut, und es geht lächeln
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 lächeln 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 lächeln

DANKE
Nach oben
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.01.2014, 16:23    Titel: Antworten mit Zitat

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, 16:35, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Muecke
Gast





BeitragVerfasst am: 17.01.2014, 16:27    Titel: Antworten mit Zitat

Habe gerade gesehen das du deinen Beitrag erweitert hast lächeln

das mit dem Array ist eine echt gute Sache lächeln

habe da meine Button die ich auf den Monitor zeichne in so eins rein geschrieben lächeln
Jetzt kann ich die Daten abfragen um es auf den Monitor zu zeichnen und ich kann mit dem Selben Array auch die Mausabfrage machen lächeln das ist genial.

DANKE

du hast mir richtig Arbeit erspart bzw. mein Programm einen Neuen Lug (Code) gegeben lächeln

DANKE


ps. schade das es hier im Forum so einen Danke sagen Button nicht gibt.
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz