Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/40: Рейтинг темы: голосов - 40, средняя оценка - 4.70
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554

Указатель указателя или Наследовать

14.08.2020, 12:42. Показов 9502. Ответов 111
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здесь
я вот тоже подумала (про своих баранов) - если у меня 2 thread'a (gui и secondary) и в secondary задан классом (как здесь), в котором работает функция, которая отдаёт массив в класс, ход обработки массива методом этого (куда отдаёт) класса - отразить в gui хочется... !?!
вот передаю указатель на Form из класса gui в класс secondary worker thread... (как по примеру #222)
а дальше?..
указатель на указатель параметром в др класс передавать? (что-то не проходит)?
передаю банально:
C++
1
2
3
4
5
6
public:
    const Vector<Vector<String>> & m_vUrls;
    MyAppWindow* m_pw;
    
    // Constructor  
    loadV(const Vector<Vector<String>>& spisok, MyAppWindow* m_pw);
ну или **
как не пытаюсь передать указатель на указатель или тот же указатель на gui в др класс - выдаёт, что инициализация gui возможна только в первичном потоке...
- а ведь только передать хочу указатель на то, что уже было проинициализировано в первичном потоке... т.е. на сам gui
ИЛИ ???
может, мне лучше наследовать 2-й класс (loadV) от класса worker и в нём поле "принятый из gui указатель" сделать protected?
(чтобы не заморачиваться передачей указателя на gui и уж тем более транслированием в gui поток из класса, куда передаём массив после его сбора в классе worker - который во вторично потоке от gui)...
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2020, 12:42
Ответы с готовыми решениями:

Сохранить адрес из указателя в другой указатель, а потом первый указатель удалить
Добрый день всем. Возмём простейший пример: #include &lt;iostream&gt; using namespace std; int main() { int* p1 = new...

Передача умного указателя в функцию принимающую указатель на указатель
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

111
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
19.08.2020, 23:16
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от JeyCi Посмотреть сообщение
хотя она всё-таки анонимная функция(-объект)
Функтор - это общее понятие.
Частные случаи функтора в С++:
* Лямбда
* Указатель\ссылка на функцию
* Класс с переопределенным оператором ()
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
20.08.2020, 10:42  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
захватить [this] в workerthread() попробую завтра... чтобы попробовать в лямбде поработать с классом loadV...
это пока сложновато для меня... да и усложнения, наверно, не принесут доп. удобств в кодировании, а в сопровождении тем более -- если делать такой ход конём - функтор в конструкторе loadV подрядить... пока не вижу ни возможности (ни обоснования её отсутствия ) ... думается всё-таки, что в таком варианте (1 рабочая абстракция с 2мя потоками - 1 для view и 1 для логики) - функтор - это лишнее усложнение будет
===
P.S.
Цитата Сообщение от JeyCi Посмотреть сообщение
беру в оборот её инстанс => могу(должна) использовать его
поправила #36 - передала параметром pointer на экземпляр того MyAppWindow, в котором надо отразить в листбокс (т.е. текущий рабочий настоящий объект)... (по желанию можно pointer на MyAppWindow упростить до pointer'a на ArrayCtrl)...
абстракции с функтором ещё буду учиться писать - если класс MyAppWindow всё-таки разрастётся настолько, что, действительно, потребует быть декомпозированным...
P.P.S.
пока во вложении как-то так
MyAppWindow::WorkerThread
C++
1
2
3
4
5
6
7
8
9
10
11
12
void MyAppWindow::WorkerThread ( )
{   
    // ЗДЕСЬ из др класса вернули вектор... упрощённо:
    const Vector<String>&  MyVector = {"A","B","C","D"};
    loadV d(MyVector);
    ArrayCtrl* pl=&arrV;
    d.showDone(this);   // тестово обработка массива - доступ есть...
        
    PostCallback([=] { 
        btnLoad.Enable();
    }); 
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void loadV::showDone(MyAppWindow* w) { 
    MyAppWindow* m_w=w;
    size_t n=m_spisok.GetCount(); 
    for(int i = 0; i < n; i++) {
        String s=m_spisok[i];
        {
            GuiLock __; 
            Ctrl::Call([=] {                
                std::function<void(MyAppWindow*, String)> f = &MyAppWindow::AddItem;            
                PromptOK(s);
                f(w, s);        
            });
        }       
    }
}
с "фэн-шуем" ещё на вы ...
думаю, на практике приложится...
ну хоть с абстракцией и объектом, созданным ей, разобрались - где, что и как...
функтор впридачу
Вложения
Тип файла: zip mv_Without_Decompose_With_Functor.zip (4.2 Кб, 1 просмотров)
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
20.08.2020, 10:50  [ТС]
за пример - спасибо...
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,349
20.08.2020, 11:42
Qt. Программа: цыплята (20 шт - 20 потоков) с разной скоростью клюют по зёрнышку с тарелки. На тарелке 100 зернышек. Когда тарелка пустеет, цыплята зовут маму, она приходит и наполняет тарелку. 20 потоков шлют сигналы в окно, и в окне отображается процесс поедания зёрен. Это то, что вы хотите?
Миниатюры
Указатель указателя или Наследовать  
Вложения
Тип файла: zip 123.zip (5.11 Мб, 3 просмотров)
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
20.08.2020, 16:42  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Qt. Программа: цыплята (20 шт - 20 потоков)
alexu_007, спасибо, я уже поняла, что самый простой путь упрощения - смена Фреймворка на Qt (для Event-driven Architecture разработки)... но пока основы познавать - всё равно где - даже больше вопросов можно покрутить на более простом Фреймворке - ради практики и знакомства с основами...


Добавлено через 9 минут
Цитата Сообщение от alexu_007 Посмотреть сообщение
Когда тарелка пустеет, цыплята зовут маму, она приходит и наполняет тарелку. 20 потоков шлют сигналы в окно, и в окне отображается процесс поедания зёрен. Это то, что вы хотите?
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...

Не по теме:

вобщем, чтобы цыплята ещё сообщали, если у них несварение желудка или просто зёрна несъедобные...
и чтобы по команде переставали есть все сразу...
сам по себе процесс поедания не интересует - лишь результат... ;) async устроит с его .get()


Добавлено через 11 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
потом то, что от consumer'ов (~600 шт),
хотя на 2ядра cpu - многовато потоков... посмотрю - если consumer'ов удастся настроить в основном на работу с кучей, то пусть бы там каждый и ковырялся в своём участке динамически выделенной памяти... надо подумать ещё
p.s.
(пока на распутье по-др нюансу [даже не этой ветки] - поэтому к этому тз ещё вернусь потом)

Добавлено через 3 часа 0 минут
Цитата Сообщение от JeyCi Посмотреть сообщение
1 producer и будет несколько consumer'ов (в ооочень будущем)...
через ConditionVariable...
или Semaphores (и для WindowsXP)
0
415 / 150 / 48
Регистрация: 02.06.2016
Сообщений: 364
20.08.2020, 21:15
Лучший ответ Сообщение было отмечено JeyCi как решение

Решение

C++
1
2
3
4
5
6
7
8
void loadV::showDone ( Function < void ( String ) > f )
{
 
    int n = m_spisok.GetCount();
 
    for ( int i = 0; i < n; i++ )
        f ( m_spisok[i] );
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void MyAppWindow::AddItem ( String strItem )
{
    GuiLock __;
    
    PromptOK ( strItem );   
    arrV.Add ( ~strItem );  // The ~ operator calls the object's GetData() function
    //strItem <<= Null;     // Manually clear the item
}
...
void MyAppWindow::WorkerThread ( )
{
    // ЗДЕСЬ из др класса вернули вектор... упрощённо:
    const Vector<String>&  MyVector = {"A", "B", "C", "D"};
    loadV d ( MyVector );
 
    //Метод текущего класса можем передать с помощью макроса без лямбды:
    d.showDone ( THISFN ( AddItem ) );  // тестово обработка массива - доступ есть...
    
    PostCallback ( [=]
    {
        btnLoad.Enable();
    } );
}
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
21.08.2020, 16:57  [ТС]
Цитата Сообщение от GoshaM Посмотреть сообщение
//Метод текущего класса можем передать с помощью макроса без лямбды:
d.showDone ( THISFN ( AddItem ) );
вот, действительно, надо зннать, где искать
Despide the power of C++11, there are still situations where it is better to put the callable code into member function. C++11 lamda syntax can be tedious in that case. MemFn template function and THISFN serve to reduce typing overhead.
... как читать, и как использовать...
Благодарю! именно там и хотела GuiLock использовать по логике, где вы его указали...
(слова коллбэки и макросы для меня ещё звучат страшно и по-новому - оттого и читаю по-диагонали в надежде найти знакомые для моей незрелой в ооп логики вырианты - вот и не обращаю внимание на главное, когда оно новое)

Добавлено через 12 минут
P.S.
кстати с таким макросом формулировка "Callback Hell", вероятно, отпадает сама собой... THISFN - красиво и локанично
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
22.08.2020, 10:04  [ТС]
Оптимальный путь новичка в мире C++
(подборка книг)
автор №5 - "любитель разрывать зависимости"
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
22.08.2020, 18:50  [ТС]
для инфо -
Особенности Qt: слоты и сигналы, описание QObject и QApplication, виды окон и т.д.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
28.08.2020, 07:27  [ТС]
и дочитать...
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,349
28.08.2020, 11:05
Цитата Сообщение от JeyCi Посмотреть сообщение
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения, а форма (gui) это отображала. Теперь у вас как-то всё немного усложнилось, так что вас стало трудно понять. Я обычно разбиваю задачу на части, и решаю по частям (не знаю, может гуру программирования сразу пишут код от начала до конца?). То есть как я понял вашу задачу:

1. Запустить несколько (много) потоков
2. Отобразить ход выполнения потоков на форме
3. По нажатию кнопки останавливать процессы (ставить на паузу)

Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее.

Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один.

Добавлено через 1 минуту
Цитата Сообщение от JeyCi Посмотреть сообщение
не совсем...
возможно, 1 producer и будет несколько consumer'ов (в ооочень будущем)... пока producer'a просто сливать в txt... consumer'ы параллельно парсят и льют куда скажешь (txt или db или даже просто msgBox общее количество байт или потоков обработанных... ну и в gui gridview)...
ну и обслуживающие всё это дело классы...
в окно можно то, что от producer'а пока... потом то, что от consumer'ов (~600 шт), но главное - ключевые Exception'ы (даже по каждому row потоку, если будут)... и общую кнопку остановить всё и всех...
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения, а форма (gui) это отображала. Теперь у вас как-то всё немного усложнилось, так что вас стало трудно понять. Я обычно разбиваю задачу на части, и решаю по частям (не знаю, может гуру программирования сразу пишут код от начала до конца?). То есть как я понял вашу задачу:

1. Запустить несколько (много) потоков
2. Отобразить ход выполнения каждого потока на форме
3. По нажатию кнопки останавливать процессы (ставить на паузу)

Вот в такой последовательности я бы и действовал. Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать. Нет смысла заниматься остановкой процессов, если вы не видите их работу, и не можете проконтролировать старт/стоп. Ну и так далее.

Начал бы я с одного потока, потом можно два, потом много. Нет смысла сразу бросаться в омут многих потоков (и получать множество ошибок), пока не отлажен хоть один.
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
28.08.2020, 21:01  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Вначале вы вроде хотели, что-бы поток(и) слал информацию о процессе выполнения,... Теперь у вас как-то всё немного усложнилось, ... Я обычно разбиваю задачу на части
так же... поэтому понятное дело - усложняется со временем...
Цитата Сообщение от alexu_007 Посмотреть сообщение
1. Запустить несколько (много) потоков
вы приложили пример откомпилированный, поэтому я НЕ вижу исходников => я не знаю, какова была ваша реализация цыплят... и были ли цыплята - потоками-consumer'ами?... и была ли их мама потоком-producer'ом?... и, если да, то как была настроена синхронизация? (вероятно, 1 мьютекс и 1 condition variable)?... или вообще др. механизм?...
а вообще очень много потоков лучше в thread-pool'e запускать (уже обсудили это на моей прежней ветке)...
===
Цитата Сообщение от alexu_007 Посмотреть сообщение
Нет смысла сразу бросаться в омут многих потоков
пока (уже) не в потоках проблема, а в общей иерархии классов (да и нужна ли иерархия...)... поэтому передали функтор - и то замечательно - асинхронная подгрузка member-method'ом налажена - уже шаг вперёд... кнопка bStopped пока нет - надеюсь, не будет шага назад... но о продолжении "линии жизни" рабочего потока ещё думаю... многое можно скинуть на сторону в др. классы... и даже др. потоки... сраслось бы всё общим планом в итоге всей архитектуры
===
Цитата Сообщение от alexu_007 Посмотреть сообщение
Нет смысла заниматься визуализацией потоков, если у вас не получается их запускать.
но запускать то, что пока не надо (или надо в др. виде) - тоже не comme il faut...
вот видела сегодня интересную ветку - Многопоточность и сигналы/слоты - про время жизни потока и способ его коммуникации с GUI (там линк есть)... странно оно всё как-то в Qt - переварить ещё надо
Thus, a developer who wishes to invoke slots in the new thread must use the worker-object approach; new slots should not be implemented directly into a subclassed QThread.
что за the worker-object approach?..
= пытаюсь прикинуть параллели с Event'ами в U++ ...
и для U++фреймворка - с кнопкой для bool &bStopped - пока только такой вариант передачи или захвата вижу... - по ссылке &

Добавлено через 5 минут
но голова пока забита "раскадровкой" подзадач по классам... 1 класс - 1 ответственность
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
29.08.2020, 11:07  [ТС]
Цитата Сообщение от JeyCi Посмотреть сообщение
worker-object approach?..
- здесь;
и здесь;
Два способа использования QThread
и там же совет:
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
смотри на обобщенные функторы Александреску, а в C++11 есть чудесные лямбда выражения.
глава 5
P.S.
споткнулась вчера об эту ветку (Function) - вариант
MySource(double data) : FuncSource(&Calc), data(data) {} // COMPILER ERROR
так и не заработал... наследование функторов как-то синтаксически не знаю, как выразить?.. (init по линку у меня не срабатывает)

Добавлено через 1 час 52 минуты
только если так (без ссылки на member-function, а лямбдой)
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <Core/Core.h>
 
using namespace Upp;
 
class FuncSource {
protected:
    Function <double(double)> function;
 
public:
    // Constructor of Parent - with functor as param
    FuncSource(Function <double(double)> function) : function(function) {}
    double f(double x)  {return function(x);}
};
 
class MySource : public FuncSource {
public:
    // Constructor of Child - with double data as param 
    MySource(double data) : FuncSource([=](double x) {return Calc(x);}), data(data) {} 
    
    double Calc(double x) {return x + data/10;}
    
private:
    double data;
 
};
 
CONSOLE_APP_MAIN
{       
    double d=10.0;
    MySource a(d);
    double b=a.Calc(5.0);
    Cout()  << DblStr(b) <<  '\n';
}
0
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
30.08.2020, 21:27  [ТС]
и всё-таки класс Event<> и Gate в U++ ещё поковырять...
Цитата Сообщение от DrOffset Посмотреть сообщение
JeyCi, в общем случае - это не очень хорошая идея дергать GUI из другого потока напрямую, даже под локом. Лучше, когда библиотека дает возможность отправить "запрос" на изменение GUI. Т.е. в вашем поточном методе вы могли бы создать "событие" изменения GUI, и отправить его основному потоку. А тот уже когда это возможно и безопасно выполнил бы его на своей стороне. Тогда лочить GUI не пришлось бы, и проблемы бы вашей не возникло.
deadlock

Добавлено через 2 минуты
ProcessEvents
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,349
30.08.2020, 22:37
Допилил кнопки пауза и стоп, но работают нестабильно, иногда приложение вылетает с кодом 3 (не знаю что такое):
Вложения
Тип файла: zip deti.zip (547.8 Кб, 3 просмотров)
1
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
30.08.2020, 23:09
alexu_007, как минимум неверный тип соединения сигнала и слота и отсутствует синхронизация разделяемых ресурсов - массива и двух булевых переменных.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,349
30.08.2020, 23:26
А какая там нужна синхронизация? Потоки никак не зависят друг от друга, результаты вычислений не передаются и никак не используются. Вся задача - нарисовать циферку на экране. Включилась переменная (флаг) в true - поток даже не останавливается, только перестает генерить сигналы. Уж это действительно пауза. Потоки флаг не переключают. Почему там возникает аварийное завершение - я не понимаю.
0
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
30.08.2020, 23:51
Цитата Сообщение от alexu_007 Посмотреть сообщение
результаты вычислений не передаются и никак не используются.
Как же не передаются? Мама у вас работает в основном потоке с общим для всех с контейнером tarelka, а детки меняют его у себя. Контейнеру нужна синхронизация.

Тоже самое касается булевых переменных. У них изменение в основном потоке, и чтение во всех дочерних.
0
19506 / 10109 / 2463
Регистрация: 30.01.2014
Сообщений: 17,833
31.08.2020, 00:06
Вот, исправил очевидные недочеты. Код особо не менял, чтобы он был для вас узнаваем.

deti.zip
1
264 / 153 / 33
Регистрация: 29.06.2019
Сообщений: 1,554
31.08.2020, 18:15  [ТС]
?? вот всё-таки чисто технически:
если событие - это сигнал (отправляемый в GUI, например),
например макросом коллбэка, как в примере GoshaM...
слот (в Qt) надо настроить в GUI...
в U++ просто запускаем member-function от gui...
в C# "события - это сигналы, делегаты - это слоты"
=== И ОБРАТНО:
в Qt при обратном запуске сигнала (из gui в поток), например, смены флага isInterruptionRequested - на стороне workerthread'a надо настроить, полагаю, слот для его приёма и обработки... имхо
?? а в U++ если кнопкой запускаем Event в btnStopped смены флага isInterruptionRequested - как правильно по уму отловить в потоке? синхронизация через мьютекс?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2020, 18:15

Необходимость указателя на указатель
Добрый день. Не могу разобраться, подскажите пожалуйста для чего в нижеприведенном методе(занесение узлов в двоичное дерево) используется...

Разыменование указателя на указатель
в функцию передается указатель на указатель класса, что бы получить доступ к методам класса нужно разименовать указатель так ? MyClass...

Инкремент указателя на указатель
Добрый день!!! Ребят, подскажите пожалуста, как выполнить инкремент указателя на указатель. Программа аварийно завершается. Я так понимаю,...

Передача указателя на указатель в функцию
Вопрос к знатокам: Есть абстрактный класс(Symbol) и его производный (Cross). Создаю указатель этого абстрактного класса(Symbol *first) ,...

Передача в функцию указателя на указатель
Добавление нового элемента в начало списка: void Add_Beg(List **u, Data &amp;x) // Почему в 1 аргументе функции указатель на указатель? { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru