Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как поменять константу в региональных стандартах? / 4 сообщений из 4, страница 1 из 1
12.04.2009, 00:38
    #35926641
Как поменять константу в региональных стандартах?
Ситуация:
Пишу XML парсер, который будет читать XML-ку и ложить ее в базу. В качестве промежуточного хранилища использую mdb, доступ через DAO. (Знаю, что все продвинутые программеры давно перешли на ADO но в данной ситуации DAO быстрее почему то. А скорость обработки критична).
Так вот, в XML-ке лежат данные в виде к примеру "0.35" - то есть через точку. А занести эти данные надо в таблицу с типом данных "Одинарное с плавающей точкой".
В региональных настройках на конкретной машине в качестве разделителя целой и дробной части стоит запятая. И естественно, Jet ни в какую не соглашался положить число с точкой в ячейку для которой разделитель предусмотрен - запятая. Пока не поменял в региональных стандартах разделитель на точку - не заработало.
Так вот.
Софтинушка моя будет работать хз на каких машинах. И хз какие там будут стоять региональные настройки.
Как сделать чтобы при запуске эти настройки проверялись и при необходмости запятая автоматически менялась бы на точку?
Предполагаю, что придется лезть в реестр.

Заранее Спасибо.
...
Рейтинг: 0 / 0
13.04.2009, 08:42
    #35927452
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять константу в региональных стандартах?
replace(text,",",".")
replace(text," ",",")
...
Рейтинг: 0 / 0
13.04.2009, 09:56
    #35927543
SoftParanoik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять константу в региональных стандартах?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long

Private Const LOCALE_SDECIMAL = &HE
Private Const LOCALE_USER_DEFAULT = &H400

Private Function LocaleDecSeparator() As String
    Dim wLDS As String
    Dim wLen As Long
    wLDS = Space( 100 )
    wLen = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, wLDS, Len(wLDS))
    LocaleDecSeparator = IIf(wLen >  0 , Left(wLDS, wLen -  1 ), vbNullString)
End Function

Private Function TranslateToPoint(Value As Variant) As String
    TranslateToPoint = Replace(CStr(Value), LocaleDecSeparator, ".")
End Function

Private Function TranslateToLocal(Value As Variant) As String
    TranslateToLocal = Replace(CStr(Value), ".", LocaleDecSeparator)
End Function
...
Рейтинг: 0 / 0
13.04.2009, 12:35
    #35928027
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как поменять константу в региональных стандартах?
Роман ШевченкоСитуация:
Софтинушка моя будет работать хз на каких машинах. И хз какие там будут стоять региональные настройки.

К сожалению конкретно на вопрос сейчас ответить не смогу - надо пробовать (не столь часто с XML-ками работаю), а времени мало, но варианты с Replace и подобные выкидывай сразу - это мусор.

В свое время правильно выводить в XML-файл мне помог данный примерчик (не помню откуда его взял, может и с этого сайта):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Dim cnn As Connection 
Dim com As Command 
Dim str As Stream 
Dim sQuery As String 
Dim doc As IXMLDOMDocument2 

    Set cnn = New Connection 
    cnn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyDatabase" 

    Set com = New Command 
    com.ActiveConnection = cnn 

    sQuery = "<root><sql:query xmlns:sql='urn:schemas-microsoft-com:xml-sql'>select top 10 * from Files for xml auto</sql:query></root>" 

    Set str = New Stream 
    str.Open 
    str.WriteText sQuery, adWriteChar 
    str.Position =  0  

    Set com.CommandStream = str 
    com.Dialect = "{5D531CB2-E6Ed-11D2-B252-00C04F681B71}" 

    Set doc = New DOMDocument30 
    com.Properties("Output Stream") = doc 
    com.Execute , , adExecuteStream 

    str.Close 

    doc.Save "e:\test2k.xml"

Инфу по загадочному GUID'у смотрите тут: http://msdn.microsoft.com/en-us/library/aa905915.aspx

В нужном тебе решении должно быть нечто подобное...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как поменять константу в региональных стандартах? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]