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

» Autoplay Media Studio

Автор: big gnome
Дата сообщения: 20.12.2011 13:57
не помогло
Автор: Stalkersof
Дата сообщения: 20.12.2011 15:13
big gnome
На скорую руку. Попробуй http://narod.ru/disk/34978104001/Project.apz.html
Автор: Robby
Дата сообщения: 20.12.2011 16:09
ubian
сравнивать шрифты по имени получается не очень хорошая идея, потому что попадаються разные файлы с одинаковым именем шрифта
вот код со сравением, удаляются шрифты с одинаковым именем файла и именем шрифта


Код:
-- #FUNCTION# ============================================================
-- Name...........: System.GetFontName
-- Description....: Возвращает индексированную числами таблицу
-- Syntax.........: System.GetFontName (tFontsPath)
-- Parameters.....: tFontsPath - таблица, содержащая полные пути шрифтов
-- Return values..: tRet[i].Name - Название шрифта.
-- tRet[i].Path - Путь к шрифту.
-- ==================================================================

System.GetFontsName = function (tFontsPath)
local tFontsName = {};
local tFontsLink = {};
if type(tFontsPath) ~= "table" then return nil; end
Memory.OpenLibrary(0, _SystemFolder.."\\kernel32.dll");
Memory.OpenLibrary(1, _SystemFolder.."\\gdi32.dll");
local nF1 = Memory.OpenFunction(0, "MultiByteToWideChar", DLL_CALL_STDCALL, DLL_RETURN_INT);
local nF2 = Memory.OpenFunction(1, "GetFontResourceInfoW", DLL_CALL_STDCALL, DLL_RETURN_INT);
for i = 1, #tFontsPath do
local pTmp, pTmp2 = Memory.Allocate(4), Memory.Allocate(4);
if DLL.CallFunction("gdi32.dll", "AddFontResourceExA", "\""..tFontsPath[i].."\",32,0", 0, 1) ~= "0" then
local nBuffersize = Memory.CallFunction(nF1, 0, 1, tFontsPath[i], -1, 0, 0);
local pWideString = Memory.Allocate(2 * nBuffersize);
Memory.CallFunction(nF1, 0, 1, tFontsPath[i], -1, pWideString, nBuffersize);
---------------------------------------------------
Memory.CallFunction(nF2, pWideString, pTmp, 0, 1);
local pBuffer = Memory.Allocate(2 * Memory.GetInt(pTmp));
Memory.PutLong(pTmp2, Memory.GetInt(pTmp));
Memory.CallFunction(nF2, pWideString, pTmp2, pBuffer, 1);
local key = String.Mid(tFontsPath[i], String.ReverseFind(tFontsPath[i], "\\") + 1, -1).."_"..Memory.GetString(pBuffer, -1, "Unicode");
tFontsName[Table.Count(tFontsName) + 1] = {Name = Memory.GetString(pBuffer, -1, "Unicode"), Path = tFontsPath[i], Key = key};
tFontsLink[key] = Table.Count(tFontsName); -- сохраняем в таблице индексы таблицы tFontsName
Memory.Free(pTmp); Memory.Free(pTmp2); Memory.Free(pBuffer); Memory.Free(pWideString);
DLL.CallFunction("gdi32.dll", "RemoveFontResourceEx", "\""..tFontsPath[i].."\",32,0", 0, 1);
end
end
Memory.CloseLibrary(1);
Memory.CloseLibrary(0);
return tFontsName, tFontsLink; -- возвращаем две таблицы tFontsName - свойствва шрифтов, tFontsLink - ключ (имя файла) = индексу tFontsName
end

-- Sample
local tSystemFonts = File.Find(Shell.GetFolder(SHF_FONTS), "*.*", false, false, nil, nil);
if tSystemFonts then
tFonts = System.GetFontsName(tSystemFonts);
for i = 1, #tFonts do
ListBox.AddItem("ListBox1", i..". "..tFonts[i].Name.." - "..tFonts[i].Path, tFonts[i].Path);
end
end
Debug.ShowWindow(true);

local tUserFont = File.Find("Fonts", "*.*", false, false, nil, nil);
if tUserFont then
local tFontsUser, tFontsCompare = System.GetFontsName(tUserFont);
    for i=1, #tFonts do
        if tFontsCompare[tFonts[i].Key] then
    --File.Delete(tFontsUser[tFontsCompare[tFonts[i].Key]].Path, false, false, true, nil);
             Debug.Print(i..". Удалены: "..tFontsUser[tFontsCompare[tFonts[i].Key]].Path.."\r\n");
        end
    end

end
Автор: ubian
Дата сообщения: 20.12.2011 17:10
"Любой дурак может написать код, который поймет компилятор. Только программист напишет код, который поймет человек"

Но все равно спасибо.
Т.е. придется на Java писать модуль сторонний от программы. Хотя может кто сделает. Вся работа опять висит)
Автор: Robby
Дата сообщения: 20.12.2011 17:37
ubian
непонятно с чем у тебя проблемы? Выше работающий код,
раскоментируй строчку

Код:
File.Delete(tFontsUser[tFontsCompare[tFonts[i].Key]].Path, false, false, true, nil);
Автор: tavria2
Дата сообщения: 20.12.2011 17:41
Robby

Цитата:
Проблема в том что после первого удаления все индексы во второй таблице смещаются и уже не соответсвуют индексам из первой.  Как можно это скомпенсировать?

В цикле нужно перебирать не с первого индекса по последний, а наоборот. Например:

Код: for i = #t1, 1, -1 do
Table.Remove(t1, i);
end
Автор: Robby
Дата сообщения: 20.12.2011 18:27
tavria2
да уж решение то на поверхности лежало. Спасибо.
Если у тебя есть время может поможешь с этим http://forum.ru-board.com/topic.cgi?forum=5&topic=33745&start=2780#21 ?

Сделал пока так, но это слишком грубый метод - большая погрешность останавливается как сумма набрата не выбирая оптимальный вариант.


Код: function sum(tSize, nMax)
local function sorter(v1,v2)
if (v1 > v2)then
return true;
else
return false;
end
end
Table.Sort(tSize, sorter);
w=0;
for i=1, #tSize do
if w+tSize[i]<=nMax then
w=w+tSize[i];
Debug.Print(tSize[i].."\r\n");
end
end
end
tSize={10, 150, 50, 40, 30};
nMax=110;
Debug.Clear();
Debug.ShowWindow(true);
sum(tSize, nMax);
Автор: LEDRA
Дата сообщения: 20.12.2011 18:43
Добрый вечер. Подскажите возможно ли как то получить дату снимка из jpeg файла?
Автор: tavria2
Дата сообщения: 20.12.2011 18:52
Robby

Цитата:
Если у тебя есть время может поможешь с этим

Извини, со временем большой напряг.
Автор: Robby
Дата сообщения: 20.12.2011 19:03
tavria2
понятно, может хотя бы на словах по шагам, типа сделать то, потом то и т.д. Нужен сам алгоритм. То что есть в интернете никак не помагает
Автор: ubian
Дата сообщения: 20.12.2011 19:15
Блин. Я чего-то туплю. Можете сделать рабочий проект...
Автор: Robby
Дата сообщения: 20.12.2011 19:23
ubian
по тому алгоритму, что ты раньше написал? Или напишешь как нужно полностью.
Автор: ubian
Дата сообщения: 20.12.2011 20:58
Мне нужно.
Page 1.
страница с кнопкой по которой проходит сравнение и удаление шрифтов из папки _SourceFolder.."\\System\\Fonts"
Далее страница 2
Page 2.
Установка шрифтов, которые в папку System/Fonts с Progress Bar
При завершении на стр. 3
Page 3.
пустая страница
Автор: Robby
Дата сообщения: 20.12.2011 21:19
ubian
на вот пока посмотри пример (на скорую руку) получение и удаление шрифтов
http://rghost.ru/35518695
Потом сделаю проверку файлов по CRC, там сейчас старый код сравнения
Шрифты нужно чтоб все ставились сразу или по одному?
Автор: big gnome
Дата сообщения: 21.12.2011 08:28
Stalkersof, спасибо, вроде бы получилось. Буду разбираться дальше.
Автор: ubian
Дата сообщения: 21.12.2011 17:14
Robby, не принципиально. И еще к этому проекту хотелось бы вывод шрифтов установленных в системе на ComboBox. И при выборе чтобы на этот шрифт менялся шрифт в Label1.
Автор: ubian
Дата сообщения: 23.12.2011 18:47
Кто знает как сделать серверную и клиентскую программу по типу клиент скачивает с сервера файл, а потом опять на сервер загружает, но без FTP т.к. будет дырка.
И еще. Как сделать например. Я пишу в Input

Код:
login
Автор: Zloy_Gelud
Дата сообщения: 23.12.2011 20:32
ubian

Цитата:
т.е. текст задом на перед.


Код: local sText = 'login';
local sReverse = '';
for i = #sText, 1, -1 do
sReverse = sReverse .. String.Mid(sText, i, 1);
end
Dialog.Message("Notice", sReverse);
Автор: Robby
Дата сообщения: 23.12.2011 23:17

Цитата:
т.е. текст задом на перед.

еще один вариант - использовать библиотеки LUA для работы со строками

Код: string.reverse (s)
Автор: ubian
Дата сообщения: 24.12.2011 16:32
Большое спасибо. А как на счет логина из файлов. Типа
в logins.INS

Код:
admin
user
Автор: dallas page
Дата сообщения: 24.12.2011 18:34
Добрый вечер. Господа подскажите как можно сделать функцию форматирования флешки или съемного hdd? Заранее спасибо
Автор: Zloy_Gelud
Дата сообщения: 26.12.2011 20:44
dallas page -- могу предложить функу, которая открывает стандартное диалоговое окно форматирования диска.


Код: if not WinAPI then WinAPI = {}; end

SHFMT_OPT_FULL = 0;
SHFMT_OPT_QUICKFORMAT = 1;
SHFMT_OPT_SYSONLY = 2;

--[[ Opens the Shell's Format dialog.]]
WinAPI.FormatDriveDlg = function (sDrive, iOption, hParent)
iOption = iOption or 0;
hParent = hParent or 0;
if String.Left(String.Upper(String.TrimLeft(sDrive, nil)), 1) == "" then return false; end
local nDrive = String.Asc(sDrive) - 65;
if (nDrive < 0) or (nDrive > 25) then return false; end
local Ret = DLL.CallFunction("shell32.dll", "SHFormatDrive", hParent..","..nDrive..",65535,"..iOption, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
local error = Application.GetLastError();
if (error ~= 0) then
return false;
else
if tonumber(Ret) < 0 then
return false;
end
end
return true;
end

-- Системный диалог форматирования диска D:
-- Форматирование автоматически не начинается.
WinAPI.FormatDriveDlg('D', SHFMT_OPT_QUICKFORMAT);
Автор: lerik2703
Дата сообщения: 26.12.2011 23:19
Zloy_Gelud

Цитата:
Системный диалог форматирования диска

лучше в функцию добавить дискрептор окна проекта!для более корректного вызова!
Автор: big gnome
Дата сообщения: 28.12.2011 08:53

Цитата:
Stalkersof


Цитата:
На скорую руку. Попробуй http://narod.ru/disk/34978104001/Project.apz.html


Все равно при просмотре происходит прокрутка предыдущей "траектории". На все страницы в ПреЛоад поставил ваш скрипт - не помогает.
Автор: Zloy_Gelud
Дата сообщения: 28.12.2011 09:12
lerik2703

Цитата:
лучше в функцию добавить дискрептор окна проекта!для более корректного вызова!

При hParent = 0, будет использоваться дескриптор приложения, из которого вызывается функция. Имхо. Но похоже, что так оно и есть.
Автор: Madbounce
Дата сообщения: 29.12.2011 05:24
Бодрого времени суток, парни. Полистал форум, полазил по сайтам но не нашел ответа на вопрос. Как подгрузить в проект комбобоксы и прочие элементы со своим цветовым оформлением?
Автор: Zloy_Gelud
Дата сообщения: 29.12.2011 07:23
Madbounce

Этих настроек не хватает?
Автор: Madbounce
Дата сообщения: 29.12.2011 07:31
Да. маловато. Я имел в виду возможность поменять кнопку и границы выпадающего списка, чекбоксов, радиобаттонов и т.д. Кроме того маловато настроек управления таблицами.
Автор: Zloy_Gelud
Дата сообщения: 29.12.2011 08:38
Madbounce


Цитата:
Я имел в виду возможность поменять кнопку и границы выпадающего списка, чекбоксов, радиобаттонов и т.д.

Это меняется в зависимости от скина.


Цитата:
Кроме того маловато настроек управления таблицами.

А здесь чего не хватает?
Автор: Madbounce
Дата сообщения: 29.12.2011 08:58

Цитата:
Это меняется в зависимости от скина.


Спасибо. Понял.


Цитата:
А здесь чего не хватает?


Не нашел возможности изменения цвета выделенной ячейки и выбора только одной ячейки

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)


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