Современные решения

для защиты Windows приложений

и восстановления исходного кода

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)