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?
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?
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.
wie acr net schon schreib DirectCast(Controls("DI" & CStr(i)),Label).Visible = True oder so ähnlich??
mit .Visible = True geht nicht, ich will ja den Wert von der Boolean Variable ändern...
>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"
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...
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
Christoph schrieb: > Ich habe 16 Boolean Variablen, die ich brauche. > > DI1 bis DI 16 Eine einfache Lösung wäre ein Array.
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?
Christoph schrieb: > bei jedem Durchlauf soll die dazugehörige Boolean Variable True oder > False werden und warum sollte das mit einem array nicht gehen?
Weil ich im weiteren Progammablauf wo diese Variablen wieder verwendet werden kein Array gebrauchen kann...
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.
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...
>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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.