Ru-Board.club
← Вернуться в раздел «Программы»

» Indigo Rose AutoPlay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 21.10.2014 22:11
KerberX -- использовать callback-функцию можно, если это позволяет плагин alien. Но я еще с этим не разбирался.
Автор: KerberX
Дата сообщения: 21.10.2014 22:14
Ок, если будут новости сообщи. А я пока попытаюсь сам сделать.
Автор: Pazan
Дата сообщения: 22.10.2014 13:34
Приветствую,
возможно ли проиграть аудио определённое количество секунд, например, 30?
Автор: Zloy_Gelud
Дата сообщения: 22.10.2014 19:27
Pazan -- таймер же есть. Вот и используй его.
Автор: Zloy_Gelud
Дата сообщения: 23.10.2014 00:03
KerberX

Цитата:
Ок, если будут новости сообщи.

Новость. Получилось сделать только с помощью комплекта alien + MemoryEx.

Код: -- ~~~ Структура ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
local tEXTRACTINGINFO = MemoryEx.DefineStruct{
INT("dwFileSize");
INT("dwWriteSize");
STRING("szSourceFileName", 1, 513, MEMEX_ASCII);
STRING("dummy1", 1, 3, MEMEX_ASCII);
STRING("szDestFileName", 1, 513, MEMEX_ASCII);
STRING("dummy", 1, 3, MEMEX_ASCII);
};

-- ~~~ Загрузка модуля ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
require 'alien';

-- ~~~ Типы ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
local SevenZip = alien.load('7-zip32.dll');
SevenZip.SevenZipSetOwnerWindowEx:types{"int", "callback", abi="stdcall"};
SevenZip.SevenZip:types{"int", "string", "pointer", "int", abi="stdcall"};

-- ~~~ Объявление callback-функции ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function ARCHIVERPROC (hWnd, uMsg, nState, lpExInfo)
if (nState == 0) then
local EXTRACTINGINFO = MemoryEx.AssignStruct(lpExInfo, tEXTRACTINGINFO);
local nFileSize = EXTRACTINGINFO.dwFileSize;
local nWriteSize = EXTRACTINGINFO.dwWriteSize;
Progress.SetCurrentPos("Progress1", nWriteSize / nFileSize * 100);
elseif (nState == 2) then
Progress.SetCurrentPos("Progress1", 100);
end
return 1;
end

local callback_func = alien.callback(ARCHIVERPROC, {"int", "uint", "uint", "int", abi="stdcall"});

SevenZip.SevenZipSetOwnerWindowEx(Application.GetWndHandle(), callback_func);

-- ~~~~ Пример распаковки ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
local sArcPath = "C:\\m.7z"; -- путь к архиву
local pOutBuffer = alien.buffer(32768);
-- Извлечение архива на диск D:
-- См. остальные команды распаковки
SevenZip.SevenZip(Application.GetWndHandle(), "x \""..sArcPath.."\" -o\"D:\\\" -hide", pOutBuffer, 32768);
Автор: KerberX
Дата сообщения: 23.10.2014 07:50
Огромное спасибо. Через MemoryEx я бы не смог это сделать. Хочу разбираться во всём этом также хорошо.
Автор: zuster_andrey
Дата сообщения: 23.10.2014 12:13
Подскажите нубу возможно ли сделать авторан в этой программе из статического сайта?
Автор: Pazan
Дата сообщения: 25.10.2014 21:38
Zloy_Gelud
спасибо, разобрался. А есть ли возможность перезапуска программы после введенного значения в Dialog.MaskedInput?
Автор: Zloy_Gelud
Дата сообщения: 25.10.2014 21:51
Pazan

Цитата:
А есть ли возможность перезапуска программы после введенного значения в Dialog.MaskedInput?

Можно попробовать создавать bat-файл перед выходом, который запустит проект.
Автор: Pazan
Дата сообщения: 26.10.2014 19:23
Zloy_Gelud

Цитата:
создавать bat-файл

а как с путями запуска приложения? они у меня всегда разные
Автор: Zloy_Gelud
Дата сообщения: 26.10.2014 19:31
Pazan

Цитата:
а как с путями запуска приложения? они у меня всегда разные

Ну так ты сам создавай батник из проекта. Соот-но и пути туда можно любые вписать будет.
Автор: Pazan
Дата сообщения: 26.10.2014 21:12
Zloy_Gelud

Цитата:
так ты сам создавай батник из проекта

где почитать, как это сделать?
Автор: encrypting
Дата сообщения: 27.10.2014 12:45
Здравствуйте, помогите пожалуйста, какой скрипт нужно прописать к кнопке чтобы

сообщалось о том, что файл или папку нельзя скопировать потому что файл занят другим процессом ?
Автор: KerberX
Дата сообщения: 30.10.2014 23:36
encrypting, может быть File.IsInUse(); подойдёт?
Автор: KerberX
Дата сообщения: 10.11.2014 21:16
Возможно ли ускорить работу кода вот такого типа? В данном случае он выполняется около 10 секунд для 3000 элементов - это долго. Использование функции Application.SetRedraw() не даёт заметного прироста скорости. Интересует как решить это именно для TreeList'а.


Код: local tFiles = File.Find(_SystemFolder, "*", false, false, nil, nil);
if tFiles ~= nil then
    Application.SetRedraw(false);
    for x, y in pairs(tFiles) do
        TreeList.AddRow("Plugin1", y, nil, nil, nil);
    end
    Application.SetRedraw(true);
    Dialog.Message("", os.clock());
end
Автор: bigbrain
Дата сообщения: 23.11.2014 20:14

Цитата:
Возможно ли ускорить работу кода вот такого типа? В данном случае он выполняется около 10 секунд для 3000 элементов - это долго. Использование функции Application.SetRedraw() не даёт заметного прироста скорости. Интересует как решить это именно для TreeList'а.


Только если вначале все файлы собрать в таблицу, а потом по ней пройти. Но конкретный код привести не могу, я не такой крутой кодер как Zloy_Gelud, нужно думать =)

У меня тоже вопрос один мучает.
Сделал базу данных SQLite3 (плагин от MindQuake). Данные вводятся отлично, а при выводе в Grid - крякозябры (utf-8).
Пробовал сконвертировать эту строку через плагин Encode (MindQuake) - из utf8 в cp2151, но при конвертировании появляются лишние символы в конце.
Например, выходят такие слова:
Семеновичponent, Андреевичerm, Данилаxx

Пробовал также резать строку. Учитывая, что конвертирую двухбайтную кодировку в однобайтную, то сделал так. Посчитать длину строки 1 (в UTF8), разделить на 2 (округлить если необходимо, иногда длина бывает нечетная). Затем на получившееся число подрезать строку. Данный отлично работает, если нет кавычек.

Какой-то очень сложный способ. Может есть проще? Если что-то не понятно, то могу привести скриншоты.
Когда я открываю созданную базу во внешней программе, то там все отлично отображается.
Автор: KerberX
Дата сообщения: 23.11.2014 21:35

Цитата:

Только если вначале все файлы собрать в таблицу, а потом по ней пройти. Но конкретный код привести не могу, я не такой крутой кодер как Zloy_Gelud, нужно думать =)

Они и так сначала в таблицу собираются и потом обрабатываются. Здесь можно засунуть код добавления строки в объект через callback функцию. Но не для каждого действия есть callback функция. Для этого кода её нет:

Код: local tElements = XML.GetElementNames("Root/Files", true, true);
if tElements ~= nil then
    for x, y in pairs(tElements) do
        TreeList.AddRow("Files", y, nil);
    end
end
Автор: Zloy_Gelud
Дата сообщения: 25.11.2014 10:32
KerberX

Цитата:
Возможно ли ускорить работу кода вот такого типа?

Сама функция File.Find отрабатывает ооочень быстро. У меня 0.06с для 3000 файлов! А основное время уходит на заполнение объекта TreeList элементами. И с этим, имхо, ничего нельзя сделать.
Автор: KerberX
Дата сообщения: 25.11.2014 23:20
Это то ясно что заполнение объекта время ест. А можно ли сделать чтобы программа не зависала при этом?
Автор: Zloy_Gelud
Дата сообщения: 25.11.2014 23:33
KerberX
Если только придумаешь как в отдельном потоке заполнение делать.
Автор: KerberX
Дата сообщения: 26.11.2014 06:50
Опять мы возвращаемся к lua lanes. Надо придумать как его использовать.

Как преобразовать числовой код цвета (16777215 например) в RGB? И что это вообще за формат представления цвета?
Автор: Zloy_Gelud
Дата сообщения: 28.11.2014 13:17
KerberX

Цитата:
И что это вообще за формат представления цвета?

COLORDEF

Цитата:
Как преобразовать числовой код цвета (16777215 например) в RGB?


Код: local nColor = 16777215;
local nSwitchColor = Bitwise.Or(Bitwise.And(nColor, 0x00FF00), Bitwise.ASL(Bitwise.And(nColor, 0x0000FF), 16), Bitwise.ASR(Bitwise.And(nColor, 0xFF0000), 16));

local nRed = Bitwise.And(nSwitchColor, 0x0000FF);
local nGreen = Bitwise.ASR(Bitwise.And(nSwitchColor, 0x00FF00), 8);
local nBlue = Bitwise.ASR(Bitwise.And(nSwitchColor, 0xFF0000), 16);
Dialog.Message("COLORDEF To RGB", "Red: " .. nRed .. "\r\n".."Green: " .. nGreen .. "\r\n".."Blue: " .. nBlue, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Автор: KerberX
Дата сообщения: 28.11.2014 15:37
По COLORDEF я ничего в интернете не нашёл, спасибо за функцию.
Автор: collagen
Дата сообщения: 29.11.2014 17:06
Zloy_Gelud
В lua 5.2 есть битовые операции. Значит можно сделать конвертер из COLORDEF в RGB средствами lua, без привлечения плагина MemoryEx.
Или может быть AMS 8.3 еще не поддерживает lua 5.2?
Автор: KerberX
Дата сообщения: 29.11.2014 17:10
И ещё вопрос. Как правильно запретить и потом разрешить изменять размер окна во время выполнения?

Код: WinApi.SetWindowLong(Application.GetWndHandle(), GWL_STYLE, WS_DLGFRAME.."|"..WS_SYSMENU.."|"..WS_MINIMIZEBOX.."|"..WS_MAXIMIZE, true);
Автор: Zloy_Gelud
Дата сообщения: 29.11.2014 17:19
collagen

Цитата:
Или может быть AMS 8.3 еще не поддерживает lua 5.2?

Именно.

Добавлено:
KerberX
См. глобальную функцию g_OnGetMinMaxInfo()
Автор: Mufer
Дата сообщения: 04.12.2014 18:30
Подскажите, как сделать эффект перехода при появлении самой первой страницы и при закрытии авторана?
Отображает эффекты только при переходе между страницами. А при загрузке и закрытии авторана - нет.
Автор: dallas page
Дата сообщения: 09.12.2014 14:10
Всем привет. Подскажите плиз, не работает код:

Код: Image.Load("Image1", "C:\\Windows\\System32\\photo.png");
Автор: Robby
Дата сообщения: 09.12.2014 16:53
dallas page
попробуй использовать Application.GetLastError() для выяснения причины


Код:
File.Copy("C:\\Windows\\System32\\photo.png", _TempFolder, true, true, false, true, nil);
error_code = Application.GetLastError();
if (error_code ~= 0) then
Dialog.Message("Error", "File copy error: " .. _tblErrorMessages[error_code]);
end
Автор: dallas page
Дата сообщения: 09.12.2014 17:05
Robby, File copy error: Source file(s) does not exist. Файл физически есть. Ничего не понимаю

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

Предыдущая тема: память не может быть written


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.