https://foro.gambas-es.org/viewtopic.php?f=1&t=383&p=2174#p2174
-----------------------------------
soplo
Jueves, 28 Enero 2010, 15:21

Re: Dispositivos USB En Listbox
-----------------------------------
Creo que es porque Arbol está definido en Main y no se le ha pasado a LlenarArbol. No puedo probar ahora (de hecho no debería haberlo mirado siquiera je je) pero prueba a cambiar esto en Main:

[code linenumbers=false syntax=gambas]PUBLIC SUB Form_Open()
Dim Arbol as new treeview(me)
DIM FTemp AS String, Var AS String
me.arrangement=arrange.fill

FTemp = Temp 'crear un nombre de archivo temporal
SHELL ("lsusb >" & fTemp) 'Llenar FTemp con la información requerida
LlenarArbol(fTemp,Arbol) 'Llenar el arbol
KILL FTemp 'borrar el archivo temporal
END[/code]

Y luego la rutina LlenarArbol 
[code linenumbers=false syntax=gambas]PRIVATE SUB LlenarArbol(ftemp AS String, Arbol as treeview)
 DIM F AS file, Linea AS String, Partes AS String[], Clave AS String, Dev AS String, Nombre AS String    
 arbol.Add("Bus 0", System.Host, Stock["16/home"]) 'poner el valor raíz
 
 f = OPEN (ftemp) FOR READ
 f.EndOfLine = gb.Unix
 
 DO WHILE NOT Eof(f)
   LINE INPUT #f, linea 'leer la línea entera
   partes = Split(linea, ":") 'dividirla en tres partes por el :
   clave = Left(partes[0], 7) 'la clave será algo como 'Bus 1'
   insertarbus(clave,Arbol) 'insertar la el bus en el arbol con padre raíz
   Dev = Right(partes[0], 3) 'obtener el dev nº
   Nombre = Mid(partes[2], 5) 'obtener el nombre del dispositivo
   insertardev(dev, nombre, clave,Arbol) 'insertar dispositivo en arbol
 LOOP
 END
 
 PRIVATE SUB insertarbus(Clave AS String, Arbol as treeview)
 TRY arbol.Add(clave, Clave, Stock["16/connect"], "Bus 0")    
 FINALLY
 CATCH

 END
 
 PRIVATE SUB insertardev(dev AS String, nombre AS String, padre AS String, Arbol as treeview)
 TRY arbol.Add(padre & "/" & dev, dev & ": " & nombre, Stock["16/attach"], padre)
 TRY arbol.item.EnsureVisible
 FINALLY
 CATCH
 END [/code]
Es decir, para hacerlo mas legible hice que el treeview se creara solo y entonces hay que pasarlo a las respectivas funciones. Nada mas.

Y seguramente te valdrá. En cualquier caso te vale como ejemplo. Yo he volcado lsusb a un archivo temporal y luego he ido leyendo línea a línea lo que me ha interesado y colocándolo en un treeview. De igual manera puedes hacer un udevinfo o algo así y volcar lo que te convenga. Luego lo revisas línea a línea y te quedas con lo que te convenga.

Un saludo


