Что нового

[Массивы] Запись элементов из одного массива в другой динамический

Rinfes

Новичок
Сообщения
25
Репутация
0
Здравствуйте. Есть массив из 5 элементов, который заполнен.
Далее идет проверка, воспроизводится ли данный файл в проигрывателе или нет.
Если файл проигрывается, то название файла должно записываться в новый массив. Строки, которые закоменчены, не работают. Подскажите, что делать
Код:
#include <Array.au3>

run("D:\Program Files (x86)\AIMP3\AIMP3.exe")
sleep(1000)
WinMove("AIMP3", "", 116, 458, 369, 512)
Dim $songs[5]
$songs[0] = "Max Payne 2 - Main Theme.wav"
$songs[1] = "Scorpions - Wind of change.mid"
$songs[2] = "Nirvana - The Man Who Sold The World.flac"
$songs[3] = "doc.docx"
$songs[4] = "The Doors - Riders on the storm.ogg"
;$i = 10
;Dim $array[$i]

;проверка воспроизведения треков с различными форматами
$cvet = 0x5B5B5B ;серый цвет на эквалайзере
$cvet2 = 0x939393 ; серый цвет на значке плей

For $element In $songs
Send("^{DEL}")
Send("{INS}")
WinWaitActive("Открыть")
Send($element&"{ENTER}")
WinWaitClose("Открыть")
Send("{SPACE}")


Send("^{j}")
sleep(500)
Send("01:00{ENTER}")

sleep(3000)
$var = PixelGetColor(388, 575)
$var2 = PixelGetColor(462, 510)
If $cvet = $var or $cvet2 = $var2 Then

   $file = FileOpen("Otchet.txt", 1)
   FileWriteLine($file, "Трек " & $element& " не воспроизводиться")
   FileClose($file)
   sleep(500)
   Send("^{DEL}")
   sleep(500)
   Send("{NUMPAD5}")
   sleep(500)
Else

   $file = FileOpen("Otchet.txt", 1)
   FileWriteLine($file, "Трек " & $element& " воспроизводиться")
   FileClose($file)
   sleep(500)
   ; $array[$i] = $element
   ; MsgBox(0,"","эл-т:" & $array[$i]) 
   ; $i = $i - 1
   

   Send("^{DEL}")
   sleep(500)
   Send("{NUMPAD5}")
   sleep(500)
EndIf
Next

ProcessClose("AIMP3.exe")
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
375
Код:
$i = 10
Dim $array[$i]


Вы создали массив из 10 элементов, но индекс последнего элемента не 10, а 9, т.к. нумерация массива начинается с 0.
Поэтому при попытке записать что-то за пределы массива $array[$i] = ... вылезет ошибка.

Еще совет, файл на запись лучше открыть один раз, а в конце закрыть, чем делать это каждый раз.
 
Автор
Rinfes

Rinfes

Новичок
Сообщения
25
Репутация
0
Все таки, как из 1 массива перекинуть элементы в другой массив, размер которого не установлен, мне не понятно.

За совет спасибо)
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Rinfes [?]
Код:
#include <Array.au3>
Local $aSongs1[10] = ["Max Payne 2 - Main Theme.wav", _
					 "Scorpions - Wind of change.mid", _
					 "Nirvana - The Man Who Sold The World.flac", _
					 "doc.docx", _
					 "Scorpions - Wind of change.mid", _
					 "Nirvana - The Man Who Sold The World.flac", _
					 "doc.docx", _
					 "Scorpions - Wind of change.mid", _
					 "Nirvana - The Man Who Sold The World.flac", _
					 "The Doors - Riders on the storm.ogg"]

_ArrayDisplay($aSongs1)

Local $aSongs2[2]

For $i = 0 To UBound($aSongs1) -1

   If $i = UBound($aSongs2) Then
	  ReDim $aSongs2[UBound($aSongs2)*2]
   EndIf

   $aSongs2[$i] = $aSongs1[$i]
Next

_ArrayDisplay($aSongs2)

ReDim $aSongs2[$i]

_ArrayDisplay($aSongs2)
 
Автор
Rinfes

Rinfes

Новичок
Сообщения
25
Репутация
0
большое спасибо. буду разбираться
 
Верх