Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2017, 20:19   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Работа с файлом с некорректным (длинным) путем

Здравствуйте Уважаемые программисты!
Помогите пожалуйста исправить код ниже (vs2010 vb.net), который иногда выдает ошибку в процедуре "Private Sub btn_Click".
Поясню: В LbPathxls.Text (в label на форме) при запуске формы записывается путь к текущему открытому файлу excel. Затем в процедуре "Private Sub btn_Click" (кнопка на форме) происходит обращение к этому файлу excel. И вот здесь происходит ошибка, замечено что когда длинный путь или в пути встречаются какие-нибудь символы, двойные и более пробелы.
Заранее спасибо!

Код:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim args As String = ""
        For Each arg As String In My.Application.CommandLineArgs
            args &= arg & " "
        Next

        'отобразить полный путь к файлу excel в label:
        LbPathxls.Text = args

        Dim oXL = GetObject(, "Excel.Application")
        oSheet = oXL.ActiveWorkbook.Worksheets("111")

        oSheet = Nothing
        oXL = Nothing
End Sub
Код:
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
        Dim oXL = GetObject(, "Excel.Application")

        Dim DirInfo As New IO.DirectoryInfo(Me.LbPathxls.Text)

        For i As Integer = 1 To oXL.Workbooks.Count
            If oXL.Workbooks(i).FullName = DirInfo.FullName Then
                oWB = oXL.Workbooks(i)
            End If
        Next
        oWB.Activate()
End Sub
ольгаг вне форума Ответить с цитированием
Старый 08.02.2017, 20:37   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так в ошибке-то что? И на какой строке?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.02.2017, 21:01   #3
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Ошибка "ArgumentException не обработано.Путь имеет недопустимую форму." на строке "Dim DirInfo As New IO.DirectoryInfo(Me.LbPathxls.Text) ".
Я думаю что ошибка из-за того, что в LbPathxls.Text записывается путь неправильно, т.е. не учитываются, например, двойные и более пробелы в папках пути.

Последний раз редактировалось ольгаг; 08.02.2017 в 21:09.
ольгаг вне форума Ответить с цитированием
Старый 08.02.2017, 21:07   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А что именно в нем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 08.02.2017, 21:13   #5
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Я думаю что кусок кода:
Код:
  Dim args As String = ""
        For Each arg As String In My.Application.CommandLineArgs
            args &= arg & " "
        Next
искажает истинный путь (т.е. в LbPathxls.Text записывается иной путь), например,
Код:
"c:\111     33.xls"
меняется (записывается в LbPathxls.Text) на "c:\111 33.xls".

Последний раз редактировалось ольгаг; 08.02.2017 в 21:16.
ольгаг вне форума Ответить с цитированием
Старый 08.02.2017, 21:49   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Передавайте программе путь в кавычках и не склеивайте ничего.

Код:
myprogram.exe "C:\111      333.xls"
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить файлы с длинным именем в Windows? R_G Windows 7 23.04.2016 09:52
Работа с cs.файлом Otar4ik C# (си шарп) 4 19.09.2015 07:09
Задача по длинным строкам TesLa1992 Помощь студентам 3 20.07.2011 19:13
Работа с файлом. Pascaler Помощь студентам 2 27.05.2010 20:46
работа с файлом Cpluser Общие вопросы .NET 3 22.11.2009 22:45