Списки в Clarion

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
SergioRaguzini
Активист
Сообщения: 108
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край

Списки в Clarion

Сообщение SergioRaguzini »

Привет Всем!

Есть строка с номерами корпусов гостиницы 3,5,6 в качестве разделителя между элементами (номеров корпусов) используются запятые. Мне надо выделить отдельно из строки номер каждого корпуса. Я никогда особо раньше не заморачивался, обрабатывал строку '3,5,6' считал запятые слева направо и по ним выделял слова. Можно конечно для такой цели разделения создать временный текстовый (с драйвером Ascii), записать в него строку '3,5,6', закрыть его, а потом открыть его же с драйвером Basic чтобы получить значения в переменные

Тут пришлось недавно писать небольшую процедуру на Python и обратил внимание, что в Python есть такое понятие как "списки" к каждому элементу которого можно адресно обратиться (что удобно), например:

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

Builds_Num = [3,5,6]
bremen_musicians = ['Кот', 'Пёс', 'Трубадур', 'Осёл']
Вопрос, конечно, не прикладного характера (посчитать разделители и выделить содержимое не проблема), а больше из любопытства, м.б. и в Clarion есть тоже какой-то простой вариант?

kreator
✯ Ветеран ✯
Сообщения: 3983
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Списки в Clarion

Сообщение kreator »

А очередь не подойдёт?
Опять же элемент строки Вы можете найти по адресу, типа a[11].
Есть ещё массивы.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2503
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Списки в Clarion

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

В SystemStringClass можно поискать подходящие методы, в StringTheory точно есть. Да даже можно через cjson:

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

  PROGRAM

  INCLUDE('cjson.inc'), ONCE

  MAP
    INCLUDE('printf.inc'), ONCE
  END

jroot                         cJSONFactory
jmusicians                    &cJSON
jitem                         &cJSON
i                             LONG, AUTO

  CODE
  !- создать список строк
  jmusicians &= jroot.Parse('["Кот", "Пёс", "Трубадур", "Осёл"]')
  
  !- для каждого элемента в списке
  LOOP i=1 TO jmusicians.GetArraySize()
    !- получить элемент i
    jitem &= jmusicians.GetArrayItem(i)
    !- вывести его значение
    MESSAGE(printf('Musician[%i]=%s', i, jitem.GetStringValue()))
  END
  
  !- очистить
  jmusicians.Delete()
С уважением, ДП

Аватара пользователя
SergioRaguzini
Активист
Сообщения: 108
Зарегистрирован: 08 Декабрь 2009, 19:16
Откуда: Краснодарский край

Списки в Clarion

Сообщение SergioRaguzini »

Привет Всем!
Вообще тема, наверное, не та чтобы ее долго обсуждать.
kreator писал(а):
14 Октябрь 2020, 22:50
А очередь не подойдёт?
Я тоже так и делаю, разбираю с использованием массивов.
Дед Пахом писал(а):
15 Октябрь 2020, 0:32
даже можно через cjson
Прикольно

Спасибо за отклики!

Ответить