2015-02-20 2 views
0

В моем VB6 кода я имею в заявленииVB6 прибудете имя файла из пути

Open CommonDialog.FileName For Input As #intFileNum 

Проблема в том, что CommonDialog.FileName возвращает весь путь и потребности VB6 Открыть команду только имя файла. Например, если путь C: \ Temp \ file_name.csv затем CommonDialog.FileName вернется C: \ Temp \ file_name.csv но это открытое заявление, в VB6 будет работать только с file_name.csv

я мог бы поставить

Dim Path As String 
Path = CommonDialog.FileName 
Open Path For Input As #intFileNem 

Мне просто нужно знать, как удалить все в пути до последней обратной косой черты «\». Есть ли что-то в библиотеке VB6 для этого?

Путь рисуется из общего диалогового окна и код

CommonDialog.DialogTitle = "Browse. . ." 
    CommonDialog.Filter = "CSV File (*.csv)|*.csv" 
    CommonDialog.ShowOpen 

Так что я думаю, если кто-нибудь знает, я, вероятно, следует спросить, что с помощью ShowOpen, чтобы получить путь в общественном подразделам затем, используя имя файла из путь с помощью команды Open в более поздней функции - это не какая-то проблема, потому что это не так?

Для удобства чтения я должен показать Призрака здесь. Я использую intFileNum как длинный

Dim intFileNum As Long 

Open Path1 For Input As #intFileNum 

Do Until EOF(intFileNum) 

Line Input #intFileNum, LineEnd 

надеюсь, что эта информация может сделать ситуацию больше смысла

+0

Я всегда использовал полные пути + имена файлов для открытия файлов. Дело не в том, что вы не можете использовать только имя файла, но если вы это сделаете, вы ДОЛЖНЫ установить текущий рабочий каталог в папку, где находится файл; неспособность сделать это приведет к ошибкам в весе для отслеживания. – UnhandledExcepSean

+0

Хорошо, я получаю ошибку 52 неправильного имени файла или номера, который MSDN говорит: «Имя должно начинаться с буквы или цифры. Оно может содержать любые прописные или строчные символы (имена файлов не чувствительны к регистру), за исключением следующих символы: кавычка («), апостроф ('), слэш (/), обратная косая черта (\), двоеточие (:) и вертикальная полоса (|)». Конечно, я пробовал жестко кодировать тестовое имя файла для отладки и получения такая же ошибка – Davidp04

+0

и как определено #intFileNem. Используете ли вы FreeFile? – UnhandledExcepSean

ответ

5
Function GetFileNameFromPath(strFullPath As String) As String 
    GetFileNameFromPath = Right(strFullPath, Len(strFullPath) - InStrRev(strFullPath, "\")) 
End Function 

Однако ваша проблема вызвана либо вы не используете Freefile или не закрывает файл и он заблокирован.

Public Function SomeMethod() 
    On Error GoTo errSomeMethod 

    Dim lngFileHandle As Long 

    lngFileHandle = FreeFile 
    Open CommonDialog.FileName For Input As #lngFileHandle 

    'Whatever you want here 

    Close #lngFileHandle 

    Exit Function 
errSomeMethod: 
    Close #lngFileHandle 
End Function 
+0

Это сработало, проблема была в Freefile, а не в пути. – Davidp04

-1

Там нет ничего встраивается, но это тривиально, чтобы разобрать строку.

Это удобная функция.

Function ExtractFile(ByVal PathName As String) As String 
    Dim f As String 
    Dim n As Integer 
' Return the filename portion of a full pathname 

    f$ = PathName 

    Do 
     n% = InStr(f$, "\") 
     If n% > 0 Then f$ = Right$(f$, Len(f$) - n%) 
    Loop While n% > 0 

    Do 
     n% = InStr(f$, "/") 
     If n% > 0 Then f$ = Right$(f$, Len(f$) - n%) 
    Loop While n% > 0 

    ExtractFile = f$ 

End Function 
+0

Цитирование, чтобы найти имя файла? :( – UnhandledExcepSean

+0

Проголосовавший, причина? – jac

+1

Угадайте, потому что вы не использовали instrrev. – Rob

1

Для ответа на фактический первоначальный вопрос:

Он находится в руководстве, см FileTitle Property.

Другими словами, работа уже выполнена для вас ... если вы действительно нуждаетесь в ней. Но это еще одна проблема.

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