Zireael пишет:
Я уже давал пример, где 3 программы связываются с другой, при этом для каждой программы выделен свой массив.
Это я уже знаю, но это не актиально и то, что я писал вышел. Теперь я понял, что лучше сделать по другому.
Проблема была в том, что текст из буфер брался от всех программа и одновременно добавлялся в буфер параллельно, но теперь я знаю как решить эту проблему.
Как сделать такую модель(я покажу как это вижу я):
В буфер главной программы в диалог пишется текст(при запуске программы он именно такой по дефолту):
Для примера (Отобразить) Цитата:
Main_Program|Editing_Rights;
Program_1|Function_1: 0;
Program_2|Function_1: 0;
где Main_Program, Program_1, Program_2 к какой программе относится, имеет значение константы(статическое) и не изменяется, но должно это читаться;
где Editing_Rights - это права на редактирование для данной программы, имеет знрачения 0,1,2.
0 - означает, что редактирование разрешено только для главной программы.
1 - означает, что редактирование разрешено только для первой exe программы.
2 - означает, что редактирование разрешено только для второй exe программы.
Где Function_1 - это значение функции. Имеет так же 2 значения:
0 - функция отключена.
1 - функция включена.
Принцип работы основан не на параллельном редактировании,
а на последовательном, что гораздо лучше.
ПРИНЦИП работы:
Как я и говорил при запуске в буфер пишется дефолтный текст, но не такой который выше, это для примера, а вписывается такой текст:
Текст в буфер при запуске главного (Отобразить) Цитата:
Main_Program|0;
Program_1|0;
Program_2|0;
PS: Забыл указать, что в диалоге должны 2 кнопки "Получить окно1" и "Получить окно2".
При нажатии на "Получить окно1".Как мы уже знаем, что редактирование имеет значение "0", значит можно редактировать только главной программе, следовательно она пишет в буфер текст для Program_1 вместо "0" ставит "1", а уже потом для Main_Program вместо "0" ставит "1". Так как у каждой программы(Main_Program, Program_1, Program_2) стоит таймер, определяющий какая цифра стоит в Main_Program, то в зависимости от положения цифры можно будет писать тот или иной текст в буфер, а потом переключать "Управление редактированием для программ"(ту саму переменную, что бы давать управление другой программе).
Если всё правильно сделано должен выйти текст, когда нажали кнопку "Получить окно1"
Текст в буфер при нажатии на кнопку "Получить окно1" (Отобразить) Цитата:
/*
Сначала проверяется у каждой программы в реально времени какая цифра стоит в
Main_Program, если 0, то редактирование разрешено для Main_Program, если 1, то для Program_1, если 2, то для Program_2
Далее в зависимости для КАКОЙ программы разрешено редактирование, то ей можно изменять буфер:
Путём получения текста с этого буфера заменяет фрагмент текста, например, "Function: 0" на "Function: 1"
*/
Main_Program|1;
Program_1|1;
Program_2|0;
(Добавление)
Простым языком: буфер изменяется последовательно, последовательно от каждой программы.
(Добавление)
Парсинг не исключен.
(Добавление)
Хотел дополнить, что в начале запуска Main_Program не просто так в значении 0, а будет это до тех пор, пока кнопка не будет нажата "Получить окно1" или втрая, а уже потом изменит на 1...2...и снова 0.