KerberX -- использовать callback-функцию можно, если это позволяет плагин alien. Но я еще с этим не разбирался.
» Indigo Rose AutoPlay Media Studio
Ок, если будут новости сообщи. А я пока попытаюсь сам сделать.
Приветствую,
возможно ли проиграть аудио определённое количество секунд, например, 30?
возможно ли проиграть аудио определённое количество секунд, например, 30?
Pazan -- таймер же есть. Вот и используй его.
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);
Цитата:
Ок, если будут новости сообщи.
Новость. Получилось сделать только с помощью комплекта 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);
Огромное спасибо. Через MemoryEx я бы не смог это сделать. Хочу разбираться во всём этом также хорошо.
Подскажите нубу возможно ли сделать авторан в этой программе из статического сайта?
Zloy_Gelud
спасибо, разобрался. А есть ли возможность перезапуска программы после введенного значения в Dialog.MaskedInput?
спасибо, разобрался. А есть ли возможность перезапуска программы после введенного значения в Dialog.MaskedInput?
Pazan
Цитата:
Можно попробовать создавать bat-файл перед выходом, который запустит проект.
Цитата:
А есть ли возможность перезапуска программы после введенного значения в Dialog.MaskedInput?
Можно попробовать создавать bat-файл перед выходом, который запустит проект.
Zloy_Gelud
Цитата:
а как с путями запуска приложения? они у меня всегда разные
Цитата:
создавать bat-файл
а как с путями запуска приложения? они у меня всегда разные
Pazan
Цитата:
Ну так ты сам создавай батник из проекта. Соот-но и пути туда можно любые вписать будет.
Цитата:
а как с путями запуска приложения? они у меня всегда разные
Ну так ты сам создавай батник из проекта. Соот-но и пути туда можно любые вписать будет.
Zloy_Gelud
Цитата:
где почитать, как это сделать?
Цитата:
так ты сам создавай батник из проекта
где почитать, как это сделать?
Здравствуйте, помогите пожалуйста, какой скрипт нужно прописать к кнопке чтобы
сообщалось о том, что файл или папку нельзя скопировать потому что файл занят другим процессом ?
сообщалось о том, что файл или папку нельзя скопировать потому что файл занят другим процессом ?
encrypting, может быть File.IsInUse(); подойдёт?
Возможно ли ускорить работу кода вот такого типа? В данном случае он выполняется около 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
Код: 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
Цитата:
Возможно ли ускорить работу кода вот такого типа? В данном случае он выполняется около 10 секунд для 3000 элементов - это долго. Использование функции Application.SetRedraw() не даёт заметного прироста скорости. Интересует как решить это именно для TreeList'а.
Только если вначале все файлы собрать в таблицу, а потом по ней пройти. Но конкретный код привести не могу, я не такой крутой кодер как Zloy_Gelud, нужно думать =)
У меня тоже вопрос один мучает.
Сделал базу данных SQLite3 (плагин от MindQuake). Данные вводятся отлично, а при выводе в Grid - крякозябры (utf-8).
Пробовал сконвертировать эту строку через плагин Encode (MindQuake) - из utf8 в cp2151, но при конвертировании появляются лишние символы в конце.
Например, выходят такие слова:
Семеновичponent, Андреевичerm, Данилаxx
Пробовал также резать строку. Учитывая, что конвертирую двухбайтную кодировку в однобайтную, то сделал так. Посчитать длину строки 1 (в UTF8), разделить на 2 (округлить если необходимо, иногда длина бывает нечетная). Затем на получившееся число подрезать строку. Данный отлично работает, если нет кавычек.
Какой-то очень сложный способ. Может есть проще? Если что-то не понятно, то могу привести скриншоты.
Когда я открываю созданную базу во внешней программе, то там все отлично отображается.
Цитата:
Только если вначале все файлы собрать в таблицу, а потом по ней пройти. Но конкретный код привести не могу, я не такой крутой кодер как 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
KerberX
Цитата:
Сама функция File.Find отрабатывает ооочень быстро. У меня 0.06с для 3000 файлов! А основное время уходит на заполнение объекта TreeList элементами. И с этим, имхо, ничего нельзя сделать.
Цитата:
Возможно ли ускорить работу кода вот такого типа?
Сама функция File.Find отрабатывает ооочень быстро. У меня 0.06с для 3000 файлов! А основное время уходит на заполнение объекта TreeList элементами. И с этим, имхо, ничего нельзя сделать.
Это то ясно что заполнение объекта время ест. А можно ли сделать чтобы программа не зависала при этом?
KerberX
Если только придумаешь как в отдельном потоке заполнение делать.
Если только придумаешь как в отдельном потоке заполнение делать.
Опять мы возвращаемся к lua lanes. Надо придумать как его использовать.
Как преобразовать числовой код цвета (16777215 например) в RGB? И что это вообще за формат представления цвета?
Как преобразовать числовой код цвета (16777215 например) в RGB? И что это вообще за формат представления цвета?
KerberX
Цитата:
COLORDEF
Цитата:
Код: 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);
Цитата:
И что это вообще за формат представления цвета?
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);
По COLORDEF я ничего в интернете не нашёл, спасибо за функцию.
Zloy_Gelud
В lua 5.2 есть битовые операции. Значит можно сделать конвертер из COLORDEF в RGB средствами lua, без привлечения плагина MemoryEx.
Или может быть AMS 8.3 еще не поддерживает lua 5.2?
В lua 5.2 есть битовые операции. Значит можно сделать конвертер из COLORDEF в RGB средствами lua, без привлечения плагина MemoryEx.
Или может быть AMS 8.3 еще не поддерживает lua 5.2?
И ещё вопрос. Как правильно запретить и потом разрешить изменять размер окна во время выполнения?
Код: WinApi.SetWindowLong(Application.GetWndHandle(), GWL_STYLE, WS_DLGFRAME.."|"..WS_SYSMENU.."|"..WS_MINIMIZEBOX.."|"..WS_MAXIMIZE, true);
Код: WinApi.SetWindowLong(Application.GetWndHandle(), GWL_STYLE, WS_DLGFRAME.."|"..WS_SYSMENU.."|"..WS_MINIMIZEBOX.."|"..WS_MAXIMIZE, true);
collagen
Цитата:
Именно.
Добавлено:
KerberX
См. глобальную функцию g_OnGetMinMaxInfo()
Цитата:
Или может быть AMS 8.3 еще не поддерживает lua 5.2?
Именно.
Добавлено:
KerberX
См. глобальную функцию g_OnGetMinMaxInfo()
Подскажите, как сделать эффект перехода при появлении самой первой страницы и при закрытии авторана?
Отображает эффекты только при переходе между страницами. А при загрузке и закрытии авторана - нет.
Отображает эффекты только при переходе между страницами. А при загрузке и закрытии авторана - нет.
Всем привет. Подскажите плиз, не работает код:
Код: Image.Load("Image1", "C:\\Windows\\System32\\photo.png");
Код: Image.Load("Image1", "C:\\Windows\\System32\\photo.png");
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
попробуй использовать 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
Robby, File copy error: Source file(s) does not exist. Файл физически есть. Ничего не понимаю
Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
Предыдущая тема: память не может быть written
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.