powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите в упрощении кода
17 сообщений из 17, страница 1 из 1
Помогите в упрощении кода
    #38839281
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На работе дали задание - объединить несколько скриптов в один и упростить полученное. Скрипты рабочие, проверяют несколько листов на наличие нужных данных, и выводят их в на листы 9 (ПНОС ДЕБЛОКИР) и 10 (ПНОС КОНТУРА). Часть я уже объединил без проблем, т.к. очень схожие. Сейчас надо понять как их упрощать, потому что есть еще несколько, которые надо дописать в скрипт. Проблема в упрощении. И да, я не гуру VB, и надеюсь на максимально простые ответы, а можно и с примерами даже))

Вот собственно сам скрипт:
Код: vbnet
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.
Sub Skye()
Dim FinalCol As Integer     ' Последний столбец
Dim FinalRow As Long        ' Последняя строка
Dim FinalRowTab As Long     ' Последняя строка таблицы
Dim StrH As String          ' часы
Dim StrMIN As String        ' минуты
Dim IntSEK As String        ' секунды
Dim StrY As String          ' год
Dim StrM As String          ' месяц
Dim StrD As String          ' число
Dim StrDATA As String       ' Дата
Dim StrNAME As String       ' Имя
Dim StrDESC As String       ' Дескриптор
Dim StrOLDST As String      ' старое состояние
Dim StrSTAT As String       ' новое состояние
Dim StrOPER As String       ' Оператор

'База SQL унас на листе №1
'Пустая таблица для Регуляторов на листе№2
'Пустая таблица для ключей на листе№3
'На листе №4 унас все точки с дескрипторами выкачанные из Control Builder
'На листе №5 образец запроса в SQL

   Sheets("ПНОС ДЕБЛОКИР").Activate
   ActiveSheet.Range("A2:K10000").Value = ""
   Cells(2, 1).Select
   Sheets("ПНОС КОНТУРА").Activate               'Очистка таблиц
   ActiveSheet.Range("A2:K10000").Value = ""
   Cells(2, 1).Select

Sheets("H1SRV_NEW").Activate                                'База SQL у нас на листе №1
FinalCol = Cells(1, Columns.Count).End(xlToLeft).Column     'Последняя заполненый столбец в первой строке
FinalRow = Cells(Rows.Count, "C").End(xlUp).Row             'Последняя заполненая строка в третьем столбце

For i = 1 To FinalRow                                      'Заполняем таблицу REG на листе№2
    If Cells(i, 3).Value = "pida.mode" Then
        IntY = Left(Cells(i, 1), 4)
        IntM = Mid(Cells(i, 1), 6, 2)
        IntD = Mid(Cells(i, 1), 9, 2)
        IntH = Mid(Cells(i, 1), 12, 2)
        IntMIN = Mid(Cells(i, 1), 15, 2)
        IntSEK = Mid(Cells(i, 1), 18, 2)
        StrDATA = (IntD & "." & IntM & "." & IntY & " " & IntH & ":" & IntMIN & ":" & IntSEK) 'Собираем дату
        
        StrOPER = Mid(Cells(i, 8), 1) ' Заполняем столбец с операторами
        
        StrNAME = Mid(Cells(i, 2), 1)
        Sheets("DESC").Activate                            'На листе №4 у нас все точки с дескрипторами выкачанные из Control Builder
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row 'Соответственно ищем нужный
            For j = 1 To FinalRowTab
                If Cells(j, 1).Value = StrNAME Then
                StrDESC = Cells(j, 3).Value
                Sheets("H1SRV_NEW").Activate
                Exit For
                End If
            Next j
        StrOLDST = Mid(Cells(i, 4), 1)
        StrSTAT = Mid(Cells(i, 5), 1)
        StrTITUL = Cells(i, 10).Value   'Ищем нужный титул, если в базе титул только один - можно это закоментить
           If Left(StrTITUL, 3) = "510" And Left(StrTITUL, 4) <> "510a" Or StrTITUL = "MCK" Or StrTITUL = "10GB301" Or StrTITUL = "19" Or StrTITUL = "3" Or StrTITUL = "5" Or StrTITUL = "10PA101" Or StrTITUL = "7" Or StrTITUL = "11" Or StrTITUL = "2" Or StrTITUL = "8" Or StrTITUL = "4" Or StrTITUL = "9" Or StrTITUL = "1" Or StrTITUL = "10" Then
                StrTITUL = "т.510 гидрокрекинг"
                    ElseIf Left(StrTITUL, 4) = "510a" Then
                    StrTITUL = "т.510A РК и ГДА"
                        ElseIf Left(StrTITUL, 3) = "512" Then
                       StrTITUL = "т.512"
                            ElseIf Left(StrTITUL, 3) = "545" Then
                            StrTITUL = "т.545"
                                ElseIf Left(StrTITUL, 3) = "521" Or StrTITUL = "21GB103_DK" Or StrTITUL = "21GB103" Then
                                StrTITUL = "т.521 пр-во водорода"
                                    ElseIf Left(StrTITUL, 3) = "211" Or StrTITUL = "GK51" Or StrTITUL = "21GB103" Then
                                    StrTITUL = "21-10/3М"
           End If
        Sheets("ПНОС КОНТУРА").Activate
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row
        Cells(FinalRowTab + 1, 1).Value = "ПНОС"
        Cells(FinalRowTab + 1, 2).Value = StrDATA
        Cells(FinalRowTab + 1, 3).Value = StrNAME
        Cells(FinalRowTab + 1, 4).Value = StrDESC
        Cells(FinalRowTab + 1, 5).Value = StrOLDST
        Cells(FinalRowTab + 1, 6).Value = StrSTAT
        Cells(FinalRowTab + 1, 7).Value = StrTITUL
        Cells(FinalRowTab + 1, 9).Value = "Начальник установки"
        Cells(FinalRowTab + 1, 11).Value = StrOPER
        Sheets("H1SRV_NEW").Activate
    End If
    
    Next i
For i = 1 To FinalRow                                   'Заполняем таблицу KEY на листе№3
    If Right(Cells(i, 3), 8) = "_DK.PVFL" Then
        
        StrOPER = Mid(Cells(i, 8), 1) ' Заполняем столбец с операторами
        StrNAME = Cells(i, 3).Value
        a = Split(StrNAME, ".")
        StrNAME = a(0)
        StrDESC = "Деблокировочный ключ"
        StrSTAT = Mid(Cells(i, 5), 1)
            If StrSTAT = "OFF" Then
                StrSTAT = "Деблокирован"
                Else: StrSTAT = "Востановлен"
            End If
            
        StrTITUL = Cells(i, 10).Value
            If Left(StrTITUL, 3) = "510" And Left(StrTITUL, 4) <> "510a" Or StrTITUL = "MCK" Then
                StrTITUL = "т.510 гидрокрекинг"
                    ElseIf Left(StrTITUL, 4) = "510a" Or StrTITUL = "10GB301" Or StrTITUL = "10GB301_DK" Then
                    StrTITUL = "т.510A РК и ГДА"
                        ElseIf Left(StrTITUL, 3) = "512" Then
                        StrTITUL = "т.512"
                            ElseIf Left(StrTITUL, 3) = "545" Then
                            StrTITUL = "т.545"
                                ElseIf Left(StrTITUL, 3) = "521" Or StrTITUL = "21GB103_DK" Or StrTITUL = "21GB103" Then
                                StrTITUL = "т.521 пр-во водорода"
                                    ElseIf Left(StrTITUL, 3) = "211" Or StrTITUL = "GK51" Or StrTITUL = "21GB103" Then
                                    StrTITUL = "т.521 пр-во водорода"
           End If
        Sheets("ПНОС ДЕБЛОКИР").Select
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row
        Cells(FinalRowTab + 1, 1).Value = "ПНОС"
        Cells(FinalRowTab + 1, 2).Value = StrDATA
        Cells(FinalRowTab + 1, 3).Value = StrNAME
        Cells(FinalRowTab + 1, 4).Value = StrDESC
        Cells(FinalRowTab + 1, 5).Value = StrSTAT
        Cells(FinalRowTab + 1, 6).Value = "510 гидрокрекинг"
        Cells(FinalRowTab + 1, 8).Value = "Начальник установки"
        Cells(FinalRowTab + 1, 10).Value = StrOPER
        Sheets("H1SRV_NEW").Select
    End If
Next i

Sheets("H11SRV_NEW").Activate                                           'База SQL унас на листе №1
FinalCol = Cells(1, Columns.Count).End(xlToLeft).Column     'Последняя заполненый столбец в первой строке
FinalRow = Cells(Rows.Count, "C").End(xlUp).Row             'Последняя заполненая строка в третьем столбце

For i = 1 To FinalRow                                      'Заполняем таблицу REG на листе№2
    If Cells(i, 3).Value = "pida.mode" Then
        IntY = Left(Cells(i, 1), 4)
        IntM = Mid(Cells(i, 1), 6, 2)
        IntD = Mid(Cells(i, 1), 9, 2)
        IntH = Mid(Cells(i, 1), 12, 2)
        IntMIN = Mid(Cells(i, 1), 15, 2)
        IntSEK = Mid(Cells(i, 1), 18, 2)
        StrDATA = (IntD & "." & IntM & "." & IntY & " " & IntH & ":" & IntMIN & ":" & IntSEK) 'Собираем дату
        
        StrOPER = Mid(Cells(i, 8), 1) ' Заполняем столбец с операторами
        
        StrNAME = Mid(Cells(i, 2), 1)
        Sheets("DESC").Activate                                  'На листе №4 унас все точки с дескрипторами выкачанные из Control Builder
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row 'Соответственно ищем нужный
            For j = 1 To FinalRowTab
                If Cells(j, 1).Value = StrNAME Then
                StrDESC = Cells(j, 3).Value
                Sheets("H11SRV_NEW").Activate
                Exit For
                End If
            Next j
        StrOLDST = Mid(Cells(i, 4), 1)
        StrSTAT = Mid(Cells(i, 5), 1)
        StrTITUL = Cells(i, 10).Value   'Ищщем нужный титул, если в базе титул только один можно это закоментить
            If Left(StrTITUL, 3) = "510" And Left(StrTITUL, 4) <> "510a" Or StrTITUL = "MCK" Or StrTITUL = "10GB301" Or StrTITUL = "19" Or StrTITUL = "3" Or StrTITUL = "5" Or StrTITUL = "10PA101" Or StrTITUL = "7" Or StrTITUL = "11" Or StrTITUL = "2" Or StrTITUL = "8" Or StrTITUL = "4" Or StrTITUL = "9" Then
                StrTITUL = "т.510 гидрокрекинг"
                    ElseIf Left(StrTITUL, 4) = "510a" Or StrTITUL = "10GB301" Then
                    StrTITUL = "т.510A РК и ГДА"
                        ElseIf Left(StrTITUL, 3) = "512" Then
                        StrTITUL = "т.512"
                            ElseIf Left(StrTITUL, 3) = "545" Then
                            StrTITUL = "т.545"
                                ElseIf Left(StrTITUL, 3) = "521" Or StrTITUL = "21GB103_DK" Or StrTITUL = "21GB103" Then
                                StrTITUL = "т.521 пр-во водорода"
                                    ElseIf Left(StrTITUL, 3) = "211" Or StrTITUL = "GK51" Or StrTITUL = "21GB103" Then
                                    StrTITUL = "21-10/3М"
           End If
        Sheets("ПНОС КОНТУРА").Activate
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row
        Cells(FinalRowTab + 1, 1).Value = "ПНОС"
        Cells(FinalRowTab + 1, 2).Value = StrDATA
        Cells(FinalRowTab + 1, 3).Value = StrNAME
        Cells(FinalRowTab + 1, 4).Value = StrDESC
        Cells(FinalRowTab + 1, 5).Value = StrOLDST
        Cells(FinalRowTab + 1, 6).Value = StrSTAT
        Cells(FinalRowTab + 1, 7).Value = StrTITUL
        Cells(FinalRowTab + 1, 9).Value = "Начальник установки"
        Cells(FinalRowTab + 1, 11).Value = StrOPER
        Sheets("H11SRV_NEW").Activate
    End If

Next i
For i = 1 To FinalRow                                   'Заполняем таблицу KEY на листе№3
    If Right(Cells(i, 3), 8) = "_DK.PVFL" Then
        IntY = Left(Cells(i, 1), 4)
        IntM = Mid(Cells(i, 1), 6, 2)
        IntD = Mid(Cells(i, 1), 9, 2)
        IntH = Mid(Cells(i, 1), 12, 2)
        IntMIN = Mid(Cells(i, 1), 15, 2)
        IntSEK = Mid(Cells(i, 1), 18, 2)
        StrDATA = (IntD & "." & IntM & "." & IntY & " " & IntH & ":" & IntMIN & ":" & IntSEK)
        StrOPER = Mid(Cells(i, 8), 1) ' Заполняем столбец с операторами
        StrNAME = Cells(i, 3).Value
        a = Split(StrNAME, ".")
        StrNAME = a(0)
        StrDESC = "Деблокировочный ключ"
        StrSTAT = Mid(Cells(i, 5), 1)
            If StrSTAT = "OFF" Then
                StrSTAT = "Деблокирован"
                Else: StrSTAT = "Востановлен"
            End If
        StrTITUL = Cells(i, 10).Value
            If Left(StrTITUL, 3) = "510" And Left(StrTITUL, 4) <> "510a" Or StrTITUL = "MCK" Then
                StrTITUL = "т.510 гидрокрекинг"
                    ElseIf Left(StrTITUL, 4) = "510a" Or StrTITUL = "10GB301" Or StrTITUL = "10GB301_DK" Then
                    StrTITUL = "т.510A РК и ГДА"
                        ElseIf Left(StrTITUL, 3) = "512" Then
                        StrTITUL = "т.512"
                            ElseIf Left(StrTITUL, 3) = "545" Then
                            StrTITUL = "т.545"
                                ElseIf Left(StrTITUL, 3) = "521" Or StrTITUL = "21GB103_DK" Or StrTITUL = "21GB103" Then
                                StrTITUL = "т.521 пр-во водорода"
                                    ElseIf Left(StrTITUL, 3) = "211" Or StrTITUL = "GK51" Or StrTITUL = "21GB103" Then
                                    StrTITUL = "т.521 пр-во водорода"
           End If
        Sheets("ПНОС ДЕБЛОКИР").Select
        FinalRowTab = Cells(Rows.Count, "A").End(xlUp).Row
        Cells(FinalRowTab + 1, 1).Value = "ПНОС"
        Cells(FinalRowTab + 1, 2).Value = StrDATA
        Cells(FinalRowTab + 1, 3).Value = StrNAME
        Cells(FinalRowTab + 1, 4).Value = StrDESC
        Cells(FinalRowTab + 1, 5).Value = StrSTAT
        Cells(FinalRowTab + 1, 6).Value = StrTITUL
        Cells(FinalRowTab + 1, 8).Value = "Начальник установки"
        Cells(FinalRowTab + 1, 10).Value = StrOPER
        Sheets("H11SRV_NEW").Activate
    End If
Next i
End Sub

...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839305
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть золотое правило программиста: работает - не трогай
для того, чтобы делать рефакторинг - нужны основания

И лучше не делать такую длинную простыню - это сложно воспринимать и отлаживать - каждый смысловой кусок лучше оформить в виде отдельной функции, а из главной только вызывать их. А вы, как я понимаю, хотите эту простыню еще и удлиннить.
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839312
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я хочу просто сделать так, что бы в 1 клик выполнялись все нужные функции, и при этом максимально быстро.
Да, оно работает, но работает оно долго, и путем последовательного выполнения 5-и скриптов. Надо что бы выполнялось хотя бы в один клик... просто здесь много одинаковых переменных. Например дата одинаковая, но вызывается не один раз. И потому, как мне кажется, проще написать все в одну "простыню", чем несколько раз делать одно и то же))
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839340
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skyeмаксимально быстро.начните с этого
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839346
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProSkyeмаксимально быстро.начните с этого ...то есть уберите переключение листов, на это уходит время.

плюс, поставьте в начале скрипта
Код: vbnet
1.
Application.ScreenUpdating = False

а в конце
Код: vbnet
1.
Application.ScreenUpdating = True
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839367
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо, теперь работает он и правда быстрее, без приступов эпилепсии (теперь он не листает так истерично страницы) :D
Есть ли еще идеи по упрощению какие-нибудь. Мне все же не нравится эта дата, которая занимает кучу места, вызывается несколько раз, и делает код визуально большим и страшным...
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839394
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что тут упрощается-то?
есть четыре цикла, каждый из них работает со своим условием и со своим листом. Навскидку я не вижу между ними ничего общего
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839395
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skyeделает код визуально большим и страшным...рецепт от этого я уже сказал - раздельные функции
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839514
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, что-ж, и на том спасибо, попробую что-нибудь сделать сам))
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я к чему - самая длинная операция - это чтение и запись ячейки
можно запихнуть все в один цикл, но если общее количество чтений/записей ячеек не изменится, то выгоды не будет.
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839620
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, хм... ваша правда, даже если все то дело сократить до безбожности - он все-равно будет проверять ни одну сотню строк, так что особой выгоды не будет. Спасибо что образумили :)
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839681
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skye,

еще очень хорошо повлияет на быстродействие обработка данных ячеек не напрямую в ячейках, а в памяти. Для этого как правило массивы используются. Но здесь надо понимать суть кода и конечную цель. Если необходимо изменять значения ячеек в каждый проход цикла, то выгоды никакой не будет. Если же есть возможность занести все данные в массив, обработать циклами данные этого массива и так же единым махом вернуть на листы - то можно будет может в разы, а то и десятки раз сократить время выполнения.
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839761
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И все же с меня просят не просто ускорить его, а переделать... так что нужна помощь в том, как все это дело компактненько написать без нескольких прогонов по одним и тем же страницам, возможно с помощью Массивов, как сказали выше...
Пипл, выручайте, ибо в VB я совершенно не спец((
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839806
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Skye,
Если в VB не спец - почему просят именно Вас? И выручайте в чем выражается - за Вас переписать код? Как-то это...Неправильно. Оно Вам надо - хотя бы что-то начните делать, пробуйте, оптимизируйте. Советов Вам Shocker.Pro надавал достаточно.
За всех говорить не буду - я подобным альтруизмом не страдаю. Может быть у кого-то будет желание потренироваться на Вашем коде, но не у меня точно.
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839889
Skye
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist, я не прошу переписывать его за меня, но от примеров как это сделать я бы не отказался. Или пару примеров как это примерно должно выглядит.
И попросили меня это сделать в качестве практики, что бы я научился. Она подходит к концу и у меня не шибко много времени что бы читать все чуть ли не с нуля...потому мне и нужны дельные советы или пара примеров что бы понимать что к чему.
И да, практика и переписывания чужого кода для меня эффективней, нежели штурм форумов и чтение учебников. Если уж учить то на реальном, рабочем примере, а учебники потом, когда время будет)
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839975
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyeИ да, практика и переписывания чужого кода для меня эффективней, нежели штурм форумов и чтение учебников. Если уж учить то на реальном, рабочем примере, а учебники потом, когда время будет)бред
...
Рейтинг: 0 / 0
Помогите в упрощении кода
    #38839979
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SkyeИ попросили меня это сделать в качестве практики, что бы я научилсявообще, очень оригинально, вас просят научиться, а вы пытаете переложить задачу на тех, кто умеет, чтобы сделали за вас. Учитесь, кто мешает? Будут вопросы - ответим.
Оптимизация - вещь тонкая, она основывается на опыте и знаниях, а не на "учебники я потом читать буду может быть"
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите в упрощении кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]