Что нового

[Массивы] Как правильно преобразовать массив из двухмерного в одномерный?

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Хочу получить в строку только имена без PID. Для дальнейшего их сравнения.
Но не пойму как правильно преобразовывать массивы, что-бы их можно было загонять в строку.

Код:
#include <Array.au3>

$aProcessList = ProcessList()
$SumProc = UBound($aProcessList, 1)
ReDim $aProcessList[$SumProc][1]

$sStr1 = _ArrayToString($aProcessList, 1)
If @error Then
	MsgBox('', '', @error)
EndIf

Sleep(3000)

$aProcessList2 = ProcessList()
$SumProc2 = UBound($aProcessList2, 1)
ReDim $aProcessList2[$SumProc2][1]

$sStr2 = _ArrayToString($aProcessList2, 1)
If @error Then
	MsgBox('', '', @error)
EndIf

_ArrayDisplay($aProcessList, ' = Process/PID')
_ArrayDisplay($aProcessList2, ' = Process/PID')
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Исходя из лишнего преобразования правильнее объединять в строку без преобразования.

Код:
#include <Array.au3>

$aProcessList = ProcessList()
Local $aProcessList1D[$aProcessList[0][0] + 1] = [$aProcessList[0][0]]
For $i = 1 To $aProcessList[0][0]
	$aProcessList1D[$i] = $aProcessList[$i][0]
Next

$sStr1 = _ArrayToString($aProcessList1D, @CRLF)
If @error Then
	MsgBox('', '', @error)
EndIf
MsgBox(0, 'Сообщение', $sStr1)

_ArrayDisplay($aProcessList1D)


Код:
$aProcessList = ProcessList()
$sString = ''
For $i = 1 To $aProcessList[0][0]
	$sString &= $aProcessList[$i][0] &@CRLF
Next
MsgBox(0, 'Сообщение', $sString)
 
Верх