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

» Autoplay Media Studio

Автор: tavria2
Дата сообщения: 28.03.2012 21:17
Rezchik123

Цитата:
sFileName -это имя файла в таблице
nIdx- номер в таблице  

Да. Из справки к ThumbList:
Цитата:
CallbackFunction:
(string) The name of a function that will be called whenever a file is added to the list. When called this function will be passed the fully qualified filename of the current file as argument 1 and the index of which file is being added as argument 2. The function should return true to allow the action to continue processing or false to have it stop.


Цитата:
и что значит знак # в этой строке Progress.SetRange("Progress1", 0, #tblImages)

Количество элементов в таблице.
Автор: Zloy_Gelud
Дата сообщения: 28.03.2012 21:18
Rezchik123

Цитата:
и что значит знак # в этой строке Progress.SetRange("Progress1", 0, #tblImages)

Количество элементов в таблице tblImages.
Автор: Rezchik123
Дата сообщения: 28.03.2012 21:24
Спасибо!
Автор: collagen
Дата сообщения: 29.03.2012 07:53

Цитата:
и что значит знак #


В справке по AMS этого нет. Это есть в справке по LUA (это оператор получения длины).
Мне кажется, что это нужно ввести в справку по AMS, а также - возведение в степень, остаток от деления.

Подскажите, что еще следует поместить в справку? Наверное есть еще некоторые тонкости, не отображенные в справке.
Автор: Rezchik123
Дата сообщения: 29.03.2012 07:56
Доброе утро !!!
Есть ли действие которое ищет в папке подпапки и как результат таблица с ними ?
Случаем не оно Folder.Find
Автор: Zloy_Gelud
Дата сообщения: 29.03.2012 08:10
Rezchik123 -- оно.

Добавлено:
collagen

Цитата:
Подскажите, что еще следует поместить в справку?

tostring
tonumber
type
assert
loadstring
Автор: Rezchik123
Дата сообщения: 29.03.2012 08:19
Спасибо!!!
Автор: Unique_nickname
Дата сообщения: 29.03.2012 08:45
collagen
не смотрел текущую справку (обещаю исправиться в начале апреля), но если главы
"Написание и подключение сторонних (внешних) DLL" и
"AMS и использование WinAPI" отсутствуют, то их имхо обязательно надо.
Автор: Lexua
Дата сообщения: 29.03.2012 09:15
collagen
Цитата:
и что значит знак #



Цитата:
В справке по AMS этого нет.


Именно это то как раз есть. Scripting Guide -> Expressions and Operators -> Logical Operators

Сразу за ним идет The Length Operator, хотя в содержании этого нет.

Вот чего не хватает действительно, это работы с регулярными выражениями. Мне вот нужно в поиске задать поиск строки - "\n(любой символ кроме пробела)" Как правильно для AMS составить регулярное выражение?



Автор: tavria2
Дата сообщения: 29.03.2012 10:11
Unique_nickname

Цитата:
"Написание и подключение сторонних (внешних) DLL"

Написание сторонних(внешних) Dll? Причем здесь AMS?

Цитата:
"AMS и использование WinAPI"

Это было бы здорово, но невозможно по ряду причин:
Слишком большой объем, к тому же необходим опыт работы с WinAPI
Функции WinApi очень часто используют структуры и параметры BYREF, которые AMS не поддерживает


Lexua

Цитата:
Мне вот нужно в поиске задать поиск строки -   "\n(любой символ кроме пробела)" Как правильно для AMS составить регулярное выражение?

Необходимо перебрать все строки текста, в которых искать подстроки разделенные пробелом?
Предоставь больше инфы и для наглядности примерчик строки и что из нее нужно выдергивать.
Автор: Stalkersof
Дата сообщения: 29.03.2012 11:20
По API можно пройтись по форуму. И посмотреть примеров много с использованием API от Zloy_Gelud. Вот собрать их все в справке наверно не плохо.
Автор: collagen
Дата сообщения: 29.03.2012 11:57
Lexua

Цитата:
Именно это то как раз есть. Scripting Guide -> Expressions and Operators -> Logical Operators

Сразу за ним идет The Length Operator, хотя в содержании этого нет.


Спасибо. Увидел. Я переводил этот раздел еще с версии 7.0 и с тех пор не заглядывал, буду переделывать. Но слишком уж коротко сказано, и только про строку, а в справке по LUA приводится пример с таблицей и показан нюанс при значении nil. Наверное, совместим оба текста.

Zloy_Gelud

type есть в Руководство по скриптам >> Другие встроенные функции. Остальные наверное добавим в этот же раздел.

Unique_nickname

Цитата:
"AMS и использование WinAPI" отсутствуют


Извиняюсь, но мне это не потянуть. Не хватит ума.

Lexua

Цитата:
не хватает ... работы с регулярными выражениями


Я думаю, и не только. В справке очень много "мелкого" кода, приводятся даже примеры функций, но чего не хватает, так это грамотной "увязки" кода из кусков в программу, на чем, по крайней мере я, зачастую "туплю". Да еще, в самой программе код "размазан" по событиям объектов и теряется "целостность" кода программы. Конечно есть Script Explorer, но мне как новичку сложно пока все это.


Автор: Rezchik123
Дата сообщения: 29.03.2012 12:51
Как узнать какая кнопка в проекте была нажата ЛКМ или ПКМ?
Автор: ubian
Дата сообщения: 29.03.2012 13:32
Rezchik123
Для этого вроде бы есть разные события
Автор: tavria2
Дата сообщения: 29.03.2012 13:40
Rezchik123
Для этого существует событие On Mouse Button, которое выполняется при нажатии кнопки мышки. В этом событии переменная e_Type будет возвращать значение соответствующее состоянию кнопки мышки.

Возможные значения e_Type:
LEFT_BUTTON_DOWN = 0
LEFT_BUTTON_UP = 1
RIGHT_BUTTON_DOWN = 2
RIGHT_BUTTON_UP = 3

Пример:
Код: if (e_Type == LEFT_BUTTON_UP) then
-- левый клик мышки
end
Автор: ubian
Дата сообщения: 29.03.2012 13:59

Цитата:
Жесть!

http://s57.radikal.ru/i156/1203/f4/b64fd95dddc6.png
Автор: tavria2
Дата сообщения: 29.03.2012 14:02
ubian
Есть разница между проектом и объектом?
Внимательно перечитай вопрос.
Автор: Rezchik123
Дата сообщения: 29.03.2012 14:04
tavria2 Спасибо!!!
Я наверное неправильно поставил вопрос !
Есть на странице несколько кнопок как узнать какая именно была нажата ПКМ или ЛКМ! С последним понятно!

Да Ubian тебе тоже спасибо за участие!!!

Переписал
Автор: ubian
Дата сообщения: 29.03.2012 14:12

Цитата:
Есть разница между проектом и объектом?
Внимательно перечитай вопрос.

Rezchik123, наверное, лучше было бы написать на странице
Автор: Lexua
Дата сообщения: 29.03.2012 15:59
tavria2

Есть текстовый файл вида (это отрывок)


Код: PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734&REV_14\4&2473BB23&0&00E1
Name: Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller
Hardware IDs:
PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734&REV_14
PCI\VEN_11AB&DEV_4363&SUBSYS_110F1734
PCI\VEN_11AB&DEV_4363&CC_020000
PCI\VEN_11AB&DEV_4363&CC_0200
Compatible IDs:
PCI\VEN_11AB&DEV_4363&REV_14
PCI\VEN_11AB&DEV_4363
PCI\VEN_11AB&CC_020000
PCI\VEN_11AB&CC_0200
PCI\VEN_11AB
PCI\CC_020000
PCI\CC_0200
PCI\VEN_8086&DEV_2448&SUBSYS_00000000&REV_F3\3&61AAA01&0&F0
Name: Intel(R) 82801 PCI Hardware IDs:
PCI\VEN_8086&DEV_2448&SUBSYS_00000000&REV_F3
PCI\VEN_8086&DEV_2448&SUBSYS_00000000
PCI\VEN_8086&DEV_2448&REV_F3
PCI\VEN_8086&DEV_2448
PCI\VEN_8086&DEV_2448&CC_060401
PCI\VEN_8086&DEV_2448&CC_0604
Compatible IDs:
PCI\VEN_8086&CC_060401
PCI\VEN_8086&CC_0604
PCI\VEN_8086
PCI\CC_060401
PCI\CC_0604
Автор: Zloy_Gelud
Дата сообщения: 29.03.2012 16:07
Lexua -- а если так:

Код: local tRes = {};
local tLines = TextFile.ReadToTable("C:\\MyFile.txt");
if tLines then
for i, sLine in pairs(tLines) do
if String.Left(sLine, 1) ~= " " then
tRes[#tRes + 1] = sLine;
end
end
end
Dialog.Message("", Table.Concat(tRes, "\r\n", 1, TABLE_ALL));
Автор: Lexua
Дата сообщения: 29.03.2012 17:05
Zloy_Gelud
Ну как всегда изящно У меня с учетом того, что мне нужно выгребать реализовано так

Код: PrefixTable = {"ACPI\\", "PCI\\", "HDAUDIO\\", "USB\\", "HID\\", "PCMCIA\\", "USBPRINT\\", "LPTENUM\\", "SERENUM\\", "DOT4PRT\\", "DOT4USB\\", "DOT4\\"};
for index, prefix in pairs(PrefixTable) do
prefixLen = String.Length(prefix);
nStart = 1;
fndPrefix = 0;
    while fndPrefix ~= -1 do
        if index == 1 and nStart == 1 then
        fndPrefix = String.Find(strHWIDS, prefix, nStart, false);
        else
        fndPrefix = String.Find(strHWIDS, "\n"..prefix, nStart, false);
        end
    nStart = fndPrefix + prefixLen;
    endFullHW = String.Find(strHWIDS, "\\", nStart + 1, false);
    strlen = endFullHW - fndPrefix;
    TextFile.WriteFromString("C:\\result.tmp", String.Mid(strHWIDS, fndPrefix, strlen), true);
    end
end
Автор: tavria2
Дата сообщения: 29.03.2012 18:20
Lexua
Ух, сколько всего...

Цитата:
Чисто субъективно поиск в строке происходит несколько быстрее чем в таблице, хотя может я и не прав.

Зря ты так, таблицы довольно шустро работают.

Я так и не смог понять логику выдергивания жирного текста, наверное старею
Автор: Lexua
Дата сообщения: 29.03.2012 18:50
tavria2

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


Да ладно тебе Все я конечно надергаю из первой строки, за исключением класса СС_0200
Собственно из-за него то и весь сыр-бор. Но я же и говорю, не заморачивайтесь. Рабочий код есть, а появится у меня "натхнення" перековыряю и его.
Автор: Rezchik123
Дата сообщения: 30.03.2012 12:44
Всем привет!

Не разумею в чем проблема? Подскажите!

for s = 0 , #result do
s = s+1;
strName = result[s];
SlideShow.AddSlide("SlideShow1",strName, -1);- ошибкa Argument 2 must be of type string
end

Автор: Zloy_Gelud
Дата сообщения: 30.03.2012 13:39
Rezchik123

В последнем проходе цикла переменная s будет равна на 1 (единицу) больше реального количества элементов в таблице result. Далее, соответственно, ты пытаешься получить несуществующее значение таблицы:

Цитата:
strName = result[s];

strName в этом случае будет равно nil, и в результате ошибка.

Вот не пойму, зачем ты делаешь нумерацию с 0 (нуля)? Начни ее с 1 (единицы) и убери

Код: s = s+1;
Автор: Rezchik123
Дата сообщения: 30.03.2012 13:57
Спасибо!!! Zloy_Gelud

Понял !!! Перемудрил называется
Автор: Lexua
Дата сообщения: 30.03.2012 20:31
Накопал немного инфы по регулярным выражениям в Lua. Может кому-то пригодится

[more] Захват строк с помощью регулярных выражений в Lua

+, ? и * - это квантификаторы. Если после […] или (…) идет +, это обозначает, что то, что стоит в скобках должно появиться в выражении НЕ менее 1 раза, но максимум не ограничен. ? - то, что в скобках может появиться, а может и нет, но появиться не более 1 раза. * - выражение может появиться, а может и нет неограниченное кол-во раз. \[\] - это комбинация [] Просто напрямую ее прописать невозможно, т.к. квадратные скобки используются для описания массива символов. Поэтому их защищают с помощью \. Комбинация \[ интерпретируется не как открытие массива, а как [

Некоторая информация и примеры захватов в языке LUA .

Магические символы: ( ) . % + - * ? [ ^ $ перед всеми магическими символами нужно ставить '%', иначе язык будет воспринимать эти символы по своему (используется в захватах символов).

. - любой символ

%a - буквы

%с - контрольные символы

%d - десятичные цифры

%u - буквы верхнего регистра

%l - буквы нижнего регистра

%p - знаки пунктуации

%s - символы пробела

%w - текстовые символы

%z - символ 0

local s, e, sArg1 = string.find(sSTR, »(.*)») - захват всей строки;

local s, e, sArg2 = string.find(sSTR, »/(.*)/») - захват всего, что находится между крайними символами /

local s, e, sArg3 = string.find(sSTR, »/(.-)/») - захват всего, что находится между первыми(встретившимися) двумя символами /

local s, e, сArg4 = string.find(sSTR, »(%S)») - захват первого символа строки;

local s, e, sArg5 = string.find(sSTR, »(%S*)») - захват первого слова;

local s, e, sArg6 = string.find(sSTR, »%S*%s*(%S*)») - захват второго слова;

local s, e, sArg7, sArg8 = string.find(sSTR, »(%S*)%s*(%S*)») - захват первого и второго слова;

local s, e, sArg9 = string.find(sSTR, »(%S.)») - захват первых двух букв;

local s, e, sArg10 = string.find(sSTR, »(why)») - захват why (в любом месте);

local s, e, sArg11 = string.find(sSTR, «^(why)») - захват why только если оно стоит на первых трёх(в данном случае) позициях;

local s, e, sArg12 = string.find(sSTR, »(why)$») - захват why только если оно стоит на последних трёх(в данном случае) позициях;

local s, e, sArg13, iArg14 = string.find(sSTR, »(%S+)%s*(%d*)») - захват слова и числа (слово и число разделены пробелом);

local s, e, iArg15 = string.find(sSTR, »(%d*%.%d*%.%d*%.%d*)») - захват четырёх чисел, разделённых точками (например ip адрес);

local s, e, iArg16, iArg17, iArg18 = string.find(sSTR, »(%d*%.%d*%.%d*%.%d*)%s*(%d*)%s*(.*)») - захват чисел, разделённых точками, захват числа, захват всего оставшегося (все захватываемые элементы разделены пробелами);

local s, e, сArg19, sArg20, sArg21 = string.find(sSTR, »%b<>%s+(%S)(%S+)%s*(.*)») - захват первого символа, сразу после текста, ограниченного символами < >, второй захват слова сразу после захваченного символа, третий захват - захват всего оставшигося после пробела.

Смысл букв в начале переменных очень прост: Эти буквы указывают на тип локальной переменной: s - String, c - Char, i - Integer, b - bool.

Смысл переменных s и e также прост: s, e - переменные в которые заносится положения начала строки и конец строки. s - Start, e - End. sSTR - данные, в которых происходят захваты. [/more]

Может кто из гуру её ещё дополнит, то можно в принципе и в русскую справку прикрутить. Думаю было бы полезно.






Автор: collagen
Дата сообщения: 31.03.2012 16:56
Lexua
Вот перевел статью http://rghost.ru/37333914 про регулярные выражения.
Взял здесь http://lua-users.org/wiki/PatternsTutorial
Посмотрите, я ничего не "накосячил", особенно в последнем абзаце про захват? В последнем примере я просто потерял логику. Но по манере изложения, на мой взгляд, эта статья более понятна для новичков.
Автор: qqwwrr
Дата сообщения: 31.03.2012 18:52
Исправил в шапке http://www.lua.ru/doc на http://www.lua.ru/doc/

В первом варианте было:

Not Found

The requested URL /doc was not found on this server.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

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


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