powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Переинициализация массива
4 сообщений из 4, страница 1 из 1
Переинициализация массива
    #39992667
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
execute ibeblock
as
begin
  i = 2;
  res = '';
  WHILE (i > 0) do BEGIN
    str = '';
    arr = NULL;
    FOR idx = 0 TO i - 1 DO
      arr[idx] = i || '_' || idx;
    str = '';
    foreach (arr as item) do
      str = str || item || ', ';
    res = res || i || ': ' || str || ibec_CRLF();
    i = i - 1;
  END
  ibec_ShowMessage(res);
end

Выполняем две итерации. На каждой итерации переинициализируем массив arr = NULL; и добавляем в него количество элементов, соответствующих номеру итерации.

Потом все элементы склеиваем в строку и выводим.

Получаем итоговую строку
Код: plaintext
1.
2.
2: 2_0, 2_1, 
1: 1_0, 2_1, 
Т.е. элемент 2_1 как был добавлен изначально, так он в массиве и остался.

Если строку
Код: sql
1.
arr = NULL;

заменить на
Код: sql
1.
arr = ibec_Array('');

то вывод получается правильным
Код: plaintext
1.
2.
2: 2_0, 2_1, 
1: 1_0, 
это так и должно быть или баг?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
Переинициализация массива
    #39992781
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
это так и должно быть или баг?


Так и должно быть. arr = NULL это то же самое что и arr[0] = NULL, больше ничего с массивом такое присваивание не делает.
...
Рейтинг: 0 / 0
Переинициализация массива
    #39992954
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert
Так и должно быть
А как ему тогда сбросить длину? Если я не уверен, что у меня на итерации будет хотя бы один элемент?
...
Рейтинг: 0 / 0
Переинициализация массива
    #39993093
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
А как ему тогда сбросить длину? Если я не уверен, что у меня на итерации будет хотя бы один элемент?


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


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