Тема: Использование массивов
В общем задумка следующая, хочу решить задачу автоматического заполнения "ведомости расхода стали".
Для этого требуется, что бы объект имел динамические паблик параметы (ПП), и вроде как это возможно.
Array (UniqueD,s,1), "Уникальный диаметр". Требуется только выполнить проверку на уникальность.
Допустим арматурный каркас имеет 4ре типа стержней, которые могут быть одного диаметра d1,d2,d3,d4...
Тогда параметр s должен быть равен 1, а если все разные... то s = 4.
Я вроде написал как я понимаю эту проверку...
function ActHeader {
Public(
Array(UniqueD, s, 1), "Уникальный диаметр",
)
}
function OnInitialization {
if(seted == UnknownValue) {
seted=1;
s = 0;
}
}
function OnMakeParameters {
s = 0; // проблема где то здесь
i = 1;
While(i < 5){
found = FALSE;
current = d[i];
n = 1;
While(n < 5){
if (UniqueD[n] == current){
found = TRUE;
n = 5;
}
else{
n = n+1;
found = FALSE;
};
};
if (found == FALSE){
s = s+1;
UniqueD[s]=current;
}
i=i+1;
};
Но возникает проблема. Перед началом каждой проверки на уникальность, надо выставить s = 0; что бы он не уходил в бесконечное количество элементов массива. Но если это сделать так как сделано у меня, то почему количество элементов массива выставляется равным нулю, и не реагирует ни на что... Если s=0; убрать из функции OnMakeParameters, то 1 раз он считает все правильно, но последующие разы...он продолжает до бесконечности растить массив UniqueD.