Глянул в API ничего там нет.

Konst_One писал(а):а команда DIR на что?
Dim b as Boolean
if Dir("c:\Temp\File1.Ext")<>"" then
b=True
else
b=False
end if
GSerg писал(а)::roll:
Konst_One писал(а):
- Код: Выделить всё
Dim b as Boolean
if Dir("c:\Temp\File1.Ext")<>"" then
b=True
else
b=False
end if
File$ = Dir$("C:\Dir1\*.*")
While Len(File$) > 0
Debug.Print File$
File$ = Dir$
Wend
Tathagata писал(а):Функция не работает без указания файла, а я не знаю какой файл лежит в директории.
Tathagata писал(а):Кроме того, проверка должна обрабатываться в цикле, переходить от поддиректории к поддиректории и проверять наличие файлов.
Tathagata писал(а):Может через WMI можно как-то решить это?
Option Explicit
Private Declare Function PathIsDirectoryEmpty Lib "shlwapi.dll" Alias "PathIsDirectoryEmptyA" _
(ByVal pszPath As String) As Long
Private Declare Function PathIsDirectory Lib "shlwapi.dll" Alias "PathIsDirectoryA" _
(ByVal pszPath As String) As Long
Private Declare Function PathAddBackslash Lib "shlwapi.dll" Alias "PathAddBackslashA" _
(ByVal pszPath As String) As Long
Const MAX_PATH = 260
Private Function AddBackslash(ByVal sPath As String) As String
'
On Error GoTo eRes
'//------------------------------------------------------------------------------------
Dim lRes As Long
Dim sBuffer As String
'//------------------------------------------------------------------------------------
sBuffer = Left$(sPath & String(MAX_PATH, vbNullChar), MAX_PATH)
lRes = PathAddBackslash(sBuffer)
If lRes <> 0 Then
AddBackslash = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
End If
Exit Function
eRes:
MsgBox Err.Description
End Function
Private Sub PrintDirInfo(sInitialPath As String)
'
On Error GoTo eRes
'//------------------------------------------------------------------------------------
Dim sTmpPath As String, j As Long
Dim sDirArray() As String, lArraySize As Long
Dim sBuffer As String
'//------------------------------------------------------------------------------------
sBuffer = Left$(sInitialPath & String(MAX_PATH, vbNullChar), MAX_PATH)
If PathIsDirectory(sBuffer) Then
If PathIsDirectoryEmpty(sBuffer) Then
lstDirs.AddItem sInitialPath & " - Empty"
Else
lstDirs.AddItem sInitialPath & " - Not Empty!"
sTmpPath = Dir(sInitialPath & "\*", vbDirectory)
lArraySize = 0
ReDim sDirArray(lArraySize)
Do While Not sTmpPath = ""
If sTmpPath <> "." And sTmpPath <> ".." Then
lArraySize = lArraySize + 1
ReDim Preserve sDirArray(lArraySize)
sDirArray(lArraySize) = sTmpPath
End If
sTmpPath = Dir
DoEvents
Loop
For j = 1 To lArraySize
PrintDirInfo (AddBackslash(sInitialPath) & sDirArray(j))
DoEvents
Next
End If
End If
Exit Sub
eRes:
MsgBox Err.Description
Stop
End Sub
Private Sub cmdTestPath_Click()
'
On Error GoTo eRes
'//------------------------------------------------------------------------------------
Dim sInitialPath As String
''//------------------------------------------------------------------------------------
sInitialPath = "d:\temp1"
lstDirs.Clear
PrintDirInfo (AddBackslash(sInitialPath))
Exit Sub
eRes:
MsgBox Err.Description
Stop
End Sub
Sedge писал(а):Как, господа?! Ни одной API-функции?!![]()
Так же не интересно!
Хороший знак - это значит, что твоя квалификация с тех пор повысилась.alibek писал(а):Как пересматриваю некоторые свои старые проекты, так стыдно становится
alibek писал(а):так стыдно становится
alibek писал(а):АгаВот раскопаю тот проект (в планах был mp3-органайзер) и покажу, ужаснетесь все
Как пересматриваю некоторые свои старые проекты, так стыдно становится
Tathagata писал(а):Ситуация усложняется тем, что в конечном итоге требуется сопряжение VBScript и обработки написанной в 1С, а в 1С функции VB (не VBscript) не обрабатываются. Более того нет конструкции For Each.Поэтому Dir и API, применить не получилось.
//********************************************
Процедура ПриОткрытии()
Перем Наименование, НайденыйФайл,ИндикаторНачалаИмени, ИндикаторКонцаИмени;
Перем ФайлНеНайден, МаскаИмениФайла;
СписокБирок.УдалитьВсе();
МаскаИмениФайла=Сред(ТоварНаим,1,Найти(ТоварНаим,"/")-3);
// Формируем список доступных бирок
// Установим Текущий каталог
КаталогБирок="C:\Program Files\1Cv77\Db\Бирки";
Фс.УстТекКаталог("C:\Program Files\1Cv77\Бирки");
// Обнулим переменные
Наименование="";
ИндикаторНачалаИмени=0;
ИндикаторКонцаИмени=0;
НайденыйФайл="";
ФайлНеНайден=0;
// Найдём первый файл и добавим имя в список
НайденыйФайл=ФС.НайтиПервыйФайл(МаскаИмениФайла+"*.mxl");
Если НайденыйФайл="" тогда
Предупреждение("Для данного товара """+ТоварНаим+"""ещё не создан файл бирок.");
ФайлНеНайден=1;
КонецЕсли;
ЧислоВхождений=0;
ИндикаторНачалаИмени=Найти(НайденыйФайл,КаталогБирок);
ИндикаторКонцаИмени=Найти(НайденыйФайл,".mxl");
Наименование=Сред(НайденыйФайл,ИндикаторНачалаИмени,ИндикаторКонцаИмени-1);
СписокБирок.ДобавитьЗначение(Наименование);
// Найдём остальные файлы и тоже добавим их в список
Пока ФайлНеНайден=0 цикл
ИндикаторНачалаИмени=0;
ИндикаторКонцаИмени=0;
НайденыйФайл=ФС.НайтиСледующийФайл();
// Если больше файлов в каталоге нет -- заканчиваем перебор файлов
Если НайденыйФайл="" тогда
ФайлНеНайден=1;
Продолжить;
КонецЕсли;
ИндикаторНачалаИмени=Найти(НайденыйФайл,КаталогБирок);
ИндикаторКонцаИмени=Найти(НайденыйФайл,".mxl");
Наименование=Сред(НайденыйФайл,ИндикаторНачалаИмени,ИндикаторКонцаИмени-1);
СписокБирок.ДобавитьЗначение(Наименование);
КонецЦикла;
// Отсортируем список
СписокБирок.СортироватьПоПредставлению();
КонецПроцедуры
//********************************************
Ага, и точки с запятымиGSerg писал(а):А комментарии в стиле C++ - тонкое издевательство над последним...
tyomitch писал(а):О, впервые увидел знаменитый язык 1С вживую...![]()
А почему там ".mxl", кстати? Опечатка?
GSerg писал(а)::shock: Дааааа........
А комментарии в стиле C++ - тонкое издевательство над последним...
tyomitch писал(а):Ага, и точки с запятымиGSerg писал(а):А комментарии в стиле C++ - тонкое издевательство над последним...
Tathagata писал(а):Ситуация усложняется тем, что в конечном итоге требуется сопряжение VBScript и обработки написанной в 1С, а в 1С функции VB (не VBscript) не обрабатываются. Более того нет конструкции For Each. :( Поэтому Dir и API, применить не получилось.
ta_gena писал(а):Комментарии как в C и точка с запятой, это еще не все радости программирования на 1С. Я долго мучился, пока сообразил, что тело функции долно быть описано до ее первого использования. Поэтому главная процедура стоит самой последней. А наличие всего трех типов данны (строка, дата и число) принесет Вам множество сюрпризов и удовольствия при преобразованиях.
Сейчас этот форум просматривают: Google-бот и гости: 7