Приложение vb.net работает с файлами, перетаскиваемыми на исполняемый файл, но вылетает, если в пути к файлу есть пробел - PullRequest
2 голосов
/ 16 июня 2011

Я разрабатываю приложение в vb.net.Вы перетаскиваете файл любого типа на исполняемый файл, и появляется всплывающее окно с некоторыми опциями для файла, затем он сохраняет файл в другом месте, работает с магией SQL и т. Д. По большей части он отлично работает.

Единственная проблема, которую я обнаружил, заключается в том, что если путь к файлу содержит пробелы, приложение немедленно завершит работу с окном ошибки: http://i.stack.imgur.com/mVamO.png

Я использую: Private filename as String= Command $ Это находится прямо внутри объявления класса моей формы, а не внутри подпрограммы / функции.Без этой строки моя программа работает нормально (хотя и бесполезно, без доступа к файлу).Я также попытался (я думаю, что это было, у меня нет кода со мной в настоящее время): личное имя файла как String = Environment.CommandLine И у него была та же проблема.

Итак, вvb.net, есть ли способ перетащить файл в исполняемый файл и использовать это имя пути, даже если в имени пути есть пробелы?

Ответы [ 2 ]

4 голосов
/ 16 июня 2011

Windows поместит двойные кавычки вокруг переданного аргумента командной строки, если путь к перетаскиваемому файлу содержит пробелы.Проблема в том, что вы используете древний способ VB6 для получения аргумента, вы видите двойные кавычки.Против чего .NET затем возражает, двойная кавычка недопустима в имени пути.Используйте это:

        Dim path = Command$.Replace("""", "")

Или. NET способ:

Sub Main(ByVal args() As String)
    If args.Length > 0 then
        Dim path = args(0)
        MsgBox(path)
        '' do something with it..
    End If
End Sub
0 голосов
/ 16 июня 2011

Если возможно, опубликуйте свой код, так как это может быть что угодно. Обычно, после получения CommandLine Arg, я пытаюсь использовать оболочку System.IO.File и использовать встроенные механизмы для проверки файла, а затем продолжить работу с ним, используя как можно больше IO. Если вы пытаетесь напрямую манипулировать файлом, пробелы могут стать проблемой.

Кроме того, есть способ преобразовать длинный путь к файлу + имя в старый магический путь к файлу DOS 8.3 + имя. Однако я пойду в НИОКР после того, как увижу, что вы делаете в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...