Thema: Delphi Übersetzung in VB-Code

Einzelnen Beitrag anzeigen

DbSam

Registriert seit: 27. Nov 2014
5 Beiträge
 
#5

AW: Übersetzung in VB-Code

  Alt 27. Nov 2014, 10:52
Guten Morgen Hans,

wie schon geschrieben, es gibt in VB.Net keine Arrays als Konstanten.

Es gibt sicher ein paar mögliche Lösungen für Dein Problem. Leider kenne ich den Hintergrund nicht ganz genau und kann daher nur eine funktionierende Lösung anbieten, welche mutmaßlich auf Deine Frage passen sollte.


Da .Net komplett objektorientiert aufgebaut ist, wäre eine mögliche Lösung die folgende - wenn ich Dein Anliegen richtig verstanden habe:
Zuerst eine kleine Miniklasse bauen, in etwa so:
Code:
Public Class GEDCOMDateApproximatedColl
    Inherits CollectionBase
    Public Enum eGEDCOMApproximated
        daExact
        daAbout
        daCalculated
        daEstimated
    End Enum

    Public Sub New()
        Me.Add("")
        Me.Add("ABT")
        Me.Add("CAL")
        Me.Add("EST")
    End Sub

    Private Sub Add(ByVal Item As String)
        Dim o As New GEDCOMApproximated
        o.Value = Item
        Me.InnerList.Add(o)
    End Sub

    Public Function GEDCOMDateApproximated(ByVal Item As eGEDCOMApproximated) As String
        Dim o As GEDCOMApproximated = CType(Me.InnerList(Item), GEDCOMApproximated)
        Return o.Value
    End Function

    Protected Class GEDCOMApproximated
        Public Property Value As String
    End Class
End Class
Sieht etwas aufwendig aus, geht sicher auch noch etwas kürzer.
Der Vorteil ist, dass alles in dieser Klasse gekapselt definiert und beliebig erweiterbar ist.

Deklaration und Aufruf funktioniert dann in etwa so:
Code:
    'Deklaration erfolgt an der Stelle wie und wo dies benötigt wird:
    Public DateApproximated As New GEDCOMDateApproximatedColl


    'Der Aufruf in etwa so:
    Private Sub Beispiel() Handles Button1.Click
        MessageBox.Show(Me.DateApproximated.GEDCOMDateApproximated(GEDCOMDateApproximatedColl.eGEDCOMApproximated.daAbout))
    End Sub
Mit der Hilfe von Intellisense muss man gar nicht so viel tippen wie es hier ausschaut...
Sicherlich kannst Du diesen Vorschlag noch verbessern, da Du ja das nötige Hintergrundwissen der von Dir benötigten Umsetzung besitzt.

Man könnte evtl. noch mit Generics, also einer 'List of T' arbeiten, muss dann aber auch wieder das Enum an anderer Stelle bauen. Deshalb habe ich das hier gleich alles gekapselt.


Gruß Carsten

PS:
Wobei man an den Namen noch etwas 'feilen' sollte...
Der Code sollte trotzdem nach menschlichem Ermessen lauffähig sein, wenn er denn richtig eingebaut wird.
  Mit Zitat antworten Zitat