Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/32: Рейтинг темы: голосов - 32, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 33

Изменение размерности динамического массива

08.06.2011, 14:41. Показов 6762. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые господам программисты!
Столкнулся с очень неприятной штукой, не могу изменить размерность динамического массива, одного и того же массива, из разных подпрограмм и функций проекта. Изменение размерности происходит только в первом модуле, и то, пока я из него не вышел. Во всех остальных получаю сообщение об ошибке:"This array is fixed or temporarily locked".
Массив объявлен как Public.
Структура массива и его объявление:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Type Vhodit
    Cherteg As String
    Naimenovanie As String
    Kolvo As Integer
    
End Type
 
Type StrukturaDSI
    Cherteg As String
    Naimenovanie As String
    Kolvo As Single
    Razdel As String
    Uroven As Integer
    VhoditV As Vhodit
End Type
 
Type MasZakaz
    Zakaz As String
    Izdelie() As StrukturaDSI
End Type
Public List As MasZakaz
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2011, 14:41
Ответы с готовыми решениями:

Изменение размерности динамического массива
Доброго времени суток, форумчане, как в VBA изменять (увеличивать) обе размерности двумерного динамического массива? Знаю что в двумерном...

Изменение размерности массива
Здравствуйте! Возникла проблема. Такое задание, на UserForm, когда нажимаешь на кнопку, создается массив, с той размерностью какая...

Изменения размерности динамического массива
недавно задался вопросом, а можно как-то изменить размерность динамического массива ну например есть такой массив int n; n=5; int...

10
2049 / 479 / 133
Регистрация: 13.11.2008
Сообщений: 918
08.06.2011, 14:54
Массив-то как Public, а вот пользовательский тип...
Visual Basic
1
Public Type MasZakaz
Кстати, я нашел лишь один массив - Izdelie. Какой Вы-то меняете? Если его - то и второй тип сделайте Public.
1
1 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 33
08.06.2011, 16:36  [ТС]
Спасибо, попробую.

Добавлено через 10 минут
Сделал так:
Public Type StrukturaDSI
Cherteg As String
Naimenovanie As String
Kolvo As Single
Razdel As String
Uroven As Integer
VhoditV As Vhodit
End Type

Public Type MasZakaz
Zakaz As String
Izdelie() As StrukturaDSI
End Type
Public List As MasZakaz
Не помогло, результат тот же.
0
2049 / 479 / 133
Регистрация: 13.11.2008
Сообщений: 918
08.06.2011, 16:42
Кстати...Я что-то не очень обратил внимания на ошибку. Вы как размерность меняете? Есть ли у Вас уже процедура, в которой Вы уже задавали размер данному массиву?
Дело в том, что обычно ошибка "This array is fixed or temporarily locked" означает, что Вы попытались использовать команду ReDim на массиве фиксированного размера. Массивы, объявленные как динамические, или массивы в переменных типа Variant могут быть временно заблокированы. Значит Вы что-то неверно сделали.
Как-то так должно работать:
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
Option Explicit
 
Type Vhodit
    Cherteg As String
    Naimenovanie As String
    Kolvo As Integer
End Type
 
Type StrukturaDSI
    Cherteg As String
    Naimenovanie As String
    Kolvo As Single
    Razdel As String
    Uroven As Integer
    VhoditV As Vhodit
End Type
 
Type MasZakaz
    Zakaz As String
    Izdelie() As StrukturaDSI
End Type
Public List As MasZakaz
'эта процедура в другом модуле
Sub Test()
    Dim tpMyVar As MasZakaz, li As Long
    For li = 0 To 5
        ReDim Preserve tpMyVar.Izdelie(li)
        tpMyVar.Izdelie(li).Cherteg = li
    Next li
End Sub
В Вашем случае процедура может выглядеть так:
Visual Basic
1
2
3
4
5
6
7
Sub Test()
    Dim li As Long
    For li = 0 To 5
        ReDim Preserve List.Izdelie(li)
        List.Izdelie(li).Cherteg = li
    Next li
End Sub
Только лично я заменил бы название переменной List на что-то менее зарезервированное. Хотя бы vList.
1
1 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 33
08.06.2011, 18:02  [ТС]
Да, в одной процедуре я меняю размерность
PureBasic
1
ReDim Preserve List.Izdelie(Stroka)
,
затем ухожу в другую, где пытаюсь сделать тоже самое, поскольку в процессе переменная Stroka постоянно наращивается.

Добавлено через 12 минут
Спасибо за участие.
Если можно, то продолжим завтра, дома нет интернета.
Чтобы было понятней, я в процедуре Sub изменяю размерность Redim Preserve List.Izdelie(Stroka). Затем передаю управление процедуре Function() в которой необходимо далее изменять размерность Redim Preserve List.Izdelie(Stroka), вот тут и возникает ошибка.
Если Вас не очень затруднит, помогите разобраться, пожалуйста.
0
2049 / 479 / 133
Регистрация: 13.11.2008
Сообщений: 918
08.06.2011, 18:04
Цитата Сообщение от vladnick Посмотреть сообщение
Если Вас не очень затруднит, помогите разобраться, пожалуйста.
Если не затруднит - лучше выложите файл с кодами. А то так долго будем в угадалки играть...
1
1 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 33
09.06.2011, 10:45  [ТС]
Добрый день.
PureBasic
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Type Vhodit
    Cherteg As String
    Naimenovanie As String
    Kolvo As Integer
    
