Страница: 1 | 2 |
Вопрос: имя файла из пути
Добавлено: 20.05.06 03:39
Автор вопроса: Antibiotic
У меня есть текстовая переменная Path значание которой например "C:\temp\1.bat" как из этой переменной получить просто 1.bat?
Если не ошибаюсь то через цикл.. Нашел пример обрезания слева.. но там число символов известно заранее да и тем более мне как раз левая часть то и нужна..
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #1
Добавлено: 20.05.06 04:53
можни и через цикл... а можно и без
Dim Path As String
Dim BAT As String
Dim T() As String
Private Sub Form_Load()
Path = "C:\temp\bullshit\trash\garbage\rubbish\1.bat"
T = Split(Path, "\"
BAT = T(UBound(T))
MsgBox BAT
End Sub
Номер ответа: 2
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #2
Добавлено: 20.05.06 09:21
все гораздо проще чем вы думаете!
Member of: System.IO.Path
Summary:
Returns the file name and extension of the specified path string.
Номер ответа: 3
Автор ответа:
AlexNet
Вопросов: 0
Ответов: 4
Профиль | | #3
Добавлено: 20.05.06 11:02
На самом деле еще проще
Dim BAT As String
BAT=Dir(Path)
MsgBox BAT
Это если файл уже существует, если нет, то у Вас вполне не плохой вариант
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 20.05.06 11:30
MsgBox BAT
это атавизмы VB6.. от которых следует избавляться...
Номер ответа: 5
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #5
Добавлено: 20.05.06 15:39
блин, я опять не посмотрел на раздел... ну, будем надеяться , что код рабочий
Номер ответа: 6
Автор ответа:
Antibiotic
Вопросов: 9
Ответов: 34
Профиль | | #6
Добавлено: 21.05.06 07:04
спасибо
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 21.05.06 15:53
неужели в букваре про нет нету раздела работы со строками? или нетчики как крутые кулхацкеры, документацию они не читают? ))
Номер ответа: 8
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #8
Добавлено: 21.05.06 18:04
Ну почему же.. раздел есть! Вот поэтому новички или те, кто перешел с VB6 и пытаются решить эту задачу через одно место! Примерно как в ответах 1 и 3.. именно через строки!(это еще одна сложность перехода..) И совершенно не подозревают о том, что в данном случае строка является путем! А вот для работы с путями в НЕТ предусмотрен специальный класс:
Который позволяет получить все, что угодно.. путь к родительской папке,название файла,расширение, название диска и еще туеву хучу всяких полезностей..
Вот про эти,специализированные классы,к сожалению, в букварях или вообще ничего не говорится.. либо крайне скудно. Ибо описать все классы FW-задача нереальная.. Именно поэтому новички и пытаются решить тревиальную задачу извращенными методами, которыми когда то пользовались в VB6..
А вот что касается чтения документации, MSDN и Object Browser.. тут я с тобой согласен.. лень людская поистине безгранична!!!
Номер ответа: 9
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #9
Добавлено: 21.05.06 23:28
универсальность всегда замедляла быстродействие и увеличала потребности ресурсов...
И так будет всегда...
И классы в вашем .NET которые получают
В тот момент когда эти полезности нах никому ненужны, нужно имя файла! Будут всегда замедлять быстродействие, а потом следующий пост Antibiotic будет "А почему так много памяти" или "Почему так долго"...
Номер ответа: 10
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #10
Добавлено: 21.05.06 23:56
HACKER
я даже спорить с тобой больше не буду... недалекий ты человек, если не понимаешь очевидной вещи.. что эта ф-ия объявлена как Shared, соответсвенно, для её вызова не надо создавать экземпляр класса!! Ты просто вызываешь её так, как будто она расположена в отдельном модуле твоей программы! И откуда тебе знать что внутри этой ф-и? Может там код подобный посту №1.. или там более рациональное решение на низком уроне!!! И с чего ты взял,что это будет работать медленнее, чем твой родной код на VB6??? Как ты можешь судить об этом?? ты что, тестил эту ф-ю???
А раз не нужны.. не юзай их! Но зачем мне писать примитивный парсер по получению имени файла, когда ОН УЖЕ НАПИСАН??????? И наверняка написан более грамотно, чем это сделаю я..
Номер ответа: 11
Автор ответа:
Antibiotic
Вопросов: 9
Ответов: 34
Профиль | | #11
Добавлено: 22.05.06 04:33
я согласен что вопросы у меня ламерские да и задача программы не такая супер гениальная и сногсшибательная.. но я учусь.. и с каждым ответом на мой вопрос продвигаюсь чудь дальше..
потом все равно будет оптимизация..
и новые приложения..
и вопросы обещаю по сложнее..
просто если честно я на нет скакнул с VBA Accessa.. поэтому в будующем обещаю вопросы уже по рубрике Базы данных..
Номер ответа: 12
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #12
Добавлено: 22.05.06 06:19
Слышь, гений. Посмотреть имя класса и медведь блин может, который блин арёт ПРЕВЕД в самый неподходящий момент. а нормальное, универсальное решение, которое и на другие языки (дА!! они существуют!!!) перенести можно вредным никогда не будет. Короче, про пути и строки за меня всё сказал один парень в теме про нивичков.
Номер ответа: 13
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #13
Добавлено: 22.05.06 06:27
п.с. я не совсем имел в виду, что классы-это плохо. но не называть же чистый кусок кода в две-три строчки - через задницу?
Номер ответа: 14
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #14
Добавлено: 22.05.06 13:20
Morpheus, я никогда не называл и не считал себя гением, но тот код,что ты дал ему.. в НЕТ он работать не будет! А учитывая уровень его знаний (судя по его вопросам) переделать под НЕТ его он вряд ли сможет. Следовательно, твой код в данной ситуции бесполезен. Да, он рабочий.. и он работает в VB6, но это НЕТ.. и зачем давать новичку заведомо неверный ответ?..Да, ты ошибся разделом.. позже признав это.. но согласись, что в НЕТ есть более грамотный ответ на его вопрос! Любую задачу можно решить несколькими способами, но твой код (имхо) в данной ситуации не лучший.. Это тоже выход... только вот через что?
Номер ответа: 15
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #15
Добавлено: 22.05.06 13:26
и говоря о том, что те кто перешел с VB6 (я сам из их числа) пытаются решить эту задачу через одно место.. я вовсе не пытался кого либо задеть или оскорбить! Просто люди, в силу незнания классов FW начинают извращаться и переносить решения из VB6 на НЕТ.. Пусть даже эти решения там были более,чем приемлемы, но в НЕТ наверняка есть более подходящее решение. Если же такового не нашлось.. тогда да.. приходится огород городить и ручками парсить строки..