Существует ли стандартный способ отслеживания аудита в чашах Грааля?

Все функции преобразования чисел в VBA осведомлены о локали, поэтому они будут игнорировать как тысячи разделителей, так и символы валюты. Функция IsNumeric ведет себя таким же образом:

Public Sub Example()
    'en-US locale
    Debug.Print IsNumeric("$1,1,1,1,1,")    'True
    Debug.Print CLng("$1,1,1,1,1,")         '11111
End Sub

Единственный обходной путь, не связанный с хостом, о котором я знаю (если не хранить числа в виде данных String), это полностью обходить встроенные приведения VBA и вызывать базовые функции преобразования в oleaut32.dll напрямую с жестко заданным идентификатором локали. Например, чтобы получить Double из локализованной строки в США:

Public Declare PtrSafe Function VarR8FromStr Lib "oleaut32" _
    (ByVal strIn As LongPtr, ByVal lcid As Long, ByVal dwFlags As Long, ByRef pdblOut As Double) As Long

Public Const EN_US As Long = 1033

Public Function DoubleFromEnUsString(converting As String) As Double
    Dim converted As Double, result As Long
    result = VarR8FromStr(StrPtr(converting), EN_US, 0, converted)
    If (result = 0) Then
        DoubleFromEnUsString = converted
    Else
        Err.Raise 5
    End If
End Function

... или Long:

Public Declare PtrSafe Function VarI4FromStr Lib "oleaut32" _
    (ByVal strIn As LongPtr, ByVal lcid As Long, ByVal dwFlags As Long, ByRef plOut As Long) As Long

Public Const EN_US As Long = 1033

Public Function LongFromEnUsString(converting As String) As Long
    Dim converted As Long, result As Long
    result = VarI4FromStr(StrPtr(converting), EN_US, 0, converted)
    If (result = 0) Then
        LongFromEnUsString = converted
    Else
        Err.Raise 5
    End If
End Function

Пример использования:

Public Sub Sample()
    Debug.Print LongFromEnUsString("12.34")     '12
    Debug.Print DoubleFromEnUsString("12.34")   '12.34
End Sub

5
задан Hank Gay 7 May 2009 в 16:54
поделиться

1 ответ

Если вы объявите dateCreated и lastUpdated как Date, они будут автоматически поддерживаться Grails. Вы можете использовать Grails Audit Logging Plugin для регистрации аутентифицированного пользователя в различных системах безопасности.

6
ответ дан 14 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: