Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение, или удаление экземпляра класса 
:(
    Опции темы
ShamanK
Дата 28.2.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



имеется класс
Код

Public Class Ticks
    Public Namber As Integer
    Public Price As Integer
End Class

на форме есть текстовое поле TxPrT для ввода цены и NomTick, для отображения номера вводимой цены.
и есть следующий код:
 
Код

   Dim count As Integer = 4
    Dim Tick(count) As Ticks
    Dim k As Integer = 0

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        If k <= count Then

            Tick(k) = New Ticks
            Tick(k).Namber = k
            Tick(k).Price = TxPrT.Text
            k = k + 1

            NomTick.Text = k
            TxPrT.Text = ""

        End If

        If k > count Then

            For y = 0 To count - 1
                Tick(y).Namber = Tick(y + 1).Namber
                Tick(y).Namber = Tick(y + 1).Price
            Next
            Tick(count).Namber = k
            Tick(count).Price = TxPrT.Text
            k = k + 1
            NomTick.Text = k
            TxPrT.Text = ""
        End If

    End Sub


я вручную ввожу цены. 
и кликаю на кнопку в которой обработчик события. 
пока количество вводимых цен меньше или равно размерности массива экземпляров класса создается новый экземпляр класса
как только количество вводимых цен БОЛЬШЕ экземпляров класса, необходимо сдвинуть все данные 
я использую цикл, в котором прогоняю все экземпляры класса и "смещаю" значения на один, тем самым высвобождая последний экземпляр класса для внесения новых данных. 
скорее всего наверно есть более простое решение, когда можно просто удалить самый первый экземпляр класса, тем самым освободив место для нового экземпляра в массиве, но как это сделать хз

в моем примере, все работает хорошо, до тех пор пока количество вводимых цен не превышает размер массива. 
как только это происходит - в цикле все перемещается нормально, а вот в последний экземпляр класса почему то новые значения не вводятся. выдает ошибку:

Код

Необработанное исключение типа "System.InvalidCastException" произошло в Microsoft.VisualBasic.dll

Дополнительные сведения: Приведение строки "" к типу "Integer" является недопустимым.

и высвечивается строка 

Код

Tick(count).Price = TxPrT.Text



подскажите в чем туплю? 




PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(ShamanK @  28.2.2010,  19:26 Найти цитируемый пост)
как только количество вводимых цен БОЛЬШЕ экземпляров класса, необходимо сдвинуть все данные 

Я в соседней теме выложил тебе пример, в котором решается такая задача, может сначала следовало изучить пример, а потом уже вопрос задавать?
Цитата(ShamanK @  28.2.2010,  19:26 Найти цитируемый пост)
Приведение строки "" к типу "Integer" является недопустимым

Ну здесь совсем просто: пустую строку действительно в число не превратишь.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ShamanK
Дата 28.2.2010, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 24.2.2010

Репутация: нет
Всего: нет



я разобрался в твоем примере 

Код

           Dim lastTime = _pointList(_pointList.Count - 1).Time - KeepingRange
            While _pointList(0).Time < lastTime
                _pointList.RemoveAt(0)
            End While


и пытался сделать также.. однако вылезает ошибка

в строке 
Код

Tick.RemoveAt(0)

пишет: 
Код

RemoveAt не является членом "System.Array"


относительно пустой строки - она не пустая. я ввожу туда число. 
PM MAIL   Вверх
diadiavova
Дата 28.2.2010, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(ShamanK @  28.2.2010,  23:15 Найти цитируемый пост)
и пытался сделать также.. однако вылезает ошибка

в строке 
Tick.RemoveAt(0)

пишет: 
RemoveAt не является членом "System.Array"


Ну это естественно, у меня ведь там не массив. Размер массива изменить нельзя, именно поэтому я там использовал другую коллекцию. Можно, конечно, использовать Redim, но это не лучший вариант.
Цитата(ShamanK @  28.2.2010,  23:15 Найти цитируемый пост)
относительно пустой строки - она не пустая. я ввожу туда число.  

Просмотри работу программы в отладчике

Это сообщение отредактировал(а) diadiavova - 28.2.2010, 23:19


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0997 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.