С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1

Многопоточность в VBA

01.07.2023, 15:39. Показов 6251. Ответов 102

Студворк — интернет-сервис помощи студентам
Почему VBA? Про VB в принципе уже все давно расписано и исследовано за десятки лет. На VBA тема менее популярна, по в принципе понятным причинам, по скольку, там она не сильно так уж и нужна. Мне также в ней нет особой необходимости, просто некоторый интерес прощупать эту тему с точки зрения "простого обывателя", на сколько далеко можно зайти и т.д.
Вообще, говоря, на VBA есть довольно простая и удобная не очень изящная возможность организовать "потоки" за счет запуска нескольких копий приложения, также можно делать на VBS.
Далее простой пример (в файле), назовем "Игра - Останови колобка если сможешь!" ). В примере все не очень оптимально, и нет какого-то полезного шаблона, но как мне кажется хорошо видно работу т.н. маршаллинга, его усточивую работу, даже при не очень, как бы правильной ситации. При запуске множества экземпляров Экселя и их одновременному обращению к одному и тому же объекту, все продолжает работать довольно устойчиво при том, что объектная модель отдельного Экселя "общается" со всеми в одном потоке или точнее из одного потока. Видимо маршаллинг все разруливает.
В данном примере, не мало важно, что рабоает пропуск ошибок и doevents. Если попытаться реализовать подобное с помощью win-api то с этим уже появляются некоторые проблеммки.. и бог весть еще с чем, а вот при работе разных экземпляров Эксель все очень просто.
Вложения
Тип файла: zip Колобок.zip (20.7 Кб, 28 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2023, 15:39
Ответы с готовыми решениями:

VBA → SSMS → VBA. Вызов хранимой процедуры SSMS из VBA с возвратом 2ух и более параметров
Приветствую! Учусь наполнять таблицу SQL из таблицы Excel. Беру таблицу в массив и построчно вызываю хранимку с передачей очередного...

Программа в VBA для проверки гипотез про равенство средних - VBA
В своё время прогулял лекции по VBA, а теперь жалею! Кто может помочь с написанием проги по проверке гипотез про равенство средних?

VBA и Oracle: stored procedure из VBA и сохранение текста в переменной
Добрый день, Кто-нибудь сталкивался с проблемой выполнения функции Oracle, т.н. Oracle stored procedure, и сохранением результата в...

102
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
01.07.2023, 20:24
Ты разделом не ошибся? Есть специальный раздел для VBA именно.
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
02.07.2023, 03:53  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Ты разделом не ошибся
Я пока не раскрыл всю тему, но она будет очень тесно касаться VB6
0
Эксперт по электронике
6528 / 3157 / 333
Регистрация: 28.10.2011
Сообщений: 12,401
Записей в блоге: 7
02.07.2023, 11:19
Цитата Сообщение от testuser2 Посмотреть сообщение
вот при работе разных экземпляров Эксель все очень просто.
Тогда это не многопоточность а многопроцессность. Накладных расходов гораздо больше, а производительность ниже.
Цитата Сообщение от testuser2 Посмотреть сообщение
Если попытаться реализовать подобное с помощью win-api то с этим уже появляются некоторые проблеммки.
Создание потоков функцией CreateThread()?

Я думаю что если нужна многопоточность, то имеет смысл перенести часть кода в dll написанную на ЯП с поддержкой многопоточности и в ней выполнять все что связано с потоками.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
02.07.2023, 11:27
Я вообще не понимаю зачем для VBA многопоточность. Но если что у The Trick'а есть много модулей и классов на эту тему.
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
02.07.2023, 15:05  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Тогда это не многопоточность а многопроцессность. Накладных расходов гораздо больше, а производительность ниже.
На самом деле эти расходы не существенны, тем более по современным меркам. Можно заметить, что висящий в памяти 8мб-ный Эксель не потребляет ни чего, при получении задачи он, он будет обрабатывать свою задачу с нормальным КПД. В данном случае выигрывает стабильность и удобство подхода. Если говорить о приведенном выше примере, это скорее стресс-тест, который при том показывает устойчивость комовской модели, с одного из ракурсов. Если говорить о какой-то реальной задаче, конечно там можно было организовать и обмен данными и пр. более эффектино.
Цитата Сообщение от locm Посмотреть сообщение
Я думаю что если нужна многопоточность, то имеет смысл перенести часть кода в dll написанную на ЯП с поддержкой многопоточности
Безусловно любую задачу можно решить, множеством путей, но в данном случае и нет как таковой серьезной задачи, а просто интерес исслеовать непопулярные возможности vba..
Цитата Сообщение от HackerVlad Посмотреть сообщение
Я вообще не понимаю зачем для VBA многопоточность.
Если говорить, в общем, это отдельная большая сфера, это же не только, скажем, какие-то мелко-оффисные рассчеты, но бывает речь о внушительных объемах данных, сам лично не сталкивался, но говорю, что это имеет место быть. Многопоточность таже не помешала бы и в таких вещах как какие-нибудь отдельные окошки, с какой-нибудь индикацией, статус-бары и пр..

Добавлено через 5 минут
Цитата Сообщение от locm Посмотреть сообщение
Создание потоков функцией CreateThread()?
Об этом, собственно, и пойдет речь.
Цитата Сообщение от HackerVlad Посмотреть сообщение
Но если что у The Trick'а есть много модулей и классов на эту тему.
Если бы ты сказал, что он еще не сделал, это было бы интересней ) Кстати, спасибо, за инструменты, tlb-шку сделал, рабоатет, не понятно, только с clsid-ом, его что каждый раз новый надо придумывать?
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
02.07.2023, 15:09
Цитата Сообщение от testuser2 Посмотреть сообщение
Если бы ты сказал, что он еще не сделал, это было бы интересней )
Приколист))) То что он не сделал, то мы делаем))) Я вот например сейчас делаю добавление текстового поля в редакторе реестра для навигации по дереву реестра, прям как в десятке чтобы было. Только в семёрке у себя)
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.07.2023, 12:43
Цитата Сообщение от testuser2 Посмотреть сообщение
Кстати, спасибо, за инструменты, tlb-шку сделал, рабоатет, не понятно, только с clsid-ом, его что каждый раз новый надо придумывать?
Последний раз редактировалось testuser2; Вчера в 15:09.
Да пожалуйста! Я рад, что у тебя всё получилось! Как придумывать UID для своей библиотеки я не знаю, поэтому я и беру чужие файлы, там ID всегда одинаковый сохраняется. Вопрос очень интересный кстати. Только The Trick знает ответ. Наверное есть специальная API-функция для генерации GUID для библиотеки.
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
03.07.2023, 17:37  [ТС]
Итак, чтож, пару выпущено много, пришло время и реальных дел! Многопоточный переводчик есть. Сейчас подготовлю вылжу файл и код.

Добавлено через 3 часа 28 минут
Цитата Сообщение от testuser2 Посмотреть сообщение
пришло время и реальных дел!
Сказать это и обос..
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
03.07.2023, 18:15  [ТС]
Короче вот эта адова хрень. То работатет то не работает только в 32бит. офисе. Случайно поймал момент когда она работатет и даже записал видео. Объекте HTMLDocument, для работы которого запускается отдельный процесс (типа WMI), добавляет немало глючности, может быть, что-то еще. Больше всего удрючает, что то что стабильно работало, может внезапно отказать, и вылезти неведомый и не понятный глюк.
Вложения
Тип файла: zip Переводчик3.zip (28.1 Кб, 4 просмотров)
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
03.07.2023, 18:26  [ТС]
Код (стандартный модуль)
Кликните здесь для просмотра всего текста
Visual Basic
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Option Explicit
 
Public Declare PtrSafe Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As LongPtr, ByVal dwMilliseconds As LongPtr) As Long
Public Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
'Private Declare PtrSafe Function CreateThread Lib "kernel32" (ByVal Quuncpt As Long, ByVal Niqneywbz As Long, ByVal Apf As LongPtr, Ssauemqf As Long, ByVal Hrjaqlfym As Long, Patuk As Long) As LongPtr
Public Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As LongPtr) As Long
'Public Declare Function TerminateThread Lib "kernel32.dll" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal milliseconds As LongPtr) 'MS Office 64 Bit
Private Declare PtrSafe Function SetTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr
Private Declare PtrSafe Function KillTimer Lib "user32" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long
 
Type tpInput
    st As String 'входная строка
    ln As String 'целевой язык
End Type
Type tpResult
    st As String 'выходная строка
    nm As Long   'порядковый номер, присвоенный потоку
    ok As Long   'флаг готовности результата
End Type
 
Public Const WAIT_TIMEOUT As Long = &H102&
Public hThreads&(1)
Dim arrIn(1) As tpInput, arrOut(1) As tpResult
 
Sub Перевод()
    Dim s$
    s = Range("B2").Value
    On Error Resume Next
    Range("B4:B5").Value = MTTranslate(s)
End Sub
 
Function MTTranslate(s As String) As String()
    Dim tmp$(1 To 2, 1 To 1)
    Static init
    Static XMLHTTPS As MSXML2.ServerXMLHTTP60
    Static HTML As Object 'HTMLDocument
    If Len(s) = 0 Then Exit Function
    If Not init Then
        Set XMLHTTPS = New MSXML2.ServerXMLHTTP60
        init = True
        Set HTML = CreateObject("HTMLFile") 'New HTMLDocument
    End If
    On Error Resume Next
    
    arrOut(0).nm = 0
    arrIn(0).st = s
    arrIn(0).ln = "en"
    arrOut(1).nm = 1
    arrIn(1).st = s
    arrIn(1).ln = "zh-CN" '"es"
        
'    hThreads(0) = CreateThread(ByVal 0&, 0&, AddressOf Thread1, ByVal VarPtr(arrOut(0)), 0, 0)
    start1
    Sleep 100
    Application.OnTime Now, "start2" 'так тоже работает но не в UDF
'    SetTimer 0, 0, 200, AddressOf TimerProc
    
    Do While WaitForSingleObject(hThreads(0), 200) = WAIT_TIMEOUT
        DoEvents
    Loop
    Do While WaitForSingleObject(hThreads(1), 200) = WAIT_TIMEOUT
        DoEvents
    Loop
    Do Until arrOut(0).ok And arrOut(1).ok
        Sleep 50
        DoEvents
    Loop
    
    arrOut(0).ok = 0
    arrOut(1).ok = 0
    
    CloseHandle hThreads(0)
    CloseHandle hThreads(1)
 
'    Debug.Print arrOut(0).st
'    Debug.Print arrOut(1).st
    tmp(1, 1) = arrOut(0).st
    tmp(2, 1) = arrOut(1).st
    MTTranslate = tmp
End Function
 
Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    KillTimer 0, uElapse
    DoEvents
    start2
End Sub
'TerminateThread hThreads(0), ByVal 0&
Sub start1()
    hThreads(0) = CreateThread(ByVal 0&, 0&, AddressOf Thread1, ByVal VarPtr(arrOut(0)), 0, 0)
End Sub
 
Sub start2()
    hThreads(1) = CreateThread(ByVal 0&, 0&, AddressOf Thread1, ByVal VarPtr(arrOut(1)), 0, 0)
End Sub
 
Private Sub Thread1(ByRef result As tpResult)
    CoInitialize ByVal 0&
    On Error Resume Next
      
    result.st = GOOGLETRANSLATE(arrIn(result.nm).st, "ru", arrIn(result.nm).ln)
    
    If Err.Number Then Debug.Print Err.Description
    result.ok = 1
    CoUninitialize
'    CloseHandle hThreads(num) 'хэндл можно закрыать в самом потоке
End Sub


Модуль переводчика.
Кликните здесь для просмотра всего текста
Visual Basic
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
34
35
36
37
38
39
40
41
Option Explicit
 
Public Function GOOGLETRANSLATE(text As String, source_language As String, target_language As String) As String
    Dim URL As String, XMLHTTPS As MSXML2.ServerXMLHTTP60
    Dim HTML As Object, HTMLDc As HTMLDocument, Class As HTMLDivElement
    On Error Resume Next
    Set XMLHTTPS = New MSXML2.ServerXMLHTTP60
    Set HTML = New HTMLDocument
    
    URL = "https://translate.google.com/m?sl=" & source_language & "&tl=" & target_language & "&hl=en&ie=UTF-8&q=" & RussianStringToURLEncode$(text)
    XMLHTTPS.Open "GET", URL, False
    XMLHTTPS.setTimeouts 1000000, 1000000, 1000000, 1000000
    XMLHTTPS.setRequestHeader "User-Agent", "Mozilla/5.0 (compatible;MSIE 6.0; WindowsNT 10.0))"
    XMLHTTPS.send ""
    HTML.Open
    HTML.write XMLHTTPS.responseText
    HTML.Close
    
    Set HTMLDc = HTML
    Set Class = HTMLDc.getElementsByClassName("result-container")(0)
    If Not Class Is Nothing Then
        GOOGLETRANSLATE = Class.innerText
    End If
    Set Class = Nothing
    Set HTML = Nothing
    Set HTMLDc = Nothing
    Set XMLHTTPS = Nothing
End Function
 
Function RussianStringToURLEncode(ByVal txt As String) As String
    Dim i%, l$, t$
    For i = 1 To Len(txt)
        l = Mid$(txt, i, 1)
        Select Case AscW(l)
        Case Is > 256: t = "%" & Hex(AscW(l) \ 64 + 192) & "%" & Hex(8 * 16 + AscW(l) Mod 64)
        Case 32: t = "+"
        Case Else: t = l
        End Select
        RussianStringToURLEncode = RussianStringToURLEncode & t
    Next
End Function


Добавлено через 5 минут
Забыл добавить описание, там должен текст переводится на два языка одновременно в 2 потоках - в этом весь смысл примера.
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
03.07.2023, 18:39  [ТС]
Самую главную запчасть то забыл, без нее не поедет в любом случае
Вложения
Тип файла: zip VBMultithreadHlp.zip (532 байт, 9 просмотров)
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.07.2023, 20:45
Ну с потоками это всегда очень сложно. Подробно описано и без глюков это только у The Trick'а!

Добавлено через 1 минуту
testuser2, Я к сожалению, не имею возможности запустить твой код и проверить так как у меня старая версия офиса. Там не поддерживает LongPtr даже.
0
03.07.2023, 20:54

Не по теме:

Цитата Сообщение от HackerVlad Посмотреть сообщение
Ну с потоками это всегда очень сложно.
Просто нужно пользоваться инструментами их поддерживающими.
Я выше про dll не зря написал.

0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
03.07.2023, 21:07
locm, можно и без DLL спокойно делать многопоточность. The Trick уже так делал, здесь на этом форуме есть примеры.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
03.07.2023, 22:51
В VBA стабильно только многопоточность в разных процессах будет работать.
2
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
04.07.2023, 07:34  [ТС]
Цитата Сообщение от HackerVlad Посмотреть сообщение
Я к сожалению, не имею возможности запустить твой код и проверить так как у меня старая версия офиса.
Там только убрать PtrSafe и заменит все LongPtr на Long. Сейчас проверил, на 2007 офисе работатет.
Заметил один нюанс. Если вносишь какие-то правки в код то он перестает работать. А если выполнить рекомпиляцию (Debug->CompileVBAProject или запустить какую-нибудь процедуру-пустышку) и после этого перезагрузить документ с сохранением, все работает нормально. В этом заложен ящик Пандоры - когда ты пытаешься исправить причину, но все время создаешь ее по новой. Если вносишь правки, нужно обязательно рекомпилировать и перезапусить док. Не знаю что там происходит при перезапуске дока, но факт, что работает только так. Также, ели скопировал файл, обязательно произойдет ошибка, но при следующем запуске начнет работать, потому, что произодет божественная "рекомпиляция"
Добавил кнопку со следующим кодом.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub СтартРекомпиляции()
    Recompil 0
End Sub
Sub Recompil(var&)
    If var Then
'        Debug.Print "Завершение рекомпиляции"
        Exit Sub
    End If
    Application.OnTime Now + TimeSerial(0, 0, 2), "'Recompil 1&'"
    ThisWorkbook.Close 1
End Sub
Версия Office 2007 compatible во вложении. При первом использовании обязательно нужно выполнить "рекомпиляцию"
Вложения
Тип файла: zip Переводчик4.zip (26.9 Кб, 6 просмотров)
0
1384 / 838 / 91
Регистрация: 08.02.2017
Сообщений: 3,517
Записей в блоге: 1
04.07.2023, 11:50  [ТС]
А многопоточки-то и нету. Отрабатывает один следом другой. И все жутко не стабильно. Трик зря не скажет. Выше-описанные меры - мертвому припарка.
Code
1
2
3
4
5
6
7
8
b 62826,45 
e 62826,92 
b 62827,17 
e 62827,34 
b 62862,57 
e 62863,05 
b 62863,16 
e 62863,47
Хотя ранее я экспериментировал с библиотекой, склепаной наспех на VB6 и с помощью нее две процедуры, взятых из VBA-модуля работали одновременно, но там использовались только простые типы данных и не было инициализации в COM..

Добавлено через 6 минут
Цитата Сообщение от locm Посмотреть сообщение
Я думаю что если нужна многопоточность, то имеет смысл перенести часть кода в dll написанную на ЯП с поддержкой многопоточности и в ней выполнять все что связано с потоками.
Главным образом интересно, если такая dll сможет выполнять процедуры взятые из VBA в параллельных потоках. С использованием ActiveX -VB6 библиотеки есть такая возможность, и есть коенчо ряд нюансов, например, что библиотека должна быть скомпилирована в p-код. Тут наверное играет роль, что VB6 и VBA очень родственные среды..
0
Эксперт по электронике
6528 / 3157 / 333
Регистрация: 28.10.2011
Сообщений: 12,401
Записей в блоге: 7
04.07.2023, 12:44
Цитата Сообщение от testuser2 Посмотреть сообщение
такая dll сможет выполнять процедуры взятые из VBA
Для VBA есть компилятор с поддержкой многопоточности?
dll будет выполнять функции библиотеки ЯП и др. какие будут вызваны.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
04.07.2023, 13:50
Цитата Сообщение от testuser2 Посмотреть сообщение
божественная "рекомпиляция"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2023, 13:50
Помогаю со студенческими работами здесь

VBA-проект для создания эл. сообщения в MS Outlook из-под любого VBA-приложения.
Охотно поделюсь этим своим проектом, который можно скачать с http://moscowjobs.narod.ru/mailmngr.html. Вам понадобится WinZip и MS Word...

VBA AutoCad - как снять (изменить) ограничение времени выполнения VBA Макроса?
Столкнулся с проблемой в Автокад 2012 х64 win7 Run-time error(...): Automation error System call failed - возникает если макросы...

VBA SDK. Как включить в проект на VBA конструкторы?
Всем, добрый день! Если кто-то работал с сабжом - не могу понять, как включить в проект на VBA конструкторы, как-то: DataEnvironment,...

Купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко
Поздравьте меня я купил книгу По VBA Программирование на VBA 2003 В.Г.Кузьменко, могу процитировать нужную Вам справку

Как получить ссылку на VBA-объект Application в DLL, которая привязана к этому VBA-приложению
Т.е. ситуация обычная - имеем DLL, сделанную в VB, которая может быть привязана к MsOffice приложениям - Access,Word,Excel . Как в этой...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru