Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Что за ботва? Добавлено: 20.04.06 21:24  

Автор вопроса:  Yeputons | ICQ: 278444762 
Делаю динамический массив, и вдруд, когда я его переразмериваю второй раз, VB пишет:
Ошибка №10: "Массив фиксированный или временно заблокироован". Что это за ботва, и как с ней бороться?

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #1 Добавлено: 20.04.06 21:51
Как бороться?
Делать нефиксированный массив (динамический)

Ответить

Номер ответа: 2
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #2 Добавлено: 20.04.06 23:30
В начале процедуры/модуля пишется:
Dim MyArray() As Byte


А потом можно динамически какую угодно размерность задавать с помощью слова ReDim:
ReDim MyArray(255, 255) As Byte

Ответить

Номер ответа: 3
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #3
Добавлено: 21.04.06 00:47
Делаю динамический массив, и вдруд, когда я его переразмериваю второй раз

Судя по этим словам, чел в курсе...

Давай код - ни фига не понятно...

Ответить

Номер ответа: 4
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #4 Добавлено: 21.04.06 05:45
Значит, массив оказывается временно заблокирован.

Ответить

Номер ответа: 5
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #5 Добавлено: 21.04.06 09:42
А как я его мог заблокировать? И как его разблокировывать?
Код примерно такой:
Public RU() As String
Public RP() As String
Public RB() as string

...
While Not EF 'EF - флаг выхода из цикла
    ReDim Preserve RU(St) As String
    ReDim Preserve RP(St) As String
    ReDim Preserve RB(St) As String
    ...
    St = St + 1
Wend
...
Это все, где мои массивы изменяются, в остальном они только в правой части оператора присваивания

Ответить

Номер ответа: 6
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #6
Добавлено: 21.04.06 11:14
в остальном они только в правой части оператора присваивания

А где тогда они получают значения?

А приложение многопоточное?

Короче, ты не всё показал. То, что ты привёл у меня работает:
Public Class Form1
    Public arr1() As String
    Public arr2() As String
    Public arr3() As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim st As Integer
        Do While st < 500
            ReDim Preserve arr1(st)
            ReDim Preserve arr2(st)
            ReDim Preserve arr3(st)
            st += 1
        Loop
    End Sub
End Class


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

Ответить

Номер ответа: 7
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 21.04.06 11:38
Да, по этому коду нихрена не скажешь.
Можешь попробовать SafeArrayUnlock, но это на свой страх и риск... Лучше ищи где сам перекосячил.

Ответить

Номер ответа: 8
Автор ответа:
 Barsik



Разработчик Offline Client

ICQ: 343368641 

Вопросов: 17
Ответов: 686
 Web-сайт: barsik.newmail.ru
 Профиль | | #8
Добавлено: 21.04.06 12:22
криво юзать всякие там SafeArrayUnlock...
давай полный листинг выкладывай, а там и посмотрим

Ответить

Номер ответа: 9
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #9 Добавлено: 21.04.06 18:14
Понял, что у меня за баг был. Исправил. Sne спасибо.

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 24.04.06 10:06
Sne спасибо

За то что не постился в этом топе. Остальные повелись как лохи :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам