List Data to String Parsing
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
List Data to String Parsing
Привет всем!
Есть ли возможность присвоить (распарсить) динамическое содержимое элементов List в переменные типа STRING (CSTRING) без отображения в Browse?
Есть ли возможность получить значение конкретного элемента?
Есть ли возможность присвоить (распарсить) динамическое содержимое элементов List в переменные типа STRING (CSTRING) без отображения в Browse?
Есть ли возможность получить значение конкретного элемента?
С Уважением, Developer
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
List Data to String Parsing
Переведите. Ничего непонятно. Или напомнить о функциях what, who, where?
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7375
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
List Data to String Parsing
Да, немного не формализован вопрос … Здесь бы сначала определиться с терминологией.
LIST - базовый элемент интерфейса для списков;
BROWSE - формируемая шаблонами структура списка, состоящая из LIST, View, Files и т.д.
Т.е. в общем случае, для работы с содержимым LIST никакой BROWSE не нужен.
Если мы хотим разобрать структуру LIST, то просто работаем с ней напрямую.
Здесь хороший пример - это менеджер форматов списков (хотя в стандартных шаблонах он убогий)
Упрощённый пример разбора структуры LIST:
LIST - базовый элемент интерфейса для списков;
BROWSE - формируемая шаблонами структура списка, состоящая из LIST, View, Files и т.д.
Т.е. в общем случае, для работы с содержимым LIST никакой BROWSE не нужен.
Если мы хотим разобрать структуру LIST, то просто работаем с ней напрямую.
Здесь хороший пример - это менеджер форматов списков (хотя в стандартных шаблонах он убогий)
Упрощённый пример разбора структуры LIST:
Код: Выделить всё
! Присвоили содержимое LIST в строку
FormatSTR = ?MyList{PropList:Format}
! А далее можем LIST распарсить и получить параметры каждого элемента
Loop Loc:xCount = 1 to ?MyList{PropList:Exists,0} by 1
If ?MyList{PropList:Exists,Loc:xCount} = True
ColWidth = ?MyList{PropList:Width,Loc:xCount} ! Ширина колонки
ColResize = ?MyList{PropList:Resize, Loc:xCount}
BSColor = ?MyList{PropList:BackSelected, Loc:xCount}
BColor = ?MyList{PropList:BackColor , Loc:xCount}
TSColor = ?MyList{PropList:TextSelected, Loc:xCount}
ColFormat = ?MyList{PropList:Format , Loc:xCount}
FieldNo = ?MyList{PropList:FieldNo , Loc:xCount}
ColFixed = ?MyList{PropList:Fixed, Loc:xCount}
GroupName = ?MyList{PropList:Header + PropList:Group, Loc:xCount}
GroupFormat = ?MyList{PropList:Format + PropList:Group, Loc:xCount}
GroupNo = ?MyList{PropList:GroupNo, Loc:xCount} ! Номер группы
GroupCount = ?MyList{PropList:GroupNo + PropList:Group,Loc:xCount} ! Кол-во колонок в группе
! Есть группа
If ?MyList{PropList:GroupNo + PropList:Group,Loc:xCount} > 0 then Loc:FGroup = True.
Omit('**CW6**',_CWVER_ = 6100)
HColor = ?MyList{PropList:HdrTextColor,Loc:xCount}
**CW6**
! и т.д.
end
end
За теми кто отстал - не возвращаться. (С) Кодекс
List Data to String Parsing
Kreator и Игорь Столяров спасибо за отклик и за правильные замечания.
Игорь Столяров точно понял мой вопрос и предоставил возможное практическое решения - сейчас попробую - необходимо получить значение конкретного элемента List
Kreator, а как применить what, who, where - к List (как на примере Игоря Столярова (Упрощённый пример разбора структуры LIST:)) - приведи, пожалуйста, рабочий пример применительно к List
С Уважением, Developer
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
List Data to String Parsing
what, who, where к очереди применяются. Удобно оперировать номерами переменных в очереди, а не их наименованиями.
LOC:CurrentField &= WHAT(LOC:Queue,10) достаёт значение 10 члена очереди. И присваивать так же можно.
LOC:CurrentField &= WHAT(LOC:Queue,10) достаёт значение 10 члена очереди. И присваивать так же можно.
We are hard at work… for you.
List Data to String Parsing
Вот, оказывается, мой-же вопрос, заданный ранее Игорем Столяровым в 2015 году viewtopic.php?f=1&t=3540- ответ от Rafael-я
Вот только проблема:
Объявлена переменная типа LIST с именем ?List
в переменную ?List динамически попадает информация сформированная сторонним классом.
Как получить значение определённого элемента переменной в сформированной структуре LIST переменной ?List
Выражение LOC:CurrentValue = WHAT(?List,1) вызывает ошибку: "No matching prototype available"
Пожалуйста, подскажите решение.
Вот только проблема:
Объявлена переменная типа LIST с именем ?List
Код: Выделить всё
WINDOW WINDOW('Window'),CENTER,GRAY,IMM,SYSTEM,MAX,ALRT(F5Key),TOOLBOX, DOUBLE
LIST,AT(10,100),USE(?List),VSCROLL
END
Как получить значение определённого элемента переменной в сформированной структуре LIST переменной ?List
Выражение LOC:CurrentValue = WHAT(?List,1) вызывает ошибку: "No matching prototype available"
Пожалуйста, подскажите решение.
С Уважением, Developer
- Игорь Столяров
- Ветеран движения
- Сообщения: 7375
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
List Data to String Parsing
Я возьму на себя смелось ответить на это по пунктам …Developer писал(а): ↑11 Сентябрь 2018, 21:40LOC:CurrentValue = WHAT(?List,1)
1. Вообще, конечно, должно быть понимание, что ?LIST - это просто номер интерфейсного элемента внутри WINDOW …
И к нему нельзя применять операции для работы с структурированными типами данных.
2. Обязательным параметром LIST, является FROM - источник данных для списка, которого в Вашем примере просто нет.
Код: Выделить всё
LIST,AT(80,0,20,20),USE(?List),FROM(MyQUEUE),FORMAT('5C~List~15L~Box~')
Код: Выделить всё
LOC:CurrentValue = WHAT(MyQUEUE,1)
LOC:CurrentValue = WHAT(?List{Prop:From},1)
Ранее я показал в примере, как получить параметры самого "ящика" по его экранной метке ?List.
Kreator рассказал, как получить / изменять информацию об элементах содержимого структуры LIST.
Но это - две большие разницы … Совсем.
За теми кто отстал - не возвращаться. (С) Кодекс
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
List Data to String Parsing
Подозреваю, задача нетривиальная. Формат этого листа известен? От формата зависит содержимое очереди (отдельные переменные для цветов, стилей). Надо ещё парсить формат листа.
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
List Data to String Parsing
А если ещё порядок элементов листа не совпадает с порядком элементов очереди?
We are hard at work… for you.
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
List Data to String Parsing
Так вот неправильно ни разу, и даже не скомпилируется.Игорь Столяров писал(а): ↑12 Сентябрь 2018, 6:24 Так вот, правильно будет:Код: Выделить всё
LOC:CurrentValue = WHAT(MyQUEUE,1) LOC:CurrentValue = WHAT(?List{Prop:From},1)
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7375
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
List Data to String Parsing
Так вот, HeaderValue = ?List{PROPLIST:Header, Loc:xCount} - работает, но с помощью ?List{PROPLIST:XXX, XXX} без проблем получаем свойства (атрибуты) элементов ?List, а необходимо получить значение содержимого элементов ?List.
С Уважением, Developer
-
- ✯ Ветеран ✯
- Сообщения: 4983
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
List Data to String Parsing
Свойство "Write-only". И, похоже, нет путей получить очередь только зная контрол.
Видимо, придётся покопать в направлении стороннего класса.
We are hard at work… for you.