Modules/Windream/Helpers.vb
2025-04-08 15:28:11 +02:00

207 lines
8.0 KiB
VB.net

Imports System.Text.RegularExpressions
Imports DigitalData.Modules.Windream.Constants
Public Class Helpers
Private Shared ReadOnly VectorIndicies As New List(Of Integer) From {
INDEX_TYPE_VECTOR_BOOLEAN,
INDEX_TYPE_VECTOR_CURRENCY,
INDEX_TYPE_VECTOR_DATE,
INDEX_TYPE_VECTOR_DATE_TIME,
INDEX_TYPE_VECTOR_FIXED_POINT,
INDEX_TYPE_VECTOR_FLOAT,
INDEX_TYPE_VECTOR_INTEGER,
INDEX_TYPE_VECTOR_INTEGER_64BIT,
INDEX_TYPE_VECTOR_STRING,
INDEX_TYPE_VECTOR_TIME
}
Friend Shared Function ConvertVectorType(pIndexType As Integer, pValue As String)
Dim myArray()
ReDim myArray(0)
Select Case pIndexType
Case INDEX_TYPE_HASH ' 36865
'Umwandeln in String
myArray(0) = CStr(pValue)
Return myArray
Case INDEX_TYPE_VECTOR_STRING '4097
'Umwandeln in String
myArray(0) = CStr(pValue)
Return myArray(0)
Case INDEX_TYPE_VECTOR_INTEGER '4098
'Umwandeln in Integer
myArray(0) = CInt(pValue.Replace(" ", ""))
Return myArray
Case INDEX_TYPE_VECTOR_FLOAT '4099
pValue = pValue.
Replace(" ", "").
Replace(".", ",")
'Umwandeln in Double
myArray(0) = CDbl(pValue)
Return myArray
Case INDEX_TYPE_VECTOR_BOOLEAN '4100
'Umwandeln in Boolean
myArray(0) = CBool(pValue)
Return myArray
Case INDEX_TYPE_VECTOR_DATE '4101
'Umwandeln in Date
myArray(0) = CDate(pValue)
Return myArray
Case INDEX_TYPE_VECTOR_INTEGER_64BIT '4107
myArray(0) = Convert.ToInt64(pValue)
Return myArray
Case INDEX_TYPE_VECTOR_DATE_TIME '4103
'Umwandeln in Datum Uhrzeit
Return pValue
Case 8204
'Umwandeln in Integer
myArray(0) = CInt(pValue.Replace(" ", ""))
Return myArray
Case Else
'Umwandeln in String
myArray(0) = CStr(pValue)
Return myArray
End Select
End Function
Friend Shared Function ConvertIndexValue(Type As Integer, pValue As String) As Object
' Leerzeichen an Anfang und Ende entfernen
pValue = pValue.Trim()
If Type > 4095 Then
Return ConvertVectorType(Type, pValue)
End If
Select Case Type
Case INDEX_TYPE_HASH
Return pValue
Case INDEX_TYPE_STRING
Return pValue
Case INDEX_TYPE_VECTOR_STRING
Return pValue
Case INDEX_TYPE_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER_64BIT
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt64(pValue)
Case INDEX_TYPE_VECTOR_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_VECTOR_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_CURRENCY
'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden
Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(pValue))
Return aValueWrapper
Case Else
Return pValue
End Select
End Function
Friend Shared Function ConvertAttrValue(Type As Integer, pValue As String) As Object
' Leerzeichen an Anfang und Ende entfernen
pValue = pValue.Trim()
If Type > 4095 Then
Return ConvertVectorType1(Type, pValue)
End If
Select Case Type
Case INDEX_TYPE_HASH
Return pValue
Case INDEX_TYPE_STRING
Return pValue
Case INDEX_TYPE_VECTOR_STRING
Return pValue
Case INDEX_TYPE_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt32(pValue)
Case INDEX_TYPE_VECTOR_INTEGER_64BIT
pValue = pValue.Replace(" ", String.Empty)
Return Convert.ToInt64(pValue)
Case INDEX_TYPE_VECTOR_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_BOOLEAN
Return Convert.ToBoolean(pValue)
Case INDEX_TYPE_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE_TIME
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_VECTOR_DATE
Return Convert.ToDateTime(pValue)
Case INDEX_TYPE_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_VECTOR_FLOAT
Return Convert.ToDouble(pValue)
Case INDEX_TYPE_CURRENCY
'Wegen currency muß ein eigenes Objekt vom typ Variant erzeugt werden
Dim aValueWrapper As System.Runtime.InteropServices.CurrencyWrapper = New System.Runtime.InteropServices.CurrencyWrapper(CDec(pValue))
Return aValueWrapper
Case Else
Return pValue
End Select
End Function
Friend Shared Function ConvertVectorType1(pIndexType As Integer, pValue As String)
Select Case pIndexType
Case INDEX_TYPE_HASH ' 36865
'Umwandeln in String
Return CStr(pValue)
Case INDEX_TYPE_VECTOR_STRING '4097
'Umwandeln in String
Return CStr(pValue)
Case INDEX_TYPE_VECTOR_INTEGER '4098
'Umwandeln in Integer
Return CInt(pValue.Replace(" ", ""))
Case INDEX_TYPE_VECTOR_FLOAT '4099
pValue = pValue.
Replace(" ", "").
Replace(".", ",")
'Umwandeln in Double
Return CDbl(pValue)
Case INDEX_TYPE_VECTOR_BOOLEAN '4100
'Umwandeln in Boolean
Return CBool(pValue)
Case INDEX_TYPE_VECTOR_DATE '4101
'Umwandeln in Date
Return CDate(pValue)
Case INDEX_TYPE_VECTOR_INTEGER_64BIT '4107
Return Convert.ToInt64(pValue)
Case INDEX_TYPE_VECTOR_DATE_TIME '4103
'Umwandeln in Datum Uhrzeit
Return pValue
Case 8204
'Umwandeln in Integer
Return CInt(pValue.Replace(" ", ""))
Case Else
'Umwandeln in String
Return CStr(pValue)
End Select
End Function
Friend Shared Function IsVectorIndex(indexType As Integer)
Return VectorIndicies.Contains(indexType)
End Function
End Class