Generar una matriz

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Generar una matriz

Mensaje por arkcrew »

Hola a todos, me he atascado en un código y como me he desesperado, recurro a vosotros por si alguien me echa un cable.

Os comento, tengo un programa que descarga canciones, tengo la lista de descargas con los arhivos en un _GUICtrlListView y ahora el problema es:

El programa para las descargas simultaneas se manda de la siguiente manera:

Global $archivos[total_archivos] = [archivo1,archivo2,archivo3]
descarga_simultanea($archivos, $descargas_simultaneas)

Pero para ello debo previamente generar la matriz y eso es lo que no se como hacer..

Pense esto:

Código: Seleccionar todo

	 $total = _GUICtrlListView_GetItemCount($hListView2)
		For $a = 0 To $total
			$archivos[$a] = _GUICtrlListView_GetItemText($hListView2, $a)
		Next
espero vuestra ayuda!

Saludos!
jamaro
Hacker del Foro
Mensajes: 253
Registrado: 03 Nov 2010, 23:04

Re: Generar una matriz

Mensaje por jamaro »

arkcrew ¿cómo creaste el ListView? ¿leíste las canciones y las metiste en el listview? ¿no creaste primero una matriz?

Supongo que si preguntas el paso inverso de ListView a Matriz, será porque no creaste primero la matriz :-)

Yo normalmente creo una matriz con los datos que leo en la página web, y luego ya creo el ListView con los datos de la matriz.

Googleando he visto esto en el foro inglés:

http://www.autoitscript.com/forum/topic ... -listview/

Espero que te sirva.
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Generar una matriz

Mensaje por arkcrew »

Gracias jamaro, el problema es que no es un list que se genere desde los datos web, sino que ese list está compuesto por las canciones que el usuario quiere añadir a la lista de descargas, por tanto solo añade la que selecciona, y no es una array propiamente dicho, de ahi que queira el caso inverso.

Saludos!

PD. ahora comento que tal va eso
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Generar una matriz

Mensaje por arkcrew »

Pufff esto es una movida xDDDD

El array se genera bien con esa función pero no se, supongo que no estaré hoy muy lúcido, peor es que no lo consigo!

Os dejo la función de descarga múltiple:

Código: Seleccionar todo

Func _MultiDownload($asFiles, $iSimultaneous)
	If IsArray($asFiles) = 0 Then Return SetError(1, 0, 0) ;$asFiles must be array
	If UBound($asFiles, 0) <> 2 Then Return SetError(2, 0, 0) ;a 2-dimensional array
	If IsInt($iSimultaneous) And $iSimultaneous < 1 Then Return SetError(3, 0, 0) ;make sure $iSimultaneous is a number above 0
	Local $ahInet[$iSimultaneous][UBound($asFiles)], $afResults[UBound($asFiles)]
	$iSimultaneous -= 1 ;cheat so we don't need UBound() later in the For-loops ;)
	;For temporary stuff
	Local $avInet, $iBusy
	;For temporary end
	While 1
		Sleep(10)
		For $iX = 0 To $iSimultaneous
			If $ahInet[$iX][0] <> "" Then
				$avInet = InetGetInfo($ahInet[$iX][0])
				If $avInet[2] Then
					$afResults[$ahInet[$iX][1]] = $avInet[3]
					InetClose($ahInet[$iX][0])
					$ahInet[$iX][0] = ""
				EndIf
			EndIf
		Next
		For $iX = $iSimultaneous To 0 Step -1
			If $ahInet[$iX][0] <> "" Then ContinueLoop
			If IsArray($asFiles) = 0 Then ExitLoop

			$ahInet[$iX][1] = UBound($asFiles) - 1
			$asFile = __ArrayPop2D($asFiles)
			$ahInet[$iX][0] = InetGet($asFile[0], $asFile[1], 1, 1)
		Next
		$iBusy = 0
		For $iX = 0 To $iSimultaneous
			If $ahInet[$iX][0] <> "" Then $iBusy += 1
		Next
		If $iBusy < 1 Then ExitLoop
	WEnd
	Return $afResults
EndFunc   ;==>_MultiDownload
Func __ArrayPop2D(ByRef $avArray)
	Local $iUBound = UBound($avArray) - 1
	Local $asLastVal[2] = [$avArray[$iUBound][0], $avArray[$iUBound][1]]
	; Remove last item
	If Not $iUBound Then
		$avArray = ""
	Else
		ReDim $avArray[$iUBound][2]
	EndIf
	; Return last item
	Return $asLastVal
EndFunc   ;==>__ArrayPop2D
Como veis, la matriz que hay que pasarle debe cumplir la estructura:

Código: Seleccionar todo

Global $asFiles[5][2] = [["http://dl.dropbox.com/u/18344147/Opera_1110_int_Setup.exe", @ScriptDir & "\Opera Desktop 11.10.exe"], ["http://dl.dropbox.com/u/18344147/Opera_Mobile_11_Win7.exe", @ScriptDir & "\Opera Mobile for Desktop.exe"], ["http://something.something/something.something", @ScriptDir & "\Poop.exe"], ["http://dl.dropbox.com/u/18344147/autoit-v3.3.6.1-setup.exe", @ScriptDir & "\AutoIt 3.3.6.1.exe"], ["http://dl.dropbox.com/u/18344147/SciTE4AutoIt3%202010.02.28.exe", @ScriptDir & "\SciTE4AutoIt.exe"]]
Y la que me genera el script anterior es del tipo contenido_columna1,contenido_columna2 y me está costando adaptarlo porque como veis, solo necesito la ulr y el nombre del archivo para hacer la descarga, osea puedo hacer una operacion para generar a partir de ese array otro que si que sea del tipo que necesito.. ideas??

Saludos!
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Generar una matriz

Mensaje por arkcrew »

Estaba algo espeso, lo solucione asi:

Código: Seleccionar todo

Global $lista[UBound($archivos)][2]
		For $a = 1 To UBound($archivos) - 1
			$url = $archivos[$a][1]
			$name = $download_dir & "\" & $archivos[$a][0]
			$lista[$a][0] = $url
			$lista[$a][1] = $name
		Next
Simplemente di la vuelta a la matriz

Saludos!
Jonny
Profesional del Autoit
Mensajes: 1042
Registrado: 30 Jun 2008, 20:08

Re: Generar una matriz

Mensaje por Jonny »

No entiendo bien que es lo que quieres...

¿crear un array simplemente?.

¿Pero a partir de una variable que no es un array?...

En cualquier caso, si quieres crear un array a partir de una variable que no es array, puedes usar dim:

Código: Seleccionar todo

dim $Var[5]
Y, si quieres redimensionar un array, usas ReDim:

Código: Seleccionar todo

ReDim $Var[10]
Salu2!
Avatar de Usuario
arkcrew
Profesional del Autoit
Mensajes: 506
Registrado: 28 Sep 2009, 19:17
Ubicación: Granada, España
Contactar:

Re: Generar una matriz

Mensaje por arkcrew »

Tenía una matriz y tenía que generar otra con el contenido cambiado de orden, pero ya lo solucioné, que no atinaba , peor ya está funcional.

Gracias,

Saludos!
Responder