2012-06-20 2 views
2

В принципе, я пытаюсь редактировать некоторые строки для редактирования каталогов. Я нашел код, чтобы попробовать и отредактировать каталоги, но когда я его использую, он не распознает «право» как функцию и только распознает его как свойство права, создавая таким образом ошибку.VB не может получить нужную функцию для работы со строками

Мне было интересно, есть ли что-то, что я не импортировал, или, возможно, «право» - это устаревшая функция, которая была использована в VB6, но заменена чем-то.

код у меня выглядит следующим образом:

Dim Foo As String 
Dim Bar As String 
Bar = 'some form of directory input i.e. my.computer.currentdirectory 
Foo = right(Bar, (Len(Bar) - InStrRev(Bar, "/"))) 
MsgBox(Foo) 

В идеале мне нужен либо лучший метод манипулирования каталогов или способ получить функциональность «правильной» работает.

ответ

4

Посмотрите System.IO.Path - есть много полезных инструментов для этого материала. GetDirectoryName и GetFileName особенно. Они работают в каталогах, а также имена файлов.

Bar = "C:\Dir1\Dir2\Dir3" 
Foo = IO.Path.GetFileName(Bar) 'now = Dir3 
Foo = IO.Path.GetDirectoryName(Bar) 'now = C:\Dir1\Dir2 

http://msdn.microsoft.com/en-us/library/system.io.path.getfilename
http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname

+0

Благодарим за информацию. Я использовал IO раньше для потоковедов/читателей, но я не думал, что у него будет такая функция. Благодарим за согласованность вашего ответа, что сделало все очень понятным, и я ожидаю, что ваш код, вероятно, очень читается по сравнению с множеством спагетти программиста. – Pharap

5

но когда я использую его, он не признает «право» как функцию и только признает его как свойство права, создавая таким образом ошибку.

Если у вас есть «правильная» собственность, вы можете полностью определить функцию:

Foo = Microsoft.VisualBasic.Right(Bar, (Len(Bar) - InStrRev(Bar, "/"))) 

Для получения дополнительной информации см документации для Right Function.

Обратите внимание, что при разборе каталогов вы можете обрабатывать это гораздо более чисто с помощью пространства имен System.IO. В частности, вы можете построить DirectoryInfo и получить родительскую папку через свойство Parent.

Вы также можете использовать Path.GetDirectoryName для работы со строками. В вашем случае, если вы установили Bar в «C: \ Some \ Path \ To \ A \ File.txt», и вы вызываете Path.GetDirectoryName(Bar), он вернет «C: \ Some \ Path \ To \ A». Если вы это назовете, вы получите «C: \ Some \ Path \ To» и т. Д.

+0

Там не было права собственности, как я использовал самодельный класс с в то время только подпрограммы , оказывается, что, хотя я ожидал права быть функцией строки, поскольку я думал, что это будет более логично, чем это стандартная функция. Спасибо за помощь, хотя оба предложенных метода помогут вам в работе. – Pharap

Смежные вопросы