Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Array per ENUM Werte ansprechen

Begonnen von bungev, März 23, 2017, 11:27:37

⏪ vorheriges - nächstes ⏩

bungev

Hallo zusammen,

ich möchte ein Array in einer Sub/Function mit Werten füllen und später irgendwo auf dieses Array per ENUM-Werte zurückgrerifen. Kann mir da jemand helfen?

Hier mal mein Bsp-Code

Public Array(100,15) as string

Enum Array_ENUM
    Wertetext1 = 0
    Wertetext2= 1
    Wertetext3= 2
    usw.
End Enum

sub test()

for z=0 to 100
    Array(z,0) = "Wert1"
    Array(z,1) = "Wert2"
    Array(z,1) = "Wert3"
    usw.
next z

end sub

Aufruf in einer anderen Sub/Funktion

Sub Aufruf

msgbox Array(0,Wertetext2)

end sub

Bei msgbox Array(0, soll nun die ENUM-Liste erscheinen, die mir die gewünschten Textwerte anzeigt.

Dieses Beispiel soll nur kurz als Bsp. dienen und somit nur meine Problemstellung verdeutlichen. Mir ist schon klar, dass der Code so keinen Sinn macht.

Wäre schön, wenn mir jemand helfen könnte.

Vielen Dank

Volker

Josef P.

Hallo!

Vorab: ist dein Anwendungfall so geheim, dass du das Array als Array bezeichnen musst? ;) (Ist nämlich eine schlechte Namenswahl, da es eine eine Array-Funktion gibt.)

Ich nehme an, du möchtest automatisch Intellisense erhalten. Das kannst du über eine Hilfsfunktion erreichen.

public function EinSinnvollerName(byval Index as long, byval WerteTextIndex as DeinEnum) as String
   EinSinnvollerName = DeinArray(Index, WerteTextIndex)
end Function


Da du ein Enum zum Nachschlagen verwendet, schließe ich daraus, dass die 2. Dimension des Arrays immer gleich groß sein wird.

Wie würde dir folgende Verwendung gefallen:
irgendetwas = DeineListe(123).WertText1

mfg
Josef

bungev

Hallo Josef,

natürlich ist mein Code keine Geheimsache und Array ist natürlich auch nicht so dolle, aber das habe ich ja auch dazugeschrieben.

Ich glaube, dass Du mein Problem gelöst hast. Werde dass jetzt mal ausgiebig testen.

Vielen Dank noch einmal für die schnelle Lösung.

Volker

Beaker s.a.

Hallo Josef,
Zitatdu möchtest automatisch Intellisense erhalten. Das kannst du über eine Hilfsfunktion erreichen.
Das verstehe ich nicht. IntelliSense bekomme ich doch wenn ich den Namen
der Enum gefolgt von einem "." eintippe.
Oder meinst du das hiermit

irgendetwas = DeineListe(123).WertText1

und "DeineListe(123)" ist die Enum?

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Josef P.

#4
@ekkehard:
Wenn man einen Funktionsparamter mit dem Enum deklariert, kommt IntelliSense sofort, ohne den Enum-Namen zu tippen.

zu:
irgendetwas = DeineListe(123).WertText1
Je nach Anwendungsfall, den ich mangels Beschreibung des Verwendungszwecks nicht kenne, könnte vielleicht ein Konstrukt aus Array und Type oder Klasse auch passen.

Prinzip:
Public Type Adresse
   Strasse As String
   PLZ As String
   Ort As String
   Land As String
End Type

' Verwendung:
private sub MachWas()
   dim Adressen(3) as Adresse
   ...
   irgendetwas = Adressen(1).Ort
   ...


mfg
Josef

Beaker s.a.

Hallo Josef,
ZitatFunktionsparamter mit dem Enum deklariert
Grrr, das as DeinEnumhatte ich überlesen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)