
Собственно, пользуюсь FindFirstFileW, но подозреваю, что есть способ проще... Или нету?
arthur2 писал(а):Dir не катит, поскольку путь может быть уникодным![]()
arthur2 писал(а):Собственно, пользуюсь FindFirstFileW, но подозреваю, что есть способ проще... Или нету?
Public Function IsFile(sFile As String) As Boolean
On Error Resume Next
IsFile = ((GetAttr(sFile) And vbDirectory) = 0)
If Err.Number Then Err.Clear
End Function
Andrey Fedorov писал(а):С чего это функции VB перестали уметь работать с такими файлами?
Это я тоже нашелiGrok писал(а):Я вот думаю, а почему реально никто не пользуется вот этим:
arthur2 писал(а):Это я тоже нашелiGrok писал(а):Я вот думаю, а почему реально никто не пользуется вот этим:(по моей ссылке этот способ тоже есть - под номером 7)
Не пользуюсь, потому что http://forum.sources.ru/index.php?showt ... &p=2524424 и ниже по топику
arthur2 писал(а):Главный аргумент: зачем использовать то, если можно использовать этоК тому же, в системе может просто не быть IE (хитрый юзер руками выдрал, а то и штатрыми средствами - в молодых виндах вроде как, это возможно, ЕМНИП)
arthur2 писал(а):Andrey Fedorov писал(а):С чего это функции VB перестали уметь работать с такими файлами?
Прежде чем возразить, надо, наверное, попробовать? Даже проект не запустится из папки, если в пути есть уникодные символы. Бейсик напрочь не умеет работать с уникодными путями.
Option Explicit
Public Sub Main()
Dim m() As Byte
Dim fs As New FileSystemObject, t As TextStream, s As String, ss As String
s = "Проба "
m = s
ReDim Preserve m(17)
m(12) = &H1D
m(13) = &H6D
m(14) = &H1F
m(15) = &H9D
m(16) = &H1F
m(17) = &HCC
s = m
ss = App.Path & "\" & s
On Error Goto Err_
If Not fs.FolderExists(ss) Then fs.CreateFolder (ss)
ss = ss & "\" & s & ".txt"
If Not fs.FileExists(ss) Then
Set t = fs.CreateTextFile(ss, , True)
Else
Set t = fs.OpenTextFile(ss, ForAppending, False, TristateTrue)
End If
t.WriteLine Now & " - " & s
t.Close
Err_:
MsgBox "Бэйсик " & IIf(fs.FileExists(ss), vbNullString, "не ") & "умеет работать у уенкодом"
End Sub
Вот это - НЕ ЗАРАБОТАЕТ, если передать уникодный путь. "Можете сами попробовать"Andrey Fedorov писал(а):Если чисто на VB:
- Код: Выделить всё
Public Function IsFile(sFile As String) As Boolean
On Error Resume Next
IsFile = ((GetAttr(sFile) And vbDirectory) = 0)
If Err.Number Then Err.Clear
End Function
arthur2 писал(а):А ещё - скомпилируй свой FSO-пример, положи экзешник внутрь уникодной папки и запусти. Он подавится на строке App.Path
Сейчас этот форум просматривают: AhrefsBot и гости: 12