End Type
 
Public Type StrukturaDSI
    Cherteg As String
    Naimenovanie As String
    Kolvo As Single
    Razdel As String
    Uroven As Integer
    VhoditV As Vhodit
End Type
 
Public Type MasZakaz
    Zakaz As String
    Izdelie() As StrukturaDSI
End Type
Public Zakazy() As MasZakaz
Public List As MasZakaz
 
Public Function RaskritSborku1(ChSborka As String, ImSborka As String, Kolvo As Single, Uroven As Integer, Stroka As Integer) As String
Dim N As Long, T As Long, R As Long, S As Long
Dim Najdena As Boolean
Dim U As Variant
 
    If Stroka = 1 Then
        Rediim Preserve List.Izdelie(Stroka)
        List.Izdelie(1).Cherteg = ChSborka
        List.Izdelie(1).Naimenovanie = ImSborka
        List.Izdelie(1).Kolvo = Kolvo
        List.Izdelie(1).Uroven = 0
        Uroven = Uroven + 1
        Stroka = Stroka + 1
    End If
    Najdena = False
    For N = 1 To KolSb
        If ChSborka = Spisok(N).Imja.Cherteg Then
            Exit For
        End If
    Next N
    For S = 1 To Spisok(N).Stroka(0).Kolvo
        If Spisok(N).Stroka(S).Razdel = "Äåòàëè" Then
            ReDim Preserve List.Izdelie(Stroka) '?????????????????????????????????????????????
            List.Izdelie(Stroka).Cherteg = Spisok(N).Stroka(S).Imja.Cherteg
            List.Izdelie(Stroka).Naimenovanie = Spisok(N).Stroka(S).Imja.Naimenovanie
            List.Izdelie(Stroka).Kolvo = Spisok(N).Stroka(S).Kolvo
            List.Izdelie(Stroka).Razdel = Spisok(N).Stroka(S).Razdel
            List.Izdelie(Stroka).Uroven = Spisok(N).Stroka(S).Uroven
            List.Izdelie(Stroka).VhoditV.Cherteg = ChSborka
            List.Izdelie(Stroka).VhoditV.Naimenovanie = ImSborka
            List.Izdelie(Stroka).VhoditV.Kolvo = Kolvo
            List.Izdelie(0).Kolvo = Stroka ' êîë-âî ñòðîê â ëèñòå
            Stroka = Stroka + 1
           
        End If
    Next S
    For R = 1 To Spisok(N).Stroka(0).Kolvo
        Najdena = False
        If Spisok(N).Stroka(R).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
            
           
            Najdena = True
            ReDim Preserve List.Izdelie(Stroka) '?????????????????????????????????????????????
            List.Izdelie(Stroka).Cherteg = Spisok(N).Stroka(R).Imja.Cherteg
            List.Izdelie(Stroka).Naimenovanie = Spisok(N).Stroka(R).Imja.Naimenovanie
            List.Izdelie(Stroka).Kolvo = Spisok(N).Stroka(R).Kolvo
            List.Izdelie(Stroka).Razdel = Spisok(N).Stroka(R).Razdel
            List.Izdelie(Stroka).Uroven = Spisok(N).Stroka(R).Uroven
            List.Izdelie(Stroka).VhoditV.Cherteg = ChSborka
            List.Izdelie(Stroka).VhoditV.Naimenovanie = ImSborka
            List.Izdelie(Stroka).VhoditV.Kolvo = Kolvo
            List.Izdelie(0).Kolvo = Stroka ' êîë-âî ñòðîê â ëèñòå
            Stroka = Stroka + 1
            Soobshenie = RaskritSborku1(List.Izdelie(Stroka - 1).Cherteg, _
                List.Izdelie(Stroka - 1).Naimenovanie, List.Izdelie(Stroka - 1).Kolvo, List.Izdelie(Stroka - 1).Uroven + 1, Stroka)
        End If
    Next R
    If Not Najdena Then
        RaskritSborku1 = ""
    Else
        RaskritSborku1 = Stroka
    End If
End Function
Sub PlatyNew()
 
'Основная программа.
Dim L As Long, M As Long, N As Long, P As Long, R As Long
Dim K As Long, S As Long, T As Long, Z As Long
Dim Zakaz() As StrukturaZakaza
Dim SostavSP() As Spetsifikatsija
Dim VedomostSP() As Vedomost
Dim Sborki() As String
Dim Najdena As Boolean
Dim Nachalo As Long, Konets As Long
Dim Poslednjaja As Integer, Str As Integer, Sb As Integer ', KolSb As Integer
Dim Izdelie As GolSb
 
' Обработка исходных данных
 
List.Zakaz = Zakaz(Z).Nomer
        Stroka = 1
        
        ReDim Preserve List.Izdelie(Stroka)
        ReDim Preserve Zakazy(Z).Izdelie(Stroka)
        List.Izdelie(1).Cherteg = Spisok(1).Imja.Cherteg
        List.Izdelie(1).Naimenovanie = Spisok(1).Imja.Naimenovanie
        List.Izdelie(1).Kolvo = Zakaz(Z).Kolvo
        List.Izdelie(1).Uroven = 0
        
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Детали" Then
                If Stroka > 2 Then ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = List.Izdelie(1).Kolvo
                Stroka = Stroka + 1
            End If
        Next T
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Сборочные единицы" Then
                ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = Zakazy(Z).Izdelie(1).Kolvo
                List.Izdelie(0).Kolvo = Stroka ' Кол-во строк в листе
                Stroka = Stroka + 1 '------------------------------------------------------
                
                Soobshenie = RaskritSborku1(List.Izdelie(Stroka - 1).Cherteg, _
                List.Izdelie(Stroka - 1).Naimenovanie, List.Izdelie(Stroka - 1).Kolvo, 2, Stroka)
            End If
        Next T
         
3   Next Z
End Sub
Вот тот кусок который не работает.
Переменная Soobshenie фиктивная, для того , чтобы применить рекурсивную функцию RaskritSborku.
0
6644 / 1511 / 169
Регистрация: 09.01.2010
Сообщений: 4,298
09.06.2011, 11:58
попробуйте для переменной Stroka в основной программе и в функции использовать разные имена
1
2049 / 479 / 133
Регистрация: 13.11.2008
Сообщений: 918
09.06.2011, 12:11
Трудно что-то проверять, когда дают куски кода. Выложенный код не будет работать хотя бы потому, что не объявлены типы StrukturaZakaza, Vedomost, GolSb и Spetsifikatsija.

Вы уверены, что в функции переменную Stroka надо именно As Integer оъявлять? Не выйдет за пределы? Хотя Kolvo у Вас как Single. Может это самое Kolvo тоже хотя бы Integer-ом сделать? Single очень не удобный тип. К тому же не целочисленный, что противоречит логике Вашей программы.
Эту строку тоже не понял:
Spisok(N).Stroka(0).Kolvo

Где объявлена Spisok? Где её подчиненная Stroka? И где то Kolvo, которое входит в тип Stroka? Хотя именно на этом выражении Вы основываете свой цикл:
For S = 1 To Spisok(N).Stroka(0).Kolvo

В общем совсем плохо ориентироваться в логике программы и искать ошибки, когда имеешь только какие-то обрывки этой самой программы...
1
1 / 1 / 0
Регистрация: 08.06.2011
Сообщений: 33
09.06.2011, 13:26  [ТС]
Да, насчет Single, я согласен, неудобно. Пока работает и так, потом почищу.
Полный текст выложу, но как быть с данными, которые необходимо обрабатывать? они находятся на разных дисках и в разных форматах. Как быть с адресацией? Да и куда выложить не знаю. Пдскажите.

Вот полный текст:

PureBasic
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Sub PlatyNew()
 
