Что нового

[Файловая система] Поиск файлов и папок

joiner

Модератор
Локальный модератор
Сообщения
3,427
Репутация
597
AutoIt: 3.3.12.0

Категория:Вспомогательные функции

Описание: Поиск файлов и папок .
Начало в теме Создать список файлов - PureBasic
Решил выложить этот проект. Хотя это часть проекта, но все же , возможно, будет полезно. В архиве FFSearch.dll, пример вызова функции + описание, исходник dll на PureBasic

Код/Пример:
Код:
#include <Array.au3>
$timer = TimerInit()
$res = _FFSearch("C:\Windows",2)
ConsoleWrite(TimerDiff($timer) & @CRLF)
_ArrayDisplay($res)

;----------------------------------------------------------------------------------------------------------------------------------------
;Функция         _FFSearch($Path, $Flag = 0)
;описание        Поиск файлов и папок
;параметры:      $Path - путь к папке
;                $Flag: 0 (по умолчанию) - поиск файлов и папок, 1 - поиск файлов, 2 - поиск папок
;успех:          возвращает массив путей, для работы с массивом использовать функцию Ubound, @error = 0
;ошибка:         возвращает пустой массив
;                (-1) - путь не существует
;                1 - ошибка открытия dll
;                2 - ошбика регистрации функции DllCallbackRegister
;                3 - ошибка вызова функции. в макросе @extended номер ошибки. значение этой ошибки смотри в описании функции DllCall
;                4 - ничего не найдено
;-----------------------------------------------------------------------------------------------------------------------------------------
Func _FFSearch($Path, $Flag = 0)
	If Not FileExists($Path) Then Return SetError(-1, 0, 0)
	Global $aFFSearch[0], $aindex = 0, $error = 0
	$hDLL = DllOpen("FFSearch.dll")
	If $hDLL = -1 Then Return SetError(1, 0, 0)
	$tProc = DllCallbackRegister('__SearchRes', 'none', 'str')
	If $tProc = 0 Then Return SetError(2, 0, 0)
	$ResDC = DllCall($hDLL, "none", "FFSearch", "ptr", DllCallbackGetPtr($tProc), "str", $Path, 'int', $Flag)
	If @error Then Return SetError(3, @error, 0)
	DllCallbackFree($tProc)
	DllClose($hDLL)
	If $error = 0 Then
		Return $aFFSearch
	ElseIf $error = 1 Then
		Return SetError(4, 0, 0)
	EndIf
EndFunc   ;==>_FFSearch

Func __SearchRes($sPath)
	If $sPath = 'non_result' Then
		$error = 1
		Return
	EndIf
	If Int($sPath) <> 0 Then
		Global $aFFSearch[Int($sPath)]
	Else
		$aFFSearch[$aindex] = $sPath
		$aindex += 1
	EndIf
EndFunc   ;==>__SearchRes

Файл: Исходник

Источник: autoit-script.ru
Автор(ы): joner + все, кто помог :smile:
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
Может я чего-то пропустил конечно, но таскать с собой библиотеку для поиска файлов - это странно. Или это как пример разработки dll на pb?
 
Автор
joiner

joiner

Модератор
Локальный модератор
Сообщения
3,427
Репутация
597
именно так. просто вариации на тему :smile:
 
Верх