"связка" пользовательских блоков

В данный форуме Вы можете создавать темы посвящённые расширению функционала программы или сайта. После рассмотрения Ваше предложение будет перенесено в соответствующее место
Ответить
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

все известна проблема лишнего хлама в блоках пользователя, а если не хлама, то проблематичность разделения большого кода на маленькие блоки.
Возникла такая идея.
Вопрос к [ref=#00aa00]support[/ref], можно ли сделать такую вещь как "привязывание" (не знаю как правильней назвать) блоков друг к другу.
смысл такой: привязанные блоки получают индекс переменной
screenshot_18-10-23_09-22-31.png
такой же как у основного блока.

можно будет разбивать большие блоки на отдельные части в случае когда не подходит вариант "использовать в проекте один раз"
а наоборот нужно будет много копий с разными именами переменной.

надеюсь идею донёс и она реализуема :wizard:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
kalobyte
Лейтенант
Сообщения: 422
Зарегистрирован: 22 окт 2016, 14:22

"связка" пользовательских блоков

Сообщение kalobyte »

я тоже думал о чем-то таком
например сделать какие-то макросы, типа если блок а используется, то в блоке б использовать только часть кода, а другая часть уже есть в блоке а
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

"связка" пользовательских блоков

Сообщение Dev1 »

Тут больше проблема в самой структуре программы. Я так понимаю все базовое зашито в одном файле. А лучше было бы каждый блок по отдельности в своей папке и в своей категории. Например как в HiAsm... Там каждый элемент(блок) состоит из файл конфигурации, файла исполняемого(код) и иконка для панели выбора. Из программы можно каждый блок редактировать конфигурацию и по отдельности код. Можно добавь входа, выхода, доп свойства, изменять код на свое усмотрение и получается элемент под ваши нужды.
Пример обычной кнопки:
[spoiler]
hiasm.jpg
[/spoiler]
Файл INI
[spoiler]

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

[About]
Version=1.0
Author=Dilma

[Type]
Class=WinElement
Info=Кнопка с картинкой
Inherit=WinControl
Interfaces=ControlManager

[Edit]
Class=Button
Caption=Caption
Color=Color

[Property]
Width= |1|55
Height= |1|20
Frame=Показывать рамку|4|0|True,False
FrameColor=Цвет рамки|8|clGray
Caption=Нaдпиcь нa кнoпке|2|Push
Data=Дaнныe, выдaвaeмыe в пoтoк coбытиeм onClick|3
Flat=Вид кнопки|14|0|True,False
+@Bitmap=Определяет картинку по умолчанию|11|

[Methods]
onClick=Сoбытиe пpoиcxoдит вcякий paз пpи нaжaтии нa кнoпкy и выдает в поток значение свойства Data, если оно было задано ARG(Data)|2|
doCaption=Уcтaнaвливaeт надпись на кнопке|1|
[/spoiler]
Файл с кодом не буду приводить, думаю и так понятно о чем речь. :senile:
Подобная структура избавляет от пользовательских блоков и от лишнего хлама в коде. :fie:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

[ref]Dev1[/ref], тут уж не до жиру. хотя бы ради удобства, чтоб не городить блоки из кучи входов/выходов.
если программа при компиляции каждый раз назначает переменным разные индексы, почему бы указанным блокам не брать
индекс от другого.
это уже намного упростило бы создание блоков :wizard:
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

"связка" пользовательских блоков

Сообщение Dev1 »

Про эти дубли еще на старом форуме много говорили, но пока без изменений. Я предложил(тихо свистнул и ушел...) другой подход к решению многих проблем. Но это скорее всего практически новая программа. А так предложения были разные, уже не помню что именно предлагали, да и Сергей вроде отвечал. :senile:
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

[ref]Dev1[/ref], тема не совсем про дубли.
про возможность разнесения кусков кода принадлежащему какому то одному устройству.
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

"связка" пользовательских блоков

Сообщение Naladchik »

pan писал(а): 23 окт 2018, 09:27...то проблематичность разделения большого кода на маленькие блоки...
pan писал(а): 23 окт 2018, 17:31про возможность разнесения кусков кода принадлежащему какому то одному устройству.
Все, кто пробовал писать раздельные блоки, натыкались на проблему с передачей значения переменной из одного блока в другой.
Нашел на такое решение (для кого то может и очевидное, но я об этом не знал).
1. Все внутренние переменные, необходимые для взаимодействия блоков друг с другом декларируются в начальном блоке, ставится галка "Разрешено использовать в проекте только один раз". (Так как "один раз" то ID переменным не присваивается).
2. В последующих блоках, где нужно взаимодействие с другими блоками вставляются имена переменных, задекларированные в начальном блоке.
3. Так как в последующих блоках эти переменные уже не декларируются (задекларированы ранее) то, соответственно, ID им также не присваивается.
4. Profit. Последующие блоки используются столько раз, сколько нужно. Можно получить систему блоков, использующих один набор переменных.
test.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
Аватара пользователя
Андрей
Рядовой
Сообщения: 31
Зарегистрирован: 11 янв 2018, 19:32

"связка" пользовательских блоков

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

Naladchik писал(а): 26 окт 2018, 11:58Нашел на такое решение
Так такое решение и ежу понятно)))
В основном блоке создаем переменную, и потом во всей программе и в других блоках ее используем!
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