Dim L As Long, M As Long, N As Long, P As Long, R As Long
Dim K As Long, S As Long, T As Long, Z As Long
Dim Zakaz() As StrukturaZakaza
Dim SostavSP() As Spetsifikatsija
Dim VedomostSP() As Vedomost
Dim Sborki() As String
Dim Najdena As Boolean
Dim Nachalo As Long, Konets As Long
Dim Poslednjaja As Integer, Str As Integer, Sb As Integer ', KolSb As Integer
Dim Izdelie As GolSb
 
 
    Application.StatusBar = "Îòêðûâàþ Äåéñòâóþùèå çàêàçû"
    Open "T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Äåéñòâóþùèå çàêàçû.dbf" For Random As #1 Len = 30000
    ReDim Zakaz(0)
    Get #1, , Zakaz(0)
    
    For N = 1 To Zakaz(0).Kolvo
        ReDim Preserve Zakaz(N)
        Get #1, , Zakaz(N)
    Next N
    Close #1
    '-------------------------------------------------------------------------------------
    Application.StatusBar = "Îòêðûâàþ Âåäîìîñòü ÑÏ"
    Workbooks.Open Filename:="T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Âåäîìîñòü ÑÏ.HTM"
    ReDim VedomostSP(0)
    For M = 1 To Sheets(1).UsedRange.Rows.Count
        VedomostSP(0).Kod = M
        ReDim Preserve VedomostSP(M)
        VedomostSP(M).Kod = Range("A" & M + 1)
        VedomostSP(M).Cherteg = Range("B" & M + 1)
        VedomostSP(M).Izdelie = Range("C" & M + 1)
        VedomostSP(M).Data = Range("D" & M + 1)
        VedomostSP(M).Operator = Range("E" & M + 1)
    Next M
    Workbooks("Âåäîìîñòü ÑÏ.HTM").Close SaveChanges:=False
    ReDim SostavSP(0)
    '--------------------------------------------------------------------------------------
    Application.StatusBar = "Îòêðûâàþ Ñîñòàâ ñïåöèôèêàöèé" '-----------------------
    Open "T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Ñîñòàâ ÑÏ.dbf" For Random As #2 Len = 1500
    Get #2, , SostavSP(0)
    
    ReDim Preserve SostavSP(SostavSP(0).Kolvo)
    For R = 1 To SostavSP(0).Kolvo
        
        Get #2, , SostavSP(R)
        Application.StatusBar = "Ñ÷èòàíà ñòðîêà Ñîñòàâà ñïåöèôèêàöèè ¹" & R & " " & SostavSP(R).Naimenovanie & " " & SostavSP(R).Cherteg
    Next R
    Application.StatusBar = "Çàêðûâàþ Ñîñòàâ ñïåöèôèêàöèé."
    Close #2
    
    Application.StatusBar = False
    '-------------------------------------------------------Áåæèì ïî çàêàçàì
        ReDim Zakazy(Zakaz(0).Kolvo)
    For Z = 1 To Zakaz(0).Kolvo 'Z íîìåð ïîçèöèè çàêàçà â ñïèñêå çàêàçîâ
        Izdelie.Cherteg = Zakaz(Z).Cherteg
        Izdelie.Naimenovanie = Zakaz(Z).Naimenovanie
        'Zakazy(Z).Zakaz = Zakaz(Z).Nomer
        ReDim Preserve Spisok(1)
        Spisok(1).Imja = Izdelie
        ReDim Preserve Sborki(1)
        Sborki(1) = Izdelie.Cherteg
        KolSb = 1
        N = 1
        K = 0
        For R = 1 To SostavSP(0).Kolvo
            If SostavSP(R).VhoditV = Spisok(N).Imja.Cherteg Then
                K = K + 1
                ReDim Preserve Spisok(N).Stroka(K)
                Spisok(N).Stroka(0).Kolvo = K
                Spisok(N).Stroka(K).Imja.Cherteg = SostavSP(R).Cherteg
                Spisok(N).Stroka(K).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                Spisok(N).Stroka(K).Kolvo = SostavSP(R).Kolvo
                Spisok(N).Stroka(K).Razdel = SostavSP(R).Razdel
                Spisok(N).Stroka(K).Vhodit = SostavSP(R).VhoditV
                Spisok(N).Stroka(K).Uroven = 1
                
            
                If SostavSP(R + 1).VhoditV <> Spisok(N).Imja.Cherteg Then
                    Exit For
                End If
            End If
        Next R
        T = 0
        For K = 1 To Spisok(N).Stroka(0).Kolvo
            If Spisok(N).Stroka(K).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                
               
                Najdena = False
                For Sb = 1 To KolSb
                    If Sborki(Sb) = Spisok(N).Stroka(K).Imja.Cherteg Then
                        Najdena = True
                    End If
                Next Sb
                
                If Najdena Then GoTo 1
                KolSb = KolSb + 1
                ReDim Preserve Sborki(KolSb)
                Sborki(KolSb) = Spisok(N).Stroka(K).Imja.Cherteg
                T = T + 1 ' êîë-âî ñáîðîê â òåêóùåé ÑÏ
                ReDim Preserve Spisok(N + T)
                'If N + T = 8 Then Stop
                Spisok(N + T).Imja = Spisok(N).Stroka(K).Imja
                
                S = 0
                Najdena = False
                For R = 1 To SostavSP(0).Kolvo
                    If SostavSP(R).VhoditV = Spisok(N + T).Imja.Cherteg Then
                        Najdena = True
                        S = S + 1
                        
                        ReDim Preserve Spisok(N + T).Stroka(S)
                        Spisok(N + T).Stroka(0).Kolvo = S ' êî-ëâî ñòðîê â íîâîé ñï
                        Spisok(N + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                        Spisok(N + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                        Spisok(N + T).Stroka(S).Kolvo = SostavSP(R).Kolvo
                        Spisok(N + T).Stroka(S).Razdel = SostavSP(R).Razdel
                        Spisok(N + T).Stroka(S).Vhodit = SostavSP(R).VhoditV
                        Spisok(N + T).Stroka(S).Uroven = Spisok(N).Stroka(T).Uroven + 1
                        Spisok(N + T).Stroka(S).ListSP = N + T
                        If SostavSP(R + 1).VhoditV <> Spisok(N + T).Imja.Cherteg Then
                            Poslednjaja = N + T
                            Exit For
                        End If
                    End If
                    If Not Najdena Then
                        ReDim Preserve Spisok(N + T).Stroka(0)
                        Spisok(N + T).Stroka(0).Kolvo = 0 ' êî-ëâî ñòðîê â íîâîé ñï
                        Spisok(N + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                        Spisok(N + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                        Poslednjaja = N + T
                    End If
                Next R
            End If
1       Next K
            'Else
        N = 2
        Do Until N > Poslednjaja
           
        
            T = 0
            For K = 1 To Spisok(N).Stroka(0).Kolvo
            
                If Spisok(N).Stroka(K).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                    Najdena = False
                    For Sb = 1 To KolSb
                        If Sborki(Sb) = Spisok(N).Stroka(K).Imja.Cherteg Then
                            Najdena = True
                        End If
                    Next Sb
                    If Najdena Then GoTo 2
                    KolSb = KolSb + 1
                    ReDim Preserve Sborki(KolSb)
                    Sborki(KolSb) = Spisok(N).Stroka(K).Imja.Cherteg
                    T = T + 1
                    ReDim Preserve Spisok(Poslednjaja + T)
                    Spisok(Poslednjaja + T).Imja = Spisok(N).Stroka(K).Imja
                    S = 0
                    Najdena = False
                    
                    For R = 1 To SostavSP(0).Kolvo
                        If SostavSP(R).VhoditV = Spisok(Poslednjaja + T).Imja.Cherteg Then
                            Najdena = True
                            S = S + 1
                            
                            ReDim Preserve Spisok(Poslednjaja + T).Stroka(S)
                            Spisok(Poslednjaja + T).Stroka(0).Kolvo = S
                            Spisok(Poslednjaja + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                            Spisok(Poslednjaja + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                            Spisok(Poslednjaja + T).Stroka(S).Kolvo = SostavSP(R).Kolvo
                            Spisok(Poslednjaja + T).Stroka(S).Razdel = SostavSP(R).Razdel
                            Spisok(Poslednjaja + T).Stroka(S).Vhodit = SostavSP(R).VhoditV
                            Spisok(Poslednjaja + T).Stroka(S).Uroven = Spisok(N).Stroka(K).Uroven + 1
                            If SostavSP(R + 1).VhoditV <> Spisok(Poslednjaja + T).Imja.Cherteg Then
                               
                                Exit For
                            End If
                        End If
                    Next R
                    If Not Najdena Then '---------äîáàâèë äëÿ ñòðîéíîñòè ñèñòåìû êàê â (N+T), íî, ðàáîòàëî è áåç ýòîãî ïîòîìó, ÷òî óæå ðàáîòàåò Err:
                        ReDim Preserve Spisok(Poslednjaja + T).Stroka(0)
                        Spisok(Poslednjaja + T).Stroka(0).Kolvo = 0
                    End If '----------------------------------------------------------------------------
                End If
2               Next K
            Poslednjaja = Poslednjaja + T
             N = N + 1 '------------------------------------------------------------------------------
        
        Loop
        '---------------------------------------------------------------------------------------------
        List.Zakaz = Zakaz(Z).Nomer
        Stroka = 1
        
        ReDim Preserve List.Izdelie(Stroka)
        ReDim Preserve Zakazy(Z).Izdelie(Stroka)
        List.Izdelie(1).Cherteg = Spisok(1).Imja.Cherteg
        List.Izdelie(1).Naimenovanie = Spisok(1).Imja.Naimenovanie
        List.Izdelie(1).Kolvo = Zakaz(Z).Kolvo
        List.Izdelie(1).Uroven = 0
        
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Äåòàëè" Then
                If Stroka > 2 Then ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = List.Izdelie(1).Kolvo
                Stroka = Stroka + 1
            End If
        Next T
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = Zakazy(Z).Izdelie(1).Kolvo
                List.Izdelie(0).Kolvo = Stroka ' êîë-âî ñòðîê â ëèñòå
                Stroka = Stroka + 1 '------------------------------------------------------
                
                Soobshenie = RaskritSborku1(List.Izdelie(Stroka - 1).Cherteg, _
                List.Izdelie(Stroka - 1).Naimenovanie, List.Izdelie(Stroka - 1).Kolvo, 2, Stroka)
            End If
        Next T
         
        
3   Next Z
End Sub
В нулевых элементах массивов в целочисленных полях,например Kolvo, запоминаю количества элементов данного массива.

Добавлено через 39 минут
Да, насчет Single, я согласен, неудобно. Пока работает и так, потом почищу.
Полный текст выложу, но как быть с данными, которые необходимо обрабатывать? они находятся на разных дисках и в разных форматах. Как быть с адресацией? Да и куда выложить не знаю. Пдскажите.

Вот полный текст:

PureBasic
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Sub PlatyNew()
 
Dim L As Long, M As Long, N As Long, P As Long, R As Long
Dim K As Long, S As Long, T As Long, Z As Long
Dim Zakaz() As StrukturaZakaza
Dim SostavSP() As Spetsifikatsija
Dim VedomostSP() As Vedomost
Dim Sborki() As String
Dim Najdena As Boolean
Dim Nachalo As Long, Konets As Long
Dim Poslednjaja As Integer, Str As Integer, Sb As Integer ', KolSb As Integer
Dim Izdelie As GolSb
 
 
    Application.StatusBar = "Îòêðûâàþ Äåéñòâóþùèå çàêàçû"
    Open "T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Äåéñòâóþùèå çàêàçû.dbf" For Random As #1 Len = 30000
    ReDim Zakaz(0)
    Get #1, , Zakaz(0)
    
    For N = 1 To Zakaz(0).Kolvo
        ReDim Preserve Zakaz(N)
        Get #1, , Zakaz(N)
    Next N
    Close #1
    '-------------------------------------------------------------------------------------
    Application.StatusBar = "Îòêðûâàþ Âåäîìîñòü ÑÏ"
    Workbooks.Open Filename:="T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Âåäîìîñòü ÑÏ.HTM"
    ReDim VedomostSP(0)
    For M = 1 To Sheets(1).UsedRange.Rows.Count
        VedomostSP(0).Kod = M
        ReDim Preserve VedomostSP(M)
        VedomostSP(M).Kod = Range("A" & M + 1)
        VedomostSP(M).Cherteg = Range("B" & M + 1)
        VedomostSP(M).Izdelie = Range("C" & M + 1)
        VedomostSP(M).Data = Range("D" & M + 1)
        VedomostSP(M).Operator = Range("E" & M + 1)
    Next M
    Workbooks("Âåäîìîñòü ÑÏ.HTM").Close SaveChanges:=False
    ReDim SostavSP(0)
    '--------------------------------------------------------------------------------------
    Application.StatusBar = "Îòêðûâàþ Ñîñòàâ ñïåöèôèêàöèé" '-----------------------
    Open "T:\Ïðîèçâîäñòâî\ÏÄÎ\Buffer\Íàñòðîéêè Excel\Ñîñòàâ ÑÏ.dbf" For Random As #2 Len = 1500
    Get #2, , SostavSP(0)
    
    ReDim Preserve SostavSP(SostavSP(0).Kolvo)
    For R = 1 To SostavSP(0).Kolvo
        
        Get #2, , SostavSP(R)
        Application.StatusBar = "Ñ÷èòàíà ñòðîêà Ñîñòàâà ñïåöèôèêàöèè ¹" & R & " " & SostavSP(R).Naimenovanie & " " & SostavSP(R).Cherteg
    Next R
    Application.StatusBar = "Çàêðûâàþ Ñîñòàâ ñïåöèôèêàöèé."
    Close #2
    
    Application.StatusBar = False
    '-------------------------------------------------------Áåæèì ïî çàêàçàì
        ReDim Zakazy(Zakaz(0).Kolvo)
    For Z = 1 To Zakaz(0).Kolvo 'Z íîìåð ïîçèöèè çàêàçà â ñïèñêå çàêàçîâ
        Izdelie.Cherteg = Zakaz(Z).Cherteg
        Izdelie.Naimenovanie = Zakaz(Z).Naimenovanie
        'Zakazy(Z).Zakaz = Zakaz(Z).Nomer
        ReDim Preserve Spisok(1)
        Spisok(1).Imja = Izdelie
        ReDim Preserve Sborki(1)
        Sborki(1) = Izdelie.Cherteg
        KolSb = 1
        N = 1
        K = 0
        For R = 1 To SostavSP(0).Kolvo
            If SostavSP(R).VhoditV = Spisok(N).Imja.Cherteg Then
                K = K + 1
                ReDim Preserve Spisok(N).Stroka(K)
                Spisok(N).Stroka(0).Kolvo = K
                Spisok(N).Stroka(K).Imja.Cherteg = SostavSP(R).Cherteg
                Spisok(N).Stroka(K).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                Spisok(N).Stroka(K).Kolvo = SostavSP(R).Kolvo
                Spisok(N).Stroka(K).Razdel = SostavSP(R).Razdel
                Spisok(N).Stroka(K).Vhodit = SostavSP(R).VhoditV
                Spisok(N).Stroka(K).Uroven = 1
                
            
                If SostavSP(R + 1).VhoditV <> Spisok(N).Imja.Cherteg Then
                    Exit For
                End If
            End If
        Next R
        T = 0
        For K = 1 To Spisok(N).Stroka(0).Kolvo
            If Spisok(N).Stroka(K).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                
               
                Najdena = False
                For Sb = 1 To KolSb
                    If Sborki(Sb) = Spisok(N).Stroka(K).Imja.Cherteg Then
                        Najdena = True
                    End If
                Next Sb
                
                If Najdena Then GoTo 1
                KolSb = KolSb + 1
                ReDim Preserve Sborki(KolSb)
                Sborki(KolSb) = Spisok(N).Stroka(K).Imja.Cherteg
                T = T + 1 ' êîë-âî ñáîðîê â òåêóùåé ÑÏ
                ReDim Preserve Spisok(N + T)
                'If N + T = 8 Then Stop
                Spisok(N + T).Imja = Spisok(N).Stroka(K).Imja
                
                S = 0
                Najdena = False
                For R = 1 To SostavSP(0).Kolvo
                    If SostavSP(R).VhoditV = Spisok(N + T).Imja.Cherteg Then
                        Najdena = True
                        S = S + 1
                        
                        ReDim Preserve Spisok(N + T).Stroka(S)
                        Spisok(N + T).Stroka(0).Kolvo = S ' êî-ëâî ñòðîê â íîâîé ñï
                        Spisok(N + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                        Spisok(N + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                        Spisok(N + T).Stroka(S).Kolvo = SostavSP(R).Kolvo
                        Spisok(N + T).Stroka(S).Razdel = SostavSP(R).Razdel
                        Spisok(N + T).Stroka(S).Vhodit = SostavSP(R).VhoditV
                        Spisok(N + T).Stroka(S).Uroven = Spisok(N).Stroka(T).Uroven + 1
                        Spisok(N + T).Stroka(S).ListSP = N + T
                        If SostavSP(R + 1).VhoditV <> Spisok(N + T).Imja.Cherteg Then
                            Poslednjaja = N + T
                            Exit For
                        End If
                    End If
                    If Not Najdena Then
                        ReDim Preserve Spisok(N + T).Stroka(0)
                        Spisok(N + T).Stroka(0).Kolvo = 0 ' êî-ëâî ñòðîê â íîâîé ñï
                        Spisok(N + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                        Spisok(N + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                        Poslednjaja = N + T
                    End If
                Next R
            End If
1       Next K
            'Else
        N = 2
        Do Until N > Poslednjaja
           
        
            T = 0
            For K = 1 To Spisok(N).Stroka(0).Kolvo
            
                If Spisok(N).Stroka(K).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                    Najdena = False
                    For Sb = 1 To KolSb
                        If Sborki(Sb) = Spisok(N).Stroka(K).Imja.Cherteg Then
                            Najdena = True
                        End If
                    Next Sb
                    If Najdena Then GoTo 2
                    KolSb = KolSb + 1
                    ReDim Preserve Sborki(KolSb)
                    Sborki(KolSb) = Spisok(N).Stroka(K).Imja.Cherteg
                    T = T + 1
                    ReDim Preserve Spisok(Poslednjaja + T)
                    Spisok(Poslednjaja + T).Imja = Spisok(N).Stroka(K).Imja
                    S = 0
                    Najdena = False
                    
                    For R = 1 To SostavSP(0).Kolvo
                        If SostavSP(R).VhoditV = Spisok(Poslednjaja + T).Imja.Cherteg Then
                            Najdena = True
                            S = S + 1
                            
                            ReDim Preserve Spisok(Poslednjaja + T).Stroka(S)
                            Spisok(Poslednjaja + T).Stroka(0).Kolvo = S
                            Spisok(Poslednjaja + T).Stroka(S).Imja.Cherteg = SostavSP(R).Cherteg
                            Spisok(Poslednjaja + T).Stroka(S).Imja.Naimenovanie = SostavSP(R).Naimenovanie
                            Spisok(Poslednjaja + T).Stroka(S).Kolvo = SostavSP(R).Kolvo
                            Spisok(Poslednjaja + T).Stroka(S).Razdel = SostavSP(R).Razdel
                            Spisok(Poslednjaja + T).Stroka(S).Vhodit = SostavSP(R).VhoditV
                            Spisok(Poslednjaja + T).Stroka(S).Uroven = Spisok(N).Stroka(K).Uroven + 1
                            If SostavSP(R + 1).VhoditV <> Spisok(Poslednjaja + T).Imja.Cherteg Then
                               
                                Exit For
                            End If
                        End If
                    Next R
                    If Not Najdena Then '---------äîáàâèë äëÿ ñòðîéíîñòè ñèñòåìû êàê â (N+T), íî, ðàáîòàëî è áåç ýòîãî ïîòîìó, ÷òî óæå ðàáîòàåò Err:
                        ReDim Preserve Spisok(Poslednjaja + T).Stroka(0)
                        Spisok(Poslednjaja + T).Stroka(0).Kolvo = 0
                    End If '----------------------------------------------------------------------------
                End If
2               Next K
            Poslednjaja = Poslednjaja + T
             N = N + 1 '------------------------------------------------------------------------------
        
        Loop
        '---------------------------------------------------------------------------------------------
        List.Zakaz = Zakaz(Z).Nomer
        Stroka = 1
        
        ReDim Preserve List.Izdelie(Stroka)
        ReDim Preserve Zakazy(Z).Izdelie(Stroka)
        List.Izdelie(1).Cherteg = Spisok(1).Imja.Cherteg
        List.Izdelie(1).Naimenovanie = Spisok(1).Imja.Naimenovanie
        List.Izdelie(1).Kolvo = Zakaz(Z).Kolvo
        List.Izdelie(1).Uroven = 0
        
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Äåòàëè" Then
                If Stroka > 2 Then ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = List.Izdelie(1).Kolvo
                Stroka = Stroka + 1
            End If
        Next T
        For T = 1 To Spisok(1).Stroka(0).Kolvo
            If Spisok(1).Stroka(T).Razdel = "Ñáîðî÷íûå åäèíèöû" Then
                ReDim Preserve List.Izdelie(Stroka)
                List.Izdelie(Stroka).Cherteg = Spisok(1).Stroka(T).Imja.Cherteg
                List.Izdelie(Stroka).Naimenovanie = Spisok(1).Stroka(T).Imja.Naimenovanie
                List.Izdelie(Stroka).Kolvo = Spisok(1).Stroka(T).Kolvo
                List.Izdelie(Stroka).Razdel = Spisok(1).Stroka(T).Razdel
                List.Izdelie(Stroka).Uroven = Spisok(1).Stroka(T).Uroven
                List.Izdelie(Stroka).VhoditV.Cherteg = List.Izdelie(1).Cherteg
                List.Izdelie(Stroka).VhoditV.Naimenovanie = List.Izdelie(1).Naimenovanie
                List.Izdelie(Stroka).VhoditV.Kolvo = Zakazy(Z).Izdelie(1).Kolvo
                List.Izdelie(0).Kolvo = Stroka ' êîë-âî ñòðîê â ëèñòå
                Stroka = Stroka + 1 '------------------------------------------------------
                
                Soobshenie = RaskritSborku1(List.Izdelie(Stroka - 1).Cherteg, _
                List.Izdelie(Stroka - 1).Naimenovanie, List.Izdelie(Stroka - 1).Kolvo, 2, Stroka)
            End If
        Next T
       ' В результате сформирован List.Izdelie(Stroka) Для дальнейшей обработки, т.е. для помещения в массив  Zakazy(Z).Izdelie, где Izdelie и есть List
        
3   Next Z
End Sub
В нулевых элементах массивов в целочисленных полях,например Kolvo, запоминаю количества элементов данного массива.

Объявления:
PureBasic
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
Type StrukturaZakaza
    Nomer As String
    Cherteg As String
    Naimenovanie As String
    Kolvo As Single
    
End Type
 
Type Vhodit
    Cherteg As String
    Naimenovanie As String
    Kolvo As Integer
    
End Type
 
Public Type StrukturaDSI
    Cherteg As String
    Naimenovanie As String
    Kolvo As Single
    Razdel As String
    Uroven As Integer
    VhoditV As Vhodit
End Type
 
Public Type MasZakaz
    Zakaz As String
    Izdelie() As StrukturaDSI
End Type
Type Vedomost
    Kod As Single
    Cherteg As String
    Izdelie As String
    Data As Date
    Operator As String
    Izmeneno As Boolean
End Type
Type GolSb
    Cherteg As String
    Naimenovanie As String
End Type
Type StrokaSP
    Razdel As String
    Imja As GolSb
    Kolvo As Single
    Uroven As Integer
    Vhodit As String
    ListSP As Integer
End Type
Type Sp
    Imja As GolSb
    Stroka() As StrokaSP
End Type
Type Spetsifikatsija
    Kod As Single
    VhoditV As String
    Razdel As String
    Pozitsija As Integer
    Cherteg As String
    Naimenovanie As String
    Kolvo As Long
    Primechanija As String
    Data As Date
    Operator As String
End Type
PureBasic
1
2
3
4
5
6
Public Spisok() As Sp
Public KolSb As Integer
Public Stroka As Integer
Public KZD() As Struktura2
Public Zakazy() As MasZakaz
Public List As MasZakaz
Добавлено через 2 минуты
Я не понял, Ведь я пытаюсь работать с одним и тем же массивом?
0
2049 / 479 / 133
Регистрация: 13.11.2008
Сообщений: 918
09.06.2011, 13:51
Пока полностью не разбирался. Попробуйте объявить функцию так:
Public Function RaskritSborku1(ChSborka As String, ImSborka As String, Kolvo As Single, Uroven As Integer, ByVal Stroka As Integer) As String
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2011, 13:51
Помогаю со студенческими работами здесь

Ввод размерности динамического массива
Не могу никак справиться c вводом размерности массива из switch'а Вот изначальный код int n = 0; cout &lt;&lt; &quot;Число...

Увеличение размерности динамического массива
У меня есть простейший рабочий пример заполнения массива и известным количеством выделяемой памяти class tmp{ private: int...

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

Изменение размерности массива
Добрый день, есть задача: нужно считать строку (элементарное математическое выражение вида a+b, a-b, a*b, a/b), вычислить значение...

Изменение размерности массива ArrayList
Здравствуйте. У меня задание переопределить методы списка с помощью массива. class MyList &lt;E&gt; implements List &lt;E&gt; { int...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru