AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2007, 12:35   #1  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Задача: необходимо получить массив данных, который возвращает функция.

Есть переменная Mass_1 - массив, тип Text.
Есть функция Func_1, которая возвращает массив строковых элементов.

Пишу Mass_1:=Func_1;
Navision ругается:
":= cannot be performed on arrays. Choose a single array value using an expression such as: MyArray[...]"
Старый 16.01.2007, 12:37   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Programmer Посмотреть сообщение
Задача: необходимо получить массив данных, который возвращает функция.

Есть переменная Mass_1 - массив, тип Text.
Есть функция Func_1, которая возвращает массив строковых элементов.

Пишу Mass_1:=Func_1;
Navision ругается:
":= cannot be performed on arrays. Choose a single array value using an expression such as: MyArray[...]"
Передавайте массив в функцию варом.
Старый 16.01.2007, 13:43   #3  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
Цитата:
Передавайте массив в функцию варом.
Можно подробнее и понятнее.

Mass_1:=AnyAutomation.Func_1;

Mass_1 - одномерный тектсовый массив. Mas_2 - одномерный string-овый массив.
Функция AnyAutomation.Func_1 выполняет свои операции и в итоге возвращает массив Mas_2. И этот массив нужно присвоить массиву Mass_1.
Старый 16.01.2007, 14:11   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Programmer Посмотреть сообщение
Цитата:
Передавайте массив в функцию варом.
Можно подробнее и понятнее.

Mass_1:=AnyAutomation.Func_1;

Mass_1 - одномерный тектсовый массив. Mas_2 - одномерный string-овый массив.
Функция AnyAutomation.Func_1 выполняет свои операции и в итоге возвращает массив Mas_2. И этот массив нужно присвоить массиву Mass_1.
Можно написать функцию Func_1 таким образом, чтобы в качестве параметра VAR ей можно было бы передавать одномерный массив Mass_1? Тогда сама функция внутри себя заполняла бы его и присваивать ничего не прийдется.
Старый 16.01.2007, 14:34   #5  
.Quattro. is offline
.Quattro.
Участник
Лучший по профессии 2009
 
194 / 22 (1) +++
Регистрация: 22.05.2006
AnyAutomation.Func_1 возвращает SafeArray (скорее всего), а этот тип не поддерживает Nav.

Передать Варом - вызвать AnyAutomation.Func_1(Mass_1) так же не получится, тут тоже будет SafeArray.
Старый 16.01.2007, 14:40   #6  
Iskatel is offline
Iskatel
Участник
 
86 / 10 (1) +
Регистрация: 18.09.2006
У меня именно такая ситуация:

Цитата:
AnyAutomation.Func_1 возвращает SafeArray (скорее всего), а этот тип не поддерживает Nav.

Передать Варом - вызвать AnyAutomation.Func_1(Mass_1) так же не получится, тут тоже будет SafeArray.
Спасибо, за сообщение. Что-нибудь другое придумаю.
Старый 27.07.2007, 09:35   #7  
Bogy is offline
Bogy
Участник
 
7 / 10 (1) +
Регистрация: 06.07.2007
Есть массив типа text. Нужно получать символы элементов массива. При записи text[1][1] или text[1,1] ругается на выход массива за допустимые интервалы.
Можно ли сделать это без использования дополнительной текстовой переменной?
Старый 27.07.2007, 11:02   #8  
NeNavision_imported is offline
NeNavision_imported
Участник
Аватар для NeNavision_imported
 
241 / 10 (1) +
Регистрация: 12.08.2005
Код:
COPYSTR(Strarray[1],x,1);
- где, х - позиция символа
__________________
Должен остаться только один.
Старый 27.07.2007, 11:26   #9  
Bogy is offline
Bogy
Участник
 
7 / 10 (1) +
Регистрация: 06.07.2007
Цитата:
Сообщение от NeNavision Посмотреть сообщение
Код:
COPYSTR(Strarray[1],x,1);
- где, х - позиция символа
Это тоже изврат - каждый раз вызывать COPYSTR. Рациональнее уже доп. переменную завести.
Старый 27.07.2007, 11:44   #10  
NeNavision_imported is offline
NeNavision_imported
Участник
Аватар для NeNavision_imported
 
241 / 10 (1) +
Регистрация: 12.08.2005
Это не изврат. Тут все так. Это путь воина.
__________________
Должен остаться только один.
Старый 27.07.2007, 16:20   #11  
Bogy is offline
Bogy
Участник
 
7 / 10 (1) +
Регистрация: 06.07.2007
Цитата:
Сообщение от NeNavision Посмотреть сообщение
Это не изврат. Тут все так. Это путь воина.
Тогда такой вопрос: откуда уверенность, что вызов в цикле N раз COPYSTR () оптимальнее, чем один раз присвоить промежуточной текстовой переменной tmp:=text[i], а потом обращаться к символам через tmp[j]?
Просто я не в курсе как в Navision с внутренней оптимизацией выполнения COPYSTR, но вызов в цикле N раз подпрограммы лично мне глаза режет.
Старый 27.07.2007, 17:09   #12  
NeNavision_imported is offline
NeNavision_imported
Участник
Аватар для NeNavision_imported
 
241 / 10 (1) +
Регистрация: 12.08.2005
Уверенность равна нулю.
Различие в плане производительности от применения того или другого способа, тоже равна нулю. (не это нужно оптимизировать).
Пишите так, чтобы лично вам было понятно и другие, кто будет после вас, не матерились.

p.s. Способ: COPYSTR(Strarray[1],x,1) - отстой
__________________
Должен остаться только один.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.