Массив

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Андрей

Массив

Сообщение Андрей »

Как в процессе работы программы определить размерность массива. Алгоритм доступа к произвольному элементу массива
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

можно через TUFO_CallInterface, я думаю, кажется, в нём все возможности есть. Подробнее смотри статьи Олега Руденко на этом сайте. Коротко - заводишь ANY-переменную, указываешь её на массив, а TUFO_CallInterface будет по её адресу.
С уважением, ДП
softcreator
Ветеран движения
Сообщения: 78
Зарегистрирован: 04 Август 2005, 9:35
Контактная информация:

Сообщение softcreator »

Вы чего ребята?! а MAXIMUM зачем? :D
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

а как узнать, сколько всего размерностей?
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Народ, ну смотрите HELP иногда ...

Код: Выделить всё

Array BYTE,DIM(10,12)      !Define a two-dimensional array

  !For the above Array:   MAXIMUM(Array,1) returns 10
  !                       MAXIMUM(Array,2) returns 12

 CODE
 LOOP X# = 1 TO MAXIMUM(Array,1)    !Loop until end of 1st dimension
  LOOP Y# = 1 TO MAXIMUM(Array,2)   !Loop until end of 2nd dimension
   Array[X#,Y#] = 27                !Initialize each element to default
  END
 END
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

Array BYTE,DIM(10,12) !Define a two-dimensional array
ну и как ты определишь в рантайме, что массив именно двумерный? Кроме X# и Y# ещё по 24 буквам циклы делать? :D
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Код: Выделить всё

LOOP
  W#+=1
  IF MAXIMUM(Array,W#) THEN E#+=1 ELSE BREAK END
END
E# = размер массива
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

да, как говорится, "будь проще, и народ к тебе потянется".
Кстати, а если массив окажется вовсе не массивом, MAXIMUM(Array,1) тоже вернёт 0? Ломает проверять :D И ответа вовсе не жду. :D
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Ты еще спроси а если я класс передам или ссылку на него ... :)
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3133
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Сообщение Дед Пахом »

проверил - во всех случаях возвращает 0.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Думаю тему можно закрывать...
Тот кто писал скорее всего уже понял все что ему нужно :)
Ответить