Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Initialisierung, was wie?

5 views
Skip to first unread message

Anselm

unread,
Jan 24, 2012, 11:30:55 AM1/24/12
to
Hallo,
Bin eher Hobbyprogrammierer und benütze derzeit die VB.NET 2008
Express
Edition. Leider krieg ich Initialisierungen nicht richtig hin;
vielleicht
sind die in der Version 2008 kniffliger als in der 2005-er, in der vor
wenigen Jahren einiges auf die Beine gebracht habe.
Habe eine Form mit einer Listbox. Diese will ich mit bestimmten Daten
(Kalender-Daten) füllen; das würde auch funktionieren. Aber ich will
diese
jedes Mal in einer – tja – Variable speichern. Das gelingt mir nicht.
Genauer gesagt, habe ich eine Structure definiert (mit der Absicht, so
was,
wie [viel] früher „Type“ zu verwenden), die dann im weiteren
Programmverlauf
verschiedentlich Verwendung finden soll.
Structure Tageseintrag
Public tDatum As Date
Public Zuweisung(,) As Boolean

End Structure

..., und ein
Public eTag(70) As Tageseintrag

Button5 sollte den erwähnten Vorgang auslösen
Public Sub Button5_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button5.Click
Dim xTag As Date
xTag = Now.AddDays(30)
xTag = New Date(Year(xTag), Month(xTag), 1)
xTag = xTag.AddDays(-1)
Dim z As Integer = 0
For x = 1 To 96
xTag = xTag.AddDays(1)
If Weekday(xTag) = 1 Or (Weekday(xTag) = 7 And xTag.Day <
8)
Then
eTag(z).tDatum = xTag
z = z + 1
ListBox1.Items.Add(Format(xTag, "dd.MM.yyyy, dddd"))
End If
Next
End Sub
Der Erfolg scheitert leider an der Zeile:
eTag(z).tDatum = xTag
Wenn ich die ausblende füllt sich die Listbox1 brav. Ich möchte aber
den
eTag(z).tDatum füllen!!
Tja, wohl Anfänger-Problem. Irgendwas mach ich falsch; aber was?
Anselm

Wolfgang Badura

unread,
Jan 25, 2012, 4:04:10 AM1/25/12
to
Hallo Anselm!
"Anselm" <ett...@gmail.com> schrieb im Newsbeitrag
news:01526129-33f3-4e54...@s7g2000vby.googlegroups.com...

> Der Erfolg scheitert leider an der Zeile:

Kannst Du Sagen, was scheitert?
Gibt es einen Fehler? Welchen?

> xTag = Now.AddDays(30)
> xTag = New Date(Year(xTag), Month(xTag), 1)

Das 1. Stmt ist wohl überflüssig.

> Structure Tageseintrag
> Public tDatum As Date
> Public Zuweisung(,) As Boolean
> …
> End Structure

IIRC, daß, wenn eine Tabelle (zunächst ohne Dimensionierung)
innerhalb einer Struktur definiert wird, diese zu initialisieren ist.
Ein Beispiel:

9 Public Structure component
10
11 Public ControlNode(,) As Int16
12
13 Public Sub Initialize()
14 ReDim ControlNode(20, 1)
15 ControlNode.Initialize()
16 End Sub
17 End Structure

Damit kannst Du ev. weitersuchen.

Wolfgang


Anselm

unread,
Jan 25, 2012, 6:41:58 AM1/25/12
to
On 25 ene, 10:04, "Wolfgang Badura" <WolfgangBad...@aon.at> wrote:

Hallo Wolfgang!

Vielen Dank für Deine Antwort! Leider habe ich nur selten Zugang zum
Internet, und nicht an dem Computer, an dem ich programmieren kann.

> Gibt es einen Fehler? Welchen?
hier
eTag(z).tDatum = xTag
bleibt es immer stehen. Mein Computer ist nicht deutsch; daher kommen
die Meldungen nicht auf deutsch; soweit ich mich im Moment erinnere,
heißt es immer, es gebe hier eine Ausnahme, die nicht programmiert
ist, und es drehe sich um ein Problem mit der Initialisierung.
Wenn es aber überhaupt zur Notwendigkeit der Programmierung einer
Ausnahme kommt, heißt das, daß irgendwas nicht richtig läuft. Ich will
keine Ausnahme programmieren, sondern möchte die Struktur richtig
initialisieren, wie mir das vor Jahren geglückt ist, als ich ein für
meine Begriffe relativ großes Programm geschrieben habe.

> >        xTag = Now.AddDays(30)
> >        xTag = New Date(Year(xTag), Month(xTag), 1)
Diese Sache läuft richtig. Ich benütze sie, um die Tage zu eruieren,
die ich brauche.

> IIRC, daß, wenn eine Tabelle (zunächst ohne Dimensionierung)
> innerhalb einer Struktur definiert wird, diese zu initialisieren ist.
Ich vermute, es ist so, wie Du Dich erinnerst. Das Beispiel, das Du
mir schreibst, will ich mir nun mal zu Gemüte führen. Sicherlich liegt
es eben an dieser Sache.

> Ein Beispiel:
>
> 9        Public Structure component
> 10
> 11            Public ControlNode(,) As Int16
> 12
> 13            Public Sub Initialize()
> 14                ReDim ControlNode(20, 1)
> 15                ControlNode.Initialize()
> 16            End Sub
> 17        End Structure
>
> Damit kannst Du ev. weitersuchen.

Vielen Dank für das Beispiel. Ich melde mich dann.
Anselm

Wolfgang Badura

unread,
Jan 25, 2012, 8:28:59 AM1/25/12
to
Hallo Anselm!
"Anselm" <ett...@gmail.com> schrieb im Newsbeitrag
news:8c6edd13-04b8-4bf6...@t2g2000yqk.googlegroups.com...
On 25 ene, 10:04, "Wolfgang Badura" <WolfgangBad...@aon.at> wrote:

> > xTag = Now.AddDays(30)
> > xTag = New Date(Year(xTag), Month(xTag), 1)
Diese Sache läuft richtig. Ich benütze sie, um die Tage zu eruieren,
die ich brauche.

Da habe ich
Year(xTag), Month(xTag)
übersehen in dem ja die Initialisierung von xTag mit dem Tagesdatum + 30
Tage verwendet wird.
Entschuldige.

Wolfgang


Anselm

unread,
Jan 26, 2012, 4:27:32 AM1/26/12
to
On 25 Jan., 14:28, "Wolfgang Badura" <WolfgangBad...@aon.at> wrote:

Hallo Wolfgang,
ich stecke immer noch in der gleichen Schwierigkeit! Hier eine
verkleinerte Version, um das gleiche Problem einfacher zu zeigen:
Structure Tage
Public tName As String
Public tDate As Date
End Structure
Public Class Form1
Private xT() As Tage
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
xT(0).tName = "erster Tage "
xT(0).tDate = New Date(1976, 4, 15)
xT(1).tName = "zweiter Tage "
xT(1).tDate = New Date(2012, 1, 25)
Label1.Text = xT(0).tName & xT(0).tDate.ToString _
& vbCrLf & xT(1).tName & xT(1).tDate.ToString
End Sub
End Class

Eine Form, einen Button drauf und einen Label. Die Sache funktioniert
nicht. Woran scheitert es? Wie muß man es anstellen, um (in diesem
Fall) xT... benützen zu können?
Und damit nicht genug! xT muß auch „so“ public sein, daß ich von
anderen Prozeduren auch darauf zugreifen kann. Ich habe es in diesem
Fall als „Private“ deklariert, da „Public“ schon bei der Eingabe
unterstrichen wird. Auch „Dim“ wurde akzeptiert, aber ich weiß nicht,
wie weit da die Gültigkeit der Variable ist.

Vielen Dank im Voraus,
Anselm

Wolfgang Badura

unread,
Jan 26, 2012, 6:30:20 AM1/26/12
to
Hallo Anselm!
"Anselm" <ett...@gmail.com> schrieb im Newsbeitrag
news:958fdbb3-a3de-48eb...@w5g2000yqn.googlegroups.com...
------ schnapp

Ich bin heute ziemlich ausgelastet, aber ich werde mir das ansehen.

Wolfgang


Wolfgang Badura

unread,
Jan 26, 2012, 6:48:24 AM1/26/12
to
Hallo Anselm!
"Anselm" <ett...@gmail.com> schrieb im Newsbeitrag
news:958fdbb3-a3de-48eb...@w5g2000yqn.googlegroups.com...
On 25 Jan., 14:28, "Wolfgang Badura" <WolfgangBad...@aon.at> wrote:

Das Problem war rasch gelöst:

' Damit xT in Class Form1 öffentlich ist,
' muß die Structure außerhalb und Public deklariert werden
Public Structure Tage
Public tName As String
Public tDate As Date
End Structure

Public Class Form1
' oder hier dimensionieren, dann entfällt in Button1_Click_1 die
Redimensionierung
Public xT() As Tage
' ohne eins von beiden gehts nicht

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
ReDim xT(1)
xT(0).tName = "erster Tag "
xT(0).tDate = New Date(1976, 4, 15)
xT(1).tName = "zweiter Tag "
xT(1).tDate = New Date(2012, 1, 25)
Label1.Text = xT(0).tName & xT(0).tDate.ToString _
& vbCrLf & xT(1).tName & xT(1).tDate.ToString
End Sub
End Class

Wolfgang


Anselm

unread,
Jan 28, 2012, 6:55:16 AM1/28/12
to
On 26 jan, 11:48, "Wolfgang Badura" <WolfgangBad...@aon.at> wrote:
> Hallo Anselm!
> Das Problem war rasch gelöst:
>
> ' Damit xT in Class Form1 öffentlich ist,
> ' muß die Structure außerhalb und Public deklariert werden
...

Hallo Wolfgang,
vielen Dank fuer die Antwort! Habe leider gut eine Woche lang nun
keine Gelegenheit es auszuprobieren, da ich nicht an dem Ort bin, wo
mein Computer ist. Gestern ist mir eine Installation der Express
Edition auf einem hiesigen Computer staendig missglueckt.
Werde mich aber in gut einer Woche melden, in der Hoffnung, mein
Problem dann - dank Deiner Hilfe - loesen zu koennen.
Bis dahin!
Viele Gruesse,
Anselm

Anselm

unread,
Feb 8, 2012, 12:02:29 PM2/8/12
to
Hallo Wolfgang,
ich weiß nicht, ob Du den Thread noch verfolgst, auf jeden Fall vielen
Dank nochmals für den Tip. Es hat nun alles geklappt! Das ReDim habe
ich noch etliche Male in meinem Projekt für andere Variablen anwenden
müssen.

Gruß Anselm

Wolfgang Badura

unread,
Feb 9, 2012, 3:30:27 AM2/9/12
to
Hallo Anselm!
"Anselm" <ett...@gmail.com> schrieb im Newsbeitrag
news:db3a7b53-3ba5-4c97...@v2g2000vbx.googlegroups.com...

> Dank nochmals für den Tip. Es hat nun alles geklappt!

Das freut mich auch.

Wolfgang


0 new messages