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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> количество элементво в листбокс, подскажите 
V
    Опции темы
artzr
Дата 8.2.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В общем вопрос нужно опреелить кол-во элементво в лист боксе, собственно зачем это, пытаюст создать программу для сравнения файла с файлами на дерриктории с помощью md5 hash, проблема в том что работает правильно только когда в дирректории один файл. Использовал коды с разных источников, поэтому не судите строго, 1 моя программа. Подскжите как можно исправить этот код. 

Код

Imports System.IO
Imports System.Security.Cryptography


Public Class Form1

    Dim a As String
    
    Dim i, im(s) As String
    Dim b(100) As String
    Dim Counter As Integer
    Dim fileFullName As String
    Dim s As Integer



    Function GetFileList(ByVal dirInf As IO.DirectoryInfo) As IO.FileInfo()
        Dim lst As New List(Of IO.FileInfo)
        For Each di As IO.DirectoryInfo In dirInf.GetDirectories
            lst.AddRange(GetFileList(di))
        Next
        lst.AddRange(dirInf.GetFiles)
        Return lst.ToArray
    End Function

    Function GetFileNames(ByVal dirName As String) As String()
        Dim lst As New List(Of String)
        Dim di As New IO.DirectoryInfo(dirName)
        Dim files() As IO.FileInfo = GetFileList(di)
        For Each fi As IO.FileInfo In files
            Dim fileFullName As String = fi.FullName
            Dim dirNameLength As Integer = dirName.Length + 1
            Dim fileName As String = fileFullName.Substring(dirNameLength)
            lst.Add(fileName)

        Next

        Return lst.ToArray
    End Function

    Private Sub ButtonDirectoriesView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDirectoriesView.Click



        If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim files() As String = GetFileNames(FolderBrowserDialog1.SelectedPath)
            Me.TextBoxDirectoryName.Text = Me.FolderBrowserDialog1.SelectedPath
            Me.ListBoxFileList.Items.Clear()
            Me.ListBoxFileList.Items.AddRange(files)


            im(s) = TextBoxDirectoryName.Text + "/" + files(s)

        End If


    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



        Dim hashCode, hashCode1 As Byte()

        Using stream As Stream = File.OpenRead(OpenFileDialog1.FileName)
            hashCode = MD5.Create.ComputeHash(stream)

        End Using





        Using stream1 As Stream = File.OpenRead(im(s))
            hashCode1 = MD5.Create.ComputeHash(stream1)
        End Using
        If (Convert.ToBase64String(hashCode)) = Convert.ToBase64String(hashCode1) Then TextBox1.Text = "да" Else TextBox1.Text = "нет"


    End Sub



    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        OpenFileDialog1.Filter = "Все файлы|*.*"
        OpenFileDialog1.FilterIndex = 1
        OpenFileDialog1.ShowDialog()

        a = OpenFileDialog1.FileName

        TextBox1.Text = OpenFileDialog1.FileName


    End Sub
End Class




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


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


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

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



Цитата(artzr @  8.2.2011,  00:19 Найти цитируемый пост)
В общем вопрос нужно опреелить кол-во элементво в лист боксе

Код

ListBox1.Items.Count



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


Новичок



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

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



Спасибо. из-за чего происходит вот эта ошибка "Index was outside the bounds of the array." на этой строке, значение im получается пустое
строчка:
Код

 im(t) = TextBoxDirectoryName.Text + "\" + files(t)

пред идущий код:
Код

Imports System.IO
Imports System.Security.Cryptography


Public Class Form1

    Dim a As String
    
    Dim i, im(t), t, f As String
    Dim b(100) As String
    Dim Counter As Integer
    Dim fileFullName As String
    Dim s As Integer



    Function GetFileList(ByVal dirInf As IO.DirectoryInfo) As IO.FileInfo()
        Dim lst As New List(Of IO.FileInfo)
        For Each di As IO.DirectoryInfo In dirInf.GetDirectories
            lst.AddRange(GetFileList(di))
        Next
        lst.AddRange(dirInf.GetFiles)
        Return lst.ToArray
    End Function

    Function GetFileNames(ByVal dirName As String) As String()
        Dim lst As New List(Of String)
        Dim di As New IO.DirectoryInfo(dirName)
        Dim files() As IO.FileInfo = GetFileList(di)
        For Each fi As IO.FileInfo In files
            Dim fileFullName As String = fi.FullName
            Dim dirNameLength As Integer = dirName.Length + 1
            Dim fileName As String = fileFullName.Substring(dirNameLength)
            lst.Add(fileName)

        Next

        Return lst.ToArray
    End Function

    Private Sub ButtonDirectoriesView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDirectoriesView.Click



        If FolderBrowserDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim files() As String = GetFileNames(FolderBrowserDialog1.SelectedPath)
            Me.TextBoxDirectoryName.Text = Me.FolderBrowserDialog1.SelectedPath
            Me.ListBoxFileList.Items.Clear()
            Me.ListBoxFileList.Items.AddRange(files)
            t = ListBoxFileList.Items.Count()


            im(t) = TextBoxDirectoryName.Text + "\" + files(t)

        End If

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


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


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

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



Цитата(artzr @  8.2.2011,  00:43 Найти цитируемый пост)
Спасибо. из-за чего происходит вот эта ошибка "Index was outside the bounds of the array." на этой строке, значение im получается пустое

В бейсике при объявлении массива указывается количество элементов, в то же время индексация начинается с нуля. Таким образом при объявлении
Код

Dim arr(5)

элемента с индексом 5 не существует и при попытке обратиться к нему будет вылетать такое исключение. То есть последний индекс на единицу меньше количества элементов.


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


Новичок



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

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



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

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

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


 




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


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

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