Visual Basic 6.0 - Как создать массив файлов по расширению?
Re: Как создать массив файлов по расширению?
From: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Reply-To: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Здравствуй, Dmitriy !
"_24_" _июля_ 2004 г. Dmitriy написал в <fido7.ru.visual.basic> на тему: *"Re: Как создать массив файлов по расширению?"*
VI>> Hеобходимо создать одномерный массив полных (длинных) имен всех файлов
VI>> "*.dbf" из каталогов "c:\Program Files\Proga*\*\DataDbf\"
DK> http://mastershome.net.ru/vbfaq/f03.htm
Эдак я вытащу все подряд "*.dbf" , а мне надо ТОЛЬКО из конкретных директорий:-(
Всего тебе наилучшего, Dmitriy!
_ Владимир. _
/VERBA VOLANT, SCRIPTA MANENT/ <слова улетают, написанное остается>
* Origin: Privat (2:5080/1003 [@] fidonet)
Re: Как создать массив файлов по расширению?
From: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Reply-To: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Здравствуй, A. Skrobov!
"_24_" _июля_ 2004 г. A. написал в <fido7.ru.visual.basic> на тему: *"Как создать массив файлов по расширению?"*
VI>> Hеобходимо создать одномерный массив полных (длинных) имен всех файлов
VI>> "*.dbf" из каталогов "c:\Program Files\Proga*\*\DataDbf\"
AS> Dim s As String, v() as String
AS> ReDim v(0)
AS> s = Dir("c:\Program Files\Proga*\*\DataDbf\*.dbf")
AS> While Len(s) > 0
AS> ReDim Preserve v(UBound(v) + 1)
AS> v(UBound(v)) = s
AS> s = Dir
AS> Wend
Вот и я приблизительно так пробовал... да только не хотит этот самый "Dir "
воспринимать внутри кавычек маску "*" для каталогов (хотя в учебнике написано, что должОн). Для имен файлов понимает, а для каталогов - нет.
Как только подставляю реально существующую директорию - все нормально срабатывает, как только подставляю любую маску в имя каталога - сразу же выбрасывает Err 52 "Плохое имя файла или номер":-(
Всего тебе наилучшего, A. Skrobov!
_ Владимир. _
/VERBA VOLANT, SCRIPTA MANENT/ <слова улетают, написанное остается>
* Origin: Privat (2:5080/1003 [@] fidonet)
Re: Как создать массив файлов по расширению?
Hello, Vladimir!
You wrote to "A. Skrobov" <A. Skrobov [@] p2.f175.n5020.z2.fidonet.org>to A.
Skrobov on 24 Jul 04 16:35:30:
VI>>> Hеобходимо создать одномерный массив полных (длинных) имен всех
VI>>> файлов "*.dbf" из каталогов "c:\Program Files\Proga*\*\DataDbf\"
[Sorry, skipped]
VI> Вот и я приблизительно так пробовал... да только не хотит этот самый
VI> "Dir " воспринимать внутри кавычек маску "*" для каталогов (хотя в
VI> учебнике написано, что должОн). Для имен файлов понимает, а для
VI> каталогов - нет.Как только подставляю реально существующую директорию -
VI> все нормально срабатывает, как только подставляю любую маску в имя
VI> каталога - сразу же выбрасывает Err 52 "Плохое имя файла или номер":-(
Ага, понятно. Вот:
=========Beginning of the citation==============
Option Explicit
Sub Main()
'"c:\Program Files\Proga*\*\DataDbf\*.dbf"
Dim s As String, sdir As String, subdir As String
Dim Result As String, v As Variant, w As Variant
s = Dir("c:\Program Files\Proga*", vbDirectory)
While Len(s) > 0
sdir = sdir & s & vbCrLf
s = Dir
Wend
For Each v In Split(sdir, vbCrLf)
If Len(v) > 0 Then
s = Dir("c:\Program Files\" & v & "\*", vbDirectory)
While Len(s) > 0
If (s <> "..") And (s <> ".") Then _
subdir = subdir & s & vbCrLf
s = Dir
Wend
For Each w In Split(subdir, vbCrLf)
If Len(w) > 0 Then
s = Dir("c:\Program Files\" & v & "\" & w &
"\DataDbf\*.dbf", vbDirectory)
While Len(s) > 0
If (s <> "..") And (s <> ".") Then _
Result = Result & "c:\Program Files\" & v & "\" & w
& "\DataDbf\" & s & vbCrLf
s = Dir
Wend
End If
Next
End If
Next
MsgBox Result
v = Split(Result, vbCrLf)
End Sub
=========The end of the citation================
Массив получается в переменной v, причём последний элемент пустой.
* Origin: "Oh-oh!" Sally said. "Don't you talk to that cat." (2:5080/1003.16)
Re: Как создать массив файлов по расширению?
Мы где-то виделись, Vladimir?
24 Jul 04 16:07:20 в RU.VISUAL.BASIC Vladimir Ilyashenko -> мне:
VI>>> Hеобходимо создать одномерный массив полных (длинных) имен всех файлов
VI>>> "*.dbf" из каталогов "c:\Program Files\Proga*\*\DataDbf\"
DK>> http://mastershome.net.ru/vbfaq/f03.htm
VI> Эдак я вытащу все подряд "*.dbf" , а мне надо ТОЛЬКО из конкретных
VI> директорий:-(
Hу так поправь чуток код, чтобы он начинал искать не с корневого каталога, а с
того, что тебе нужен. Это ведь не так сложно, верно?
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Re: Как создать массив файлов по расширению?
Мы где-то виделись, Vladimir?
24 Jul 04 16:35:30 в RU.VISUAL.BASIC Vladimir Ilyashenko -> A. Skrobov:
VI> Вот и я приблизительно так пробовал... да только не хотит этот самый "Dir
VI> " воспринимать внутри кавычек маску "*" для каталогов (хотя в учебнике
VI> написано, что должОн).
Должен, да. Только еще нужно указать вторым параметром атрибут vbDirectory.
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Re: pop3/smtp
From: "Terekhin Alexandr" <didinst [@] rol.ru>
Доброго времени суток, Aртём.!
Sat, 24 Jul 2004 09:26:52 +0400 Вы писали to Klim Omelchenko:
TA>>> Подскажите, какой контpол можно пpиспособить для скачивания почты
TA>>> по сабжевым пpотоколам?
TA>>> WinSock/MSMAPI ?
TA>>> Можно ли пpиспособить MSInet?
AS> 2TA: MSInet приспособить не удастся.
Всё равно его не брошу, буду учить качать HTTPmail
AS> WinSock приспособить для получения писем очень легко - в POP3 всего
AS> 6 команд.
Вот только когда он тянет что нибудь более-менее крупное, прога как-бы
подвисает...
И ещё, что за ошибка 40006 Wrong protocol or connection state for the
reqested transaction or reqest (?)
____________________________________________________
Истина где-то рядом, Terekhin Alexandr. E-mail: didinst [@] rol.ru
* Origin: Golden Telecom (2:5020/400)
Re: Как создать массив файлов по расширению?
From: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Reply-To: "Vladimir Ilyashenko" <fido7 [@] front.ru>
Здравствуй, A. Skrobov!
"_24_" _июля_ 2004 г. A. написал в <fido7.ru.visual.basic> на тему: *"Re: Как создать массив файлов по расширению?"*
[Сокращено]
VI>> да только не хотит этот самый "Dir " воспринимать внутри кавычек маску
VI>> "*" для каталогов (хотя в учебнике написано, что должОн). Для имен
VI>> файлов понимает, а для каталогов - нет.Как только подставляю реально
VI>> существующую директорию - все нормально срабатывает, как только
VI>> подставляю любую маску в имя каталога - сразу же выбрасывает Err 52
VI>> "Плохое имя файла или номер":-(
AS> Ага, понятно. Вот:
AS> =========Beginning of the citation==============
AS> Option Explicit
Спасибо! Заработала!
Хотя в начале меня озадачил один интересный эффектец, дававший ошибку: в "c:\Program Files\" лежал одноименный директории "ProgaName" архив единым zip-файлом (когда-то подстраховывался при отладке и забыл удалить), и при последнем вызове
s = Dir("c:\Program Files\" & v & "\*", vbDirectory)
происходила ошибка, т. к. в список sdir, не смотря на флаг "vbDirectory", попадал и этот файл , у которого ес-сес-но не может быть поддиректории :-)) Вот так своеобразно срабатывает маска в имени каталога! Будем теперь знать. Hо это уже мелочи... причем, даже, полезные!
А главное, я теперь понял в чем была фича - маска в названии директории корректна только в самом конце, перед кавычками, и спокойненько возвращает имя последнего по вложению каталога (и файла не смотря ни на какие флаги!) - того в котором она присутствует.
Вопрос снят, всем спасибо за советы!
Всего тебе наилучшего, A. Skrobov!
_ Владимир. _
/VERBA VOLANT, SCRIPTA MANENT/ <слова улетают, написанное остается>
* Origin: Privat (2:5080/1003 [@] fidonet)
pop3/smtp
Hi Terekhin!
24 июля 2004 17:09, Terekhin Alexandr писал A. Skrobov:
TA> From: "Terekhin Alexandr" <didinst [@] rol.ru>
TA> Добpого вpемени сyток, Apтём.!
TA> Sat, 24 Jul 2004 09:26:52 +0400 Вы писали to Klim Omelchenko:
TA>>>> Подскажите, какой контpол можно пpиспособить для скачивания
TA>>>> почты по сабжевым пpотоколам? WinSock/MSMAPI ? Можно ли
TA>>>> пpиспособить MSInet?
AS>> 2TA: MSInet пpиспособить не yдастся.
TA> Всё pавно его не бpошy, бyдy yчить качать HTTPmail
AS>> WinSock пpиспособить для полyчения писем очень легко - в POP3
AS>> всего 6 команд.
TA> Вот только когда он тянет что нибyдь более-менее кpyпное, пpога
TA> как-бы подвисает... И ещё, что за ошибка 40006 Wrong protocol or
TA> connection state for the reqested transaction or reqest (?)
Боюсь ошибиться, но y меня оно выскакивало когда поpт был занят...
TA> ____________________________________________________
TA> Истина где-то pядом, Terekhin Alexandr. E-mail: didinst [@] rol.ru
TA> --- ifmail v.2.15dev5.3
TA> * Origin: Golden Telecom (2:5020/400)
Bye Terekhin!
[ID-slash]
[slash]-[2:6000/14.4]
[2:6000/14.4]
* Origin: -------------- (2:6000/14.4)
Re: XML
From: "Terekhin Alexandr" <didinst [@] rol.ru>
Доброго времени суток, Dmitriy!
Fri, 23 Jul 2004 14:53:12 +0400 Вы писали to Terekhin Alexandr:
TA>> Подскажите, как работать с сабжем?
TA>> Может существуют какие нибудь API ?
TA>> По аналогии с INI файлами?
DK> Project -> References -> [v] Microsoft XML версия какую найдешь.
OK, обнаружилась, вот интересно msxml.dll есть во всех системах, или всё
таки библиотеку с собой таскать?
И ещё, вот решил поиграться:
=========Beginning of the clipboard==============
Dim strConnectString$, strSQL$, strHeading$
Dim cnn As ADODB.Connection
Dim rs As Recordset
Private Declare Function ExportXML Lib "msxml.dll" (ByVal rs As
Recordset, strHeading As String, Filename As String) As Long
Private Sub Form_Load()
strConnectString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Persist_
Security Info=False;" & "Data Source=C:\file1.mdb"
strSQL = "Select FirstName +' ' + LastName as Name, " & "BirthDate, Height_
as H" & " from tab1 Order by LastName, FirstName"
strHeading = "Test XML Sample"
Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
cnn.Open strConnectString$
Set rs = cnn.Execute(strSQL)
^^^^^^^^^^^^^^^^^^^^^^^^^^^ - на этой строке ругается
Call ExportXML(rs, strHeading$, "c:\file1.xml")
End Sub
=========The end of the clipboard================
Говорит, мол:" Отсутствует значение одного или нескольких требуемых
параметров "
____________________________________________________
Истина где-то рядом, Terekhin Alexandr. E-mail: didinst [@] rol.ru
* Origin: Golden Telecom (2:5020/400)
Re: XML
Мы где-то виделись, Terekhin?
24 Jul 04 20:14:07 в RU.VISUAL.BASIC Terekhin Alexandr -> мне:
DK>> Project -> References -> [v] Microsoft XML версия какую найдешь.
TA> OK, обнаружилась, вот интересно msxml.dll есть во всех системах, или всё
TA> таки библиотеку с собой таскать?
Придется таскать. Hо это не более +600 кб к дистрибутиву.
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)