Forum: PC-Programmierung Problem mit Programmzeile in VB 2010


von Christoph (Gast)


Lesenswert?

Hallo,

ich hab ein Problem mit einer Programmzeile in VB 2010, ich will mit 
einer Schleife mehrere Variablen beschreiben, was ist an dieser 
Programmzeile falsch?

For i = 0 To 15
DirectCast(Controls("DI" & CStr(i)),Label) = True
Next

Was mache ich da Falsch?

von Arc N. (arc)


Lesenswert?

Christoph schrieb:
> Hallo,
>
> ich hab ein Problem mit einer Programmzeile in VB 2010, ich will mit
> einer Schleife mehrere Variablen beschreiben, was ist an dieser
> Programmzeile falsch?
>
> For i = 0 To 15
> DirectCast(Controls("DI" & CStr(i)),Label) = True
> Next
>
> Was mache ich da Falsch?

Controls = Form.Controls? Dann liefert DirectCast zwar ein als Label 
gecastetes Control, das ist aber kein bool... Was soll denn an dem Label 
geändert werden? Text, Enabled, Visible, etc?

von Christoph (Gast)


Lesenswert?

Es handelt sich um eine Boolean Variable die auf True gesetzt werden 
soll.

Es kommt immer der Fehler:
Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung 
verwendet werden.

von Robert L. (lrlr)


Lesenswert?

wie acr net schon schreib

DirectCast(Controls("DI" & CStr(i)),Label).Visible = True

oder so ähnlich??

von Christoph (Gast)


Lesenswert?

mit .Visible = True geht nicht, ich will ja den Wert von der Boolean 
Variable ändern...

von Robert L. (lrlr)


Lesenswert?

>von der Boolean
>Variable

von welcher?
wo soll die sein?
was soll die machen?

du hast einfach keine...


du hast ein CONTROL (welches du anhand seines Namen ermittelst) (dann 
cast auf ein Label)

so schauts zumindest aus (ich hab keine ahnung von VB)

ich glaub dass dein Problem wo anders ist
du brauchst in Wirklichkeit vermutlich nur ein "array of Boolean"

von Christoph (Gast)


Lesenswert?

Ich habe 16 Boolean Variablen, die ich brauche.

DI1 bis DI 16

Im Ablauf sollen die nach der Reihe auf True oder auf False gesetzt 
werden.

und das möchte ich so wie oben geschreiben machen...

von Arc N. (arc)


Lesenswert?

Christoph schrieb:
> mit .Visible = True geht nicht, ich will ja den Wert von der Boolean
> Variable ändern...

Dann Reflection
1
dim fi as FieldInfo
2
fi = GetType().GetField("VariableName", BindingFlags.NonPublic or BindingFlags.Instance);
3
fi.SetValue(Me, True);

http://msdn.microsoft.com/de-de/library/53seyfee.aspx
http://msdn.microsoft.com/de-de/library/system.reflection.fieldinfo.aspx

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Christoph schrieb:
> Ich habe 16 Boolean Variablen, die ich brauche.
>
> DI1 bis DI 16

Eine einfache Lösung wäre ein Array.

von Christoph (Gast)


Lesenswert?

Mit einer Array kann ich das nicht machen.

Ich habe eine Prozess der läuft 16 mal durch (i von 1 bis 16...)

bei jedem Durchlauf soll die dazugehörige Boolean Variable True oder 
False werden

deshalb hab ich die Variable auch von DI1 bis DI16 benannt.

Im Programmablauf hab ich die Variable i die auch von 1 bis 16 zählt 
diese muss nur als Variable in den Variablenname eingesetzt werden.


wie mach ich das?

von Peter II (Gast)


Lesenswert?

Christoph schrieb:
> bei jedem Durchlauf soll die dazugehörige Boolean Variable True oder
> False werden

und warum sollte das mit einem array nicht gehen?

von Christoph (Gast)


Lesenswert?

Weil ich im weiteren Progammablauf wo diese Variablen wieder verwendet 
werden kein Array gebrauchen kann...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Christoph schrieb:
> Weil ich im weiteren Progammablauf wo diese Variablen wieder verwendet
> werden kein Array gebrauchen kann...

Begründe das doch mal, ich vermute, daß da Deinerseits ein 
Verständnisproblem vorliegt.

von Christoph (Gast)


Lesenswert?

Sagen wir so es würde mit einem Array auch gehn nur würde ich es lieber 
mit einzelnen Variablen machen.

Würde mein Problem mit einem Array einfacher zu lösen sein?

Wenn ja sag mir bitte wie ich das mache, dann verwende ich ein Array, 
ist zwar etwas Arbeit den rest umzustellen aber wenn es anders nicht 
geht...

von Robert L. (lrlr)


Lesenswert?

>Weil ich im weiteren Progammablauf wo diese Variablen wieder verwendet
>werden kein Array gebrauchen kann...

natürlich kannst du das

DI[1]

anstelle von DI1

von Peter II (Gast)


Lesenswert?

Christoph schrieb:
> Würde mein Problem mit einem Array einfacher zu lösen sein?

ja


For i = 0 To 15
   DI[i] = false;
Next

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.