Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: имя файла из пути Добавлено: 20.05.06 03:39  

Автор вопроса:  Antibiotic
У меня есть текстовая переменная Path значание которой например "C:\temp\1.bat" как из этой переменной получить просто 1.bat?
Если не ошибаюсь то через цикл.. Нашел пример обрезания слева.. но там число символов известно заранее да и тем более мне как раз левая часть то и нужна..

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #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
все гораздо проще чем вы думаете!
Public Shared Function GetFileName(ByVal path As String) As String
     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
BAT=Dir(Path)
MsgBox BAT

это атавизмы VB6.. от которых следует избавляться...

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #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.. именно через строки!(это еще одна сложность перехода..) И совершенно не подозревают о том, что в данном случае строка является путем! А вот для работы с путями в НЕТ предусмотрен специальный класс:
System.IO.Path

Который позволяет получить все, что угодно.. путь к родительской папке,название файла,расширение, название диска и еще туеву хучу всяких полезностей..
Вот про эти,специализированные классы,к сожалению, в букварях или вообще ничего не говорится.. либо крайне скудно. Ибо описать все классы 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-сайт: xury.zx6.ru
 Профиль | | #12
Добавлено: 22.05.06 06:19
те, кто перешел с VB6 и пытаются решить эту задачу через одно место


Слышь, гений. Посмотреть имя класса и медведь блин может, который блин арёт ПРЕВЕД в самый неподходящий момент. а нормальное, универсальное решение, которое и на другие языки (дА!! они существуют!!!) перенести можно вредным никогда не будет. Короче, про пути и строки за меня всё сказал один парень в теме про нивичков.

Ответить

Номер ответа: 13
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #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 на НЕТ.. Пусть даже эти решения там были более,чем приемлемы, но в НЕТ наверняка есть более подходящее решение. Если же такового не нашлось.. тогда да.. приходится огород городить и ручками парсить строки..

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам