Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 16:53 Titel: Array über Constructor definieren |
|
|
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?  |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 31.01.2012, 17:03 Titel: |
|
|
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 17:06 Titel: |
|
|
Wie meinst du das? Ein Array in einer For-Schleife definieren ist irgendwie unsinning.  |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 31.01.2012, 17:06 Titel: |
|
|
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 |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 31.01.2012, 17:08 Titel: |
|
|
Westbeam hat Folgendes geschrieben: | Wie meinst du das? Ein Array in einer For-Schleife definieren ist irgendwie unsinning.  |
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 17:08 Titel: |
|
|
Hm, aber ich kann ja das Array nicht ohne den Constructor definieren.  |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 31.01.2012, 17:09 Titel: |
|
|
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 17:10 Titel: |
|
|
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 |
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 31.01.2012, 17:11 Titel: |
|
|
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 |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 31.01.2012, 17:12 Titel: |
|
|
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 17:14 Titel: |
|
|
Oh, du hast Recht. Danke.  |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 31.01.2012, 17:16 Titel: |
|
|
Kein Problem
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 |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 31.01.2012, 18:32 Titel: |
|
|
So habe ich es auch gemacht.  |
|
Nach oben |
|
 |
|