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 über Constructor definieren

 
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
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 16:53    Titel: Array über Constructor definieren Antworten mit Zitat

Hi, ich möchte gerne ein Array einer bestimmten Klasse über einen Constructor definieren, welche ich erstellt habe. Dazu habe ich folgenden Code geschrieben:
Code:
Type Test
   As String bla
   Declare Constructor (bla As String)
End Type

Constructor Test(bla As String)
   This.bla=bla
End Constructor

Dim Shared As Test Array(255)=Test("hi")

Ich bekomme aber folgenden Fehler dabei:
Zitat:
error 60: Expected '{', found 'Test' in 'Dim Shared As Test Array(255)=Test("hi")'

Aber wieso? Kann mir jemand sagen, wie ich es korrekt mache? lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 31.01.2012, 17:03    Titel: Antworten mit Zitat

Du versuchst, einem Array von Objekten ein einzelnes Objekt zuzuweisen.
Falls du alle Elemente des Arrays mit dem gleichen Objekt füllen möchtest, wirst du um "for" nicht herumkommen. Falls du jedes Element mit einem individuellen Objekt besetzen möchtest, siehe hier. Deshalb erwartet er auch die geschweiften Klammern.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak


Zuletzt bearbeitet von darkinsanity am 31.01.2012, 17:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 17:06    Titel: Antworten mit Zitat

Wie meinst du das? Ein Array in einer For-Schleife definieren ist irgendwie unsinning. verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 31.01.2012, 17:06    Titel: Antworten mit Zitat

Bei deinem Array hast du ja 256 Elemente, die du alle einzeln definieren müsstest:
Code:
Dim Shared As Test Array(255) = {Test("hi"), Test("hi"), Test("hi"), Test("hi"), [...]}

(wenn das so überhaupt zulässig ist, bin nicht völlig sicher). Da würde ich mir mit einer Schleife behelfen:
Code:
Dim Shared As Test Array(255)
For i As Integer = 0 To 255
  Array(i) = Test("hi")
Next

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 31.01.2012, 17:08    Titel: Antworten mit Zitat

Westbeam hat Folgendes geschrieben:
Wie meinst du das? Ein Array in einer For-Schleife definieren ist irgendwie unsinning. verwundert

Ich sagte nicht, dass du es dort definieren sollst. Du musst es in einer for-Schleife füllen oder die Variante mit geschweiften Klammern nehmen.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 17:08    Titel: Antworten mit Zitat

Hm, aber ich kann ja das Array nicht ohne den Constructor definieren. verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 31.01.2012, 17:09    Titel: Antworten mit Zitat

Moment, wenn du ein statisches Array von Objekten erzeugst, wird der Konstruktor doch automatisch aufgerufen?
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 17:10    Titel: Antworten mit Zitat

Nein, probiere doch mal diesen Code aus:
Code:
Type Test
   As String bla
   Declare Constructor (bla As String)
End Type

Constructor Test(bla As String)
   This.bla=bla
End Constructor

Dim Shared As Test Array(255)
For i As Integer = 0 To 255
  Array(i) = Test("hi")
Next

zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 31.01.2012, 17:11    Titel: Antworten mit Zitat

Code:
Declare Constructor (bla As String = "")

und dasselbe in der Zeile CONSTRUCTOR Test
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 31.01.2012, 17:12    Titel: Antworten mit Zitat

Doch wird er:
Code:
Type Test
   As String bla
   Declare Constructor (bla As String)
   Declare Constructor ()
End Type

Constructor Test(bla As String)
   This.bla=bla
End Constructor

Constructor Test()
    print "test"
end constructor

dim shared as Test Array(20)
sleep


Du brauchst halt einen default constructor.
_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 17:14    Titel: Antworten mit Zitat

Oh, du hast Recht. Danke. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
darkinsanity
aka sts


Anmeldungsdatum: 01.11.2006
Beiträge: 456

BeitragVerfasst am: 31.01.2012, 17:16    Titel: Antworten mit Zitat

Kein Problem zwinkern

Bei deinem speziellen Problem würde ich auch einfach auf einen default-constructor setzen, also etwa so:
Code:
Type Test
   As String bla
   Declare Constructor (bla As String)
   Declare Constructor ()
End Type

Constructor Test(bla As String)
   This.bla=bla
End Constructor

Constructor Test()
    This.bla = "hi"
End Constructor

Dim Shared As Test Array(255)

_________________
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Westbeam



Anmeldungsdatum: 22.12.2009
Beiträge: 760

BeitragVerfasst am: 31.01.2012, 18:32    Titel: Antworten mit Zitat

So habe ich es auch gemacht. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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