[ref]Naladchik[/ref],
это и так известно.
а вот когда нужно несколько экземпляров основных блоков ..
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

"связка" пользовательских блоков

Сообщение Naladchik »

Андрей писал(а): 26 окт 2018, 13:08Так такое решение и ежу понятно)))
Значит я даже до ежа не дотягиваю, так как такой вариант только сегодня обнаружил.
pan писал(а): 26 окт 2018, 13:22а вот когда нужно несколько экземпляров основных блоков ..
тогда декларируется не переменная а массив и в последующих блоках индекс переменной в массиве задается через параметры пользователя.
test_array.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64. FLProg Portable.
Изображение
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

это было предложено для удобства многих других пользователей.
и для того, что бы код в проектах был более читаем.
может еще кто-то по другому обходит это. х.з

сам я давно буковками пишу..
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

"связка" пользовательских блоков

Сообщение Naladchik »

pan писал(а): 26 окт 2018, 15:35это было предложено для удобства многих других пользователей.
Чем мой вариант не удобен? какие недостатки?
pan писал(а): 26 окт 2018, 15:35и для того, что бы код в проектах был более читаем.
Почему Вы считаете что в Вашем случае с "привязками" код будет более читабелен чем в моем с индексами, в чем разница?
[spoiler]int value[ 2 ]; // основной блок, где 2 это количество экземпляров "второстепенных" блоков

int In_138513001_1;
int out_93054384_1;
int out_93054384_2;
int In_138513001_2;
int _gtv1; //1_value_out
int _gtv2; //2_value_out
void setup()
{
}
void loop()
{
//Плата:1
In_138513001_1 = 5; // 1-й экземпляр блока In, индекс 0
value [ 0 ] = In_138513001_1 ;

out_93054384_1 = value [ 0 ] ; // 1-й экземпляр блока Out, индекс 0
_gtv1 = out_93054384_1;

In_138513001_2 = 10; // 2-й экземпляр блока In, индекс 1
value [ 1 ] = In_138513001_2 ;

out_93054384_2 = value [ 1 ] ; // 2-й экземпляр блока Out, индекс 1
_gtv2 = out_93054384_2;

}[/spoiler]
Win10-64. FLProg Portable.
Изображение
pan
Полковник
Сообщения: 2860
Зарегистрирован: 13 апр 2017, 11:57
Имя: noname

"связка" пользовательских блоков

Сообщение pan »

я не собираюсь дискуссировать на тему что и куго лучше.
тема была про другое.
что б это было штатно.
не придумывать костыли.
не править код при "другом" количестве блоков" чем вы предусмотрели.

и это было предложение в новый функционал. и судя по всему вы против такой идеи, либо надо было вас писать сюда делимся опытом
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

"связка" пользовательских блоков

Сообщение Naladchik »

[ref=#ff8000]pan[/ref]
и все таки есть пару вопросов, отписал в личку.
Win10-64. FLProg Portable.
Изображение
Ответить

Вернуться в «Новые»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость