Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

KerberX



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
local function FindCallBack(sCurrentPath)
    -- Если путь длинный, укорачиваем его
    StatusDlg.SetStatusText(String.AbbreviateFilePath(sCurrentPath, 48));
    --
    local bCancelled = StatusDlg.IsCancelled();
    return not bCancelled; -- Возвращаем отрицание состояния нажатости кнопки. Это значит что если нажата кнопка отмены останавливаем текущую операцию, если нет, то продолжаем
end
 
-- Настраиваем и показываем диалог статуса
StatusDlg.ShowCancelButton(true, "Отмена");
StatusDlg.SetAutoSize(false);
StatusDlg.SetTitle("Поиск файлов");
StatusDlg.SetMessage("Поиск файлов");
StatusDlg.SetStatusText("");
StatusDlg.SetCancelled(false);
StatusDlg.Show(nil, false);
--
local tDrives = Drive.Enumerate();
local nCount = Table.Count(tDrives); -- Начина с Lua 5.1 (AMS 8+) можно использовать следующий синтаксис: local nCount = #tDrives;
local tPaths = {}; -- Таблица, где будут пути ко всем найденным файлам.
for i = 1, nCount do
    -- Путь к диску
    local sDriveLetter = tDrives[i];
    -- Получаем инофрмацию о диске
    local nDriveType = Drive.GetType(sDriveLetter);
    local nDriveSize = Drive.GetSize(sDriveLetter);
    -- Проверяем диск. Вполне можно использовать константы, не нужно писать сами числа. И такой тии проверки выглядит более компактным. Конечно, можно придумать ещё вариантоы.
    local bValidDrive = (nDriveSize > 0) and (nDriveType == DRIVE_REMOVABLE or nDriveType == DRIVE_FIXED or nDriveType == DRIVE_REMOTE or nDriveType == DRIVE_RAMDISK);
    -- если диск отвечает критериям
    if bValidDrive == true then
        StatusDlg.SetTitle(string.format("Поиск файлов на \"%s\"", sDriveLetter));
        --[[
        -- Вот это вот хрень какая-то. В tDrives[x] уже находится нужная буква диска.
 
        -- формируем каталог для поиска, выковырнув букву диска и прилепив к ней слэш
        drv_label = String.Left(Drive.GetInformation(tDrives[x]).DisplayName, String.Length(Drive.GetInformation(tDrives[x]).DisplayName) - 1);
        drv_label = String.Right(drv_label, 2) .. "\\";
        --]]

        ----------------------------------------------------------------------
 
        --[[
        serch = File.Find(drv_label, "искомый файл", true, false, nil, nil);
 
        -- Список найденных файлов сохраняется в переменную serch, а на существование проверяется search_results, которая не определена и равна nil и, соответственно, условие не будет выполнено.
 
        if (search_results ~= nil) then
            for index, path in pairs(serch) do
                sInstPath = sInstPath..path.."\r\n";
            end
        end
        --]]

        local tFiles = File.Find(sDriveLetter, "AutoRun.inf", true, false, FindCallBack, nil);
        if tFiles ~= nil then
            -- Проходим по списку найденных файлов
            for x, y in ipairs(tFiles) do
                -- Добавляем все найденные файлы в таблицу найденныхё
                tPaths[#tPaths+1] = y;
            end
        end
        -- Останавливаем поиск, если была нажата кнопка отмены
        if StatusDlg.IsCancelled() == true then
            break;
        end
    end
end
-- Скрываем диалог статуса
StatusDlg.Hide();
-- Если нужна строка со списокм файлов, то можно сделать так
local sFoundFiles = table.concat(tPaths, "\r\n");
Dialog.Message("", sFoundFiles);

Всего записей: 597 | Зарегистр. 08-09-2011 | Отправлено: 22:26 23-05-2016
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Indigo Rose AutoPlay Media Studio (часть 5)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru