Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Редактирование многомерных массивов (http://forum.oszone.net/showthread.php?t=206941)

Freez 16-05-2011 01:50 1677043

Редактирование многомерных массивов
 
Реально ли каким-нибудь образом удалять, к примеру, из 2-мерных массивов элементы 2-й размерности? (т.е. не строку целиком, как это предполагает _arrayDelete(), а только ячейку)?
Пока у меня в голове только один вариант - перегоняем нужную строку в отдельный массив, вырезаем эл-т, переписываем обратно поверх (из-под нового массива будет торчать 'хвост' из одного эл-та от старого - в него запишем пустую строку)

Нет ли возможности сделать тоже самое в меньше кол-во действий?

madmasles 16-05-2011 02:59 1677056

Freez,
Если я Вас правильно понял:
Код:

#include <Array.au3>

Dim $aArray[6][2] = [[5],[1, 2],['3', 4],[5, '6'],[7, 8],['9', '10']]

_ArrayDisplay($aArray, 'До')

For $i = 1 To $aArray[0][0]
    If Not Mod($i, 2) Then
        $aArray[$i][1] = ''
    EndIf
Next
_ArrayDisplay($aArray, 'После')


AZJIO 16-05-2011 03:21 1677061

madmasles, не, для Freez как я понял нужно просто сдвинуть вторую колонку вверх удалив к примеру 5 строку во второй колонке.
Freez, похоже как ты пишешь просто перегонять. И мне кажется любая функция занимается перегоном, просто она этого не показывает, иначе как ты себе представляешь удаление? Это же не горшок из центра выдернуть, как в кино.

Вот из UDF, и есть перегон
Код:

For $i = $iElement To $iUBound - 1
    $avArray[$i] = $avArray[$i + 1]
Next


Freez 16-05-2011 14:52 1677273

AZJIO, Спасибо, самое логичное решение )
я вчера, видать, переутомился


Время: 17:53.

Время: 17:53.
© OSzone.net 2001-