|kerish| писал(а):Alexanbar Пробел может быть даже в названии папки (например "Program Files"). Поэтому эта идея отпадает.
GSerg А как использовать эту процедуру?
Private Function InfazePAthDet(sString As String) As String
Dim i As Integer, n As Integer
Dim b$
Dim c$
n = 5
For i = 1 To Len(sString)
b$ = Mid(sString, i, 1)
If b$ = "." Then
Do While n < Len(sString) - i
b$ = Mid$(sString, i, n)
If Right$(b$, 1) = " " Then InfazePAthDet = c$ & Trim$(b$): Exit Function
n = n + 1
Loop
End If
c$ = c$ & b$
Next i
End Function
Sub SUB1()
On error Goto ERROR
'..действия со строкой (выполнение)
Exit Sub
ERROR:
msgbox err.description
End Sub
|kerish| писал(а):ALX_2002 Нужно всего лишь узнать, существует этот файл или нет. А команды Dir и PathFileExist с аргументами работать не могут.
If FileAExists("C:\Temp\MPsetupXP.exe i nstall", ss) Then
Debug.Print "File Exists: " & ss
Else
Debug.Print "File Not Exists"
End If
Public Function FileAExists(ByVal sPath As String, sFilePath As String) As Boolean
Dim i As Integer
sPath = Trim$(sPath): sFilePath = vbNullString
If Left$(sPath, 1) = """" Then
i = InStr(2, sPath, """")
If i Then
sPath = Mid$(sPath, 2, i - 1)
Else
sPath = Mid$(sPath, 2)
End If
Else
i = InStr(sPath, """")
If i Then sPath = Left$(sPath, i - 1)
End If
Do
If FileExists(sPath) Then
FileAExists = True
sFilePath = sPath
Exit Function
End If
i = InStrRev(sPath, " ")
If i = 0 Then Exit Do
sPath = RTrim$(Left$(sPath, i - 1))
Loop
End Function
Public Function FileExists(sFile As String) As Boolean
On Error Resume Next
FileExists = ((GetAttr(sFile) And vbDirectory) = 0)
If Err.Number Then Err.Clear
End Function
Public Function ExtractFileName(ByVal sFName As String) As String
'
On Error GoTo eRes
'//////////////////////////////////////////////////////////////////////////////////////
Dim sTArray() As String, j As Long
Dim sTString As String
'//////////////////////////////////////////////////////////////////////////////////////
sFName = Replace(Trim(sFName), Chr(34), "", , , vbTextCompare)
sTArray = Split(sFName, " ", , vbTextCompare)
sTString = ""
For j = 0 To UBound(sTArray)
sTString = sTString & " " & sTArray(j)
If Dir(Trim(sTString)) <> "" Then
ExtractFileName = sTString
Exit Function
End If
Next
ExtractFileName = ""
Exit Function
eRes:
MsgBox Err.Description
Resume Next
End Function
Sedge писал(а):А если такой вариант:
Sedge писал(а):Да и на стандарты надеятся не всегда можно.
Sedge писал(а):Ну вот смотри - полторы минуты копания в реестре:
C:\Program Files\ATnotes\ATnotes.exe -lang -dcfile:lng.ru
Ни одной кавычки, хотя пробел в пути наличиствует.
Так что стандарты - это хорошо и правильно, но надеятся на то, что каждый будет их соблюдать - верный путь к глючному коду.
Сейчас этот форум просматривают: Yandex-бот и гости: 128