Robby
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору KerberX возможно так Код: local time=os.clock (); local tDisplay=WinApi.EnumDisplaySettings(); -- получаем все возможные установки монитора Table.Sort(tDisplay, nil); -- сортируем массив sWidthHeight=string.gsub (Table.Remove(tDisplay, 1), "(%d+|%d+)(.*)", "%1"); -- получаем из первого элемента массива значения Width и Height tWidthHeight={}; -- создаем новый массив который будет содержать разрешение экрана tWidthHeight[1]={Width = String.Mid(sWidthHeight, 1, String.Find(sWidthHeight, "|", 1)-1) , Height = String.Mid(sWidthHeight, String.Find(sWidthHeight, "|", 1)+1, -1)}; -- заносим в него первое значение local ind=1; -- счетчик элементов массива Debug.ShowWindow(true); -- включаем окно отладки for i, value in pairs(tDisplay) do -- перебираем элементы всех возможных установок монитора sWidthHeight=string.gsub (value, "(%d+|%d+)(.*)", "%1"); -- получаем только значения Width и Height -- заносим каждое значение в свою переменную local sWidth=String.Mid(sWidthHeight, 1, String.Find(sWidthHeight, "|", 1)-1); -- Width local sHeight=String.Mid(sWidthHeight, String.Find(sWidthHeight, "|", 1)+1, -1); -- Height -- сравниваем значение массива разрешений монитора с значениями Width и Height if tWidthHeight[ind].Width~=sWidth and tWidthHeight[ind].Height~=sHeight then -- если не совпадают ind=ind+1; -- увеличиваем счетчик элемнтов массива tWidthHeight[ind]={Width=sWidth, Height=sHeight}; -- записываем новое значение end end -- проверка результата for i, value in pairs(tWidthHeight) do Debug.Print("Width="..value.Width.."\tHeight= "..value.Height.."\r\n"); end Debug.Print("------------\r\nВыполнено за: "..os.clock ()-time.." секунд\r\n"); | Добавлено: KerberX если нужно отсортировать значения, то Код: -- сортировка двумерного массива по возрастанию Table.Sort(tWidthHeight, function(a,b) if tonumber(a.Width) < tonumber(b.Width) then return true else return false end end); | если надо по убыванию, то Код: -- сортировка двумерного массива по убыванию Table.Sort(tWidthHeight, function(a,b) if tonumber(a.Width) > tonumber(b.Width) then return true else return false end end); |
| Всего записей: 879 | Зарегистр. 28-09-2003 | Отправлено: 10:37 16-05-2012 | Исправлено: Robby, 10:41 16-05-2012 |
|