powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разделитель разрядов
10 сообщений из 10, страница 1 из 1
Разделитель разрядов
    #39716727
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Системный разделитель разрядов на компе - ,
В одну из функций стороннего приложения необходимо отправить в качестве аргумента массив из 3х цифр.....
так - array(0.5,0.3,0.4) - работает....
Но я никак не могу догадаться как сделать это программно... Eval естественно выдает формат числа но с разделителем ","
В поле пишу 0.5 - а оно воспринимается как string.... ни тот ни другой массив эта сторонняя функция воспринимать не хочет....
Можно ли сделать что нибудь кроме изменения знака разделения разрядов на компе?
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716759
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни фига не понять...
Откуда, в какой форме, берутся данные для формирования массива?
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716778
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
array(0.5,0.3,0.4) - это я пишу руками прямо в коде - работает
Мне нужно сформировать эту строку программно - или взять данные с полей или еще каким -нибудь образом вычислить. Каким - не имеет пока значения.
Проблема в том, что если я формирую массив как array(переменная1,Переменная2,переменная3) то, если эти переменные имеют числовой формат - то разделитель разрядов - запятая и функция не работает. Если сделать эти переменные текстовыми и поставить вместо запятой точку - то функция тоже не хочет работать.
Путь в лоб - замена системного разделителя разрядов на компе. Хотелось бы обойтись без этого.
Соответственно вопрос - нет ли какой нибудь хитрости или костыля для такого случая?
Стронная функция - из CATIA.
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716797
Serg197311Проблема в том, что если я формирую массив как array(переменная1,Переменная2,переменная3) то, если эти переменные имеют числовой формат - то разделитель разрядов - запятая и функция не работает. Странно. То, что вы видите в числовом поле "," или "." не имеет значения, если не выполняется преобразования числа в текст, а array этого, вроде, не делает.
Можно иначе:
Код: vbnet
1.
2.
3.
4.
Dim arr(0 to 2) As Double
arr(0)=переменная1
arr(1)=Переменная2
arr(2)=переменная3
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716840
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "функция не работает"? Ошибка?
И что за сторонняя программа? Вызов dll? Вы уточните, а то не пойми что.

Если работает array(0.5,0.3,0.4), но не работает с переменными, то скорее всего функция ожидает массив Double, а переменные, которые вы передаете не кастытся в Double по умолчанию. Сделайте это явно:
Код: vbnet
1.
array(CDbl(переменная1), CDbl(Переменная2), CDbl(переменная3))
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716842
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов Анатолий Странно. То, что вы видите в числовом поле "," или "." не имеет значения, если не выполняется преобразования числа в текст, а array этого, вроде, не делает.
Можно иначе:
Код: vbnet
1.
2.
3.
4.
Dim arr(0 to 2) As Double
arr(0)=переменная1
arr(1)=Переменная2
arr(2)=переменная3


Я пробовал через функции.....
Eval(me!Поле.Value)..... Перед самим вызовом функции смотрю в дебаггере - значение - числовое, разделитель разрядов - запятая, функция вызывается - и ошибка(что то именно неправильный тип данных говорит)
Пишу тупо в коде
Dim myarray(2) as Variant
myarray=array(0.5,0.3,0.4)
отправляю на вход функции - работает.....
тоже ничего пока понять не могу.....
ну попробую в понед через переменные.....
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39716844
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЧто значит "функция не работает"? Ошибка? - да, пишет что-то про несоответствие типов данных
MrShinИ что за сторонняя программа? Вызов dll? Вы уточните, а то не пойми что.
Ну как так на пойми что..... писал выше - CATIA, конструкторская 3D программа

MrShinЕсли работает array(0.5,0.3,0.4), но не работает с переменными, то скорее всего функция ожидает массив Double, а переменные, которые вы передаете не кастытся в Double по умолчанию. Сделайте это явно:
Код: vbnet
1.
array(CDbl(переменная1), CDbl(Переменная2), CDbl(переменная3))


Спасибо!!!! в понед попробую - ну не бывает же чудес, должен же быть способ)
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39717375
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получилось так
Dim myarray(2) as Variant
Dim переменная1 as double
Dim переменная2 as double
Dim переменная2 as double
Myarray=array( переменная1 , переменная2, переменная2)
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39717533
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311Получилось такА с явной конвертацией, как я предложил - не работает? По идее это то же самое должно быть. Хотя, при передаче параметров в сторонние функции могут быть нюансы с временными переменными, используемыми для хранения результатов функций
...
Рейтинг: 0 / 0
Разделитель разрядов
    #39717542
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin А с явной конвертацией, как я предложил - не работает?

создаем переменные как Variant, явно конвертируем через cdbl() - работает
А вот если сам массив обьявить не Variant а double - не работает, как не извращайся.....
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Разделитель разрядов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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