|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Системный разделитель разрядов на компе - , В одну из функций стороннего приложения необходимо отправить в качестве аргумента массив из 3х цифр..... так - array(0.5,0.3,0.4) - работает.... Но я никак не могу догадаться как сделать это программно... Eval естественно выдает формат числа но с разделителем "," В поле пишу 0.5 - а оно воспринимается как string.... ни тот ни другой массив эта сторонняя функция воспринимать не хочет.... Можно ли сделать что нибудь кроме изменения знака разделения разрядов на компе? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:06 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Ни фига не понять... Откуда, в какой форме, берутся данные для формирования массива? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:33 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
array(0.5,0.3,0.4) - это я пишу руками прямо в коде - работает Мне нужно сформировать эту строку программно - или взять данные с полей или еще каким -нибудь образом вычислить. Каким - не имеет пока значения. Проблема в том, что если я формирую массив как array(переменная1,Переменная2,переменная3) то, если эти переменные имеют числовой формат - то разделитель разрядов - запятая и функция не работает. Если сделать эти переменные текстовыми и поставить вместо запятой точку - то функция тоже не хочет работать. Путь в лоб - замена системного разделителя разрядов на компе. Хотелось бы обойтись без этого. Соответственно вопрос - нет ли какой нибудь хитрости или костыля для такого случая? Стронная функция - из CATIA. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 15:46 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Serg197311Проблема в том, что если я формирую массив как array(переменная1,Переменная2,переменная3) то, если эти переменные имеют числовой формат - то разделитель разрядов - запятая и функция не работает. Странно. То, что вы видите в числовом поле "," или "." не имеет значения, если не выполняется преобразования числа в текст, а array этого, вроде, не делает. Можно иначе: Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 16:09 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Что значит "функция не работает"? Ошибка? И что за сторонняя программа? Вызов dll? Вы уточните, а то не пойми что. Если работает array(0.5,0.3,0.4), но не работает с переменными, то скорее всего функция ожидает массив Double, а переменные, которые вы передаете не кастытся в Double по умолчанию. Сделайте это явно: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:44 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Кривцов Анатолий Странно. То, что вы видите в числовом поле "," или "." не имеет значения, если не выполняется преобразования числа в текст, а array этого, вроде, не делает. Можно иначе: Код: vbnet 1. 2. 3. 4.
Я пробовал через функции..... Eval(me!Поле.Value)..... Перед самим вызовом функции смотрю в дебаггере - значение - числовое, разделитель разрядов - запятая, функция вызывается - и ошибка(что то именно неправильный тип данных говорит) Пишу тупо в коде Dim myarray(2) as Variant myarray=array(0.5,0.3,0.4) отправляю на вход функции - работает..... тоже ничего пока понять не могу..... ну попробую в понед через переменные..... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:47 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
MrShinЧто значит "функция не работает"? Ошибка? - да, пишет что-то про несоответствие типов данных MrShinИ что за сторонняя программа? Вызов dll? Вы уточните, а то не пойми что. Ну как так на пойми что..... писал выше - CATIA, конструкторская 3D программа MrShinЕсли работает array(0.5,0.3,0.4), но не работает с переменными, то скорее всего функция ожидает массив Double, а переменные, которые вы передаете не кастытся в Double по умолчанию. Сделайте это явно: Код: vbnet 1.
Спасибо!!!! в понед попробую - ну не бывает же чудес, должен же быть способ) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2018, 17:52 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Получилось так Dim myarray(2) as Variant Dim переменная1 as double Dim переменная2 as double Dim переменная2 as double Myarray=array( переменная1 , переменная2, переменная2) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2018, 07:35 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
Serg197311Получилось такА с явной конвертацией, как я предложил - не работает? По идее это то же самое должно быть. Хотя, при передаче параметров в сторонние функции могут быть нюансы с временными переменными, используемыми для хранения результатов функций ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2018, 12:42 |
|
Разделитель разрядов
|
|||
---|---|---|---|
#18+
MrShin А с явной конвертацией, как я предложил - не работает? создаем переменные как Variant, явно конвертируем через cdbl() - работает А вот если сам массив обьявить не Variant а double - не работает, как не извращайся..... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2018, 12:52 |
|
|
start [/forum/topic.php?fid=45&fpage=42&tid=1611109]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 304ms |
total: | 453ms |
0 / 0 |