Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#10061
Quizás este comentario resulta un poco OFFTOPIC, pero es para decirte que en estas últimas horas ya lo he intentado todo (todo lo que está bajo mis conocimientos en VB, que son pocos xD) y no he conseguido arreglar eso, así que como no me lo arregle un pro como tú... :xD

Dentro de 1-2 horas me pongo de nuevo al tema a ver si puedo solucionarlo yo solo con los datos que me acabas de dar, es que me da palo pedirte cosas ya, y sinó lo consigo en un rato pues te paso la "solución" por mp más tarde vale?

hasta un rato :)        (Y GRAAAAAAAACIAS, mi salvador! :xD)
#10062
Tengo el form casi terminado, lo único que me falta es eso, arreglar lo de los "reseteos" para que no me de error al usar el botón para cargar una ruta...

aquí adjunto el form completo por si sirve de algo:

Código (vbnet) [Seleccionar]
Imports System.Windows.Forms
Imports System.IO
Imports System.Text.RegularExpressions

Public Class Form1
    Dim filesystem As Object, ThisDir As Object
    Dim mcheck(0) As CheckBox
    Dim winampargs As String


Código (vbnet) [Seleccionar]
#Region "Propertys"
    Public Property userSelectedPlayerFilePath() As String
        Get
            Return playertextbox.Text
        End Get
        Set(value As String)
            playertextbox.Text = value
        End Set
    End Property

    Public Property userSelectedFolderPath() As String
        Get
            Return foldertextbox.Text
        End Get
        Set(value As String)
            foldertextbox.Text = value
        End Set
    End Property
#End Region


Código (vbnet) [Seleccionar]
#Region "Load / Close"

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        playertextbox.Text = My.Settings.playerpath
        foldertextbox.Text = My.Settings.folderpath
        updatecheckboxes()
    End Sub

    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Dim mCheckados(0) As Int32
        Dim Cuantos As Int32 = 0
        For i As Int32 = 0 To mcheck.Length - 1
            If mcheck(i).Checked = True Then
                Cuantos += 1
                Array.Resize(mCheckados, Cuantos)
                mCheckados(Cuantos - 1) = i + 1
            End If
        Next
        My.Settings.Valores = mCheckados
        My.Settings.Save()
    End Sub

#End Region


Código (vbnet) [Seleccionar]
#Region "Save & Get settings"

    Public Sub GenerarPropiedades()
        Dim CheckedN As String = Nothing
        For i As Int32 = 0 To mcheck.Length - 1
            If mcheck(i).Checked = True Then
                CheckedN &= i + 1
            End If
        Next
        My.Settings.Save()
    End Sub

    Private Sub CargarPropiedades()
        'Obtenemos la Lista de Enteros de los índices Checkados
        Dim ListaCheckados As Int32() = My.Settings.Valores
        For i As Int32 = 0 To mcheck.Length - 1
            For Each indiceCheckado As Int32 In ListaCheckados
                mcheck(indiceCheckado - 1).Checked = True
            Next
        Next
    End Sub

#End Region


Código (vbnet) [Seleccionar]
#Region "Draw checkboxes..."

    Public Sub updatecheckboxes()
        ' delete the old checkboxes
        Panel1.Controls.Clear()
        ' create the new checkboxes
        Dim filesystem = CreateObject("Scripting.FileSystemObject")
        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
        Dim i As Int32 = 0
        For Each folder In ThisDir.Subfolders
            Array.Resize(mcheck, i + 1)
            mcheck(i) = New CheckBox
            With mcheck(i)
                .AutoSize = True
                .Location = New Point(10, i * 20)
                .Name = "CheckBox" & i + 1
                .Text = folder.Name
            End With
            Me.Panel1.Controls.Add(mcheck(i))
            AddHandler mcheck(i).CheckedChanged, AddressOf LlamadaCheckBox
            i += 1
        Next
        CargarPropiedades()
    End Sub

    ' función que se ejecuta cuando cualquier checkbox es clickado
    Public Sub LlamadaCheckBox(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim filesystem = CreateObject("Scripting.FileSystemObject")
        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
        Dim CheckboxN As CheckBox = CType(sender, CheckBox)
        If CheckboxN.Checked = True Then
            winampargs = winampargs & " " & ControlChars.Quote & Path.Combine(ThisDir.Path, CheckboxN.Text.ToString()) & ControlChars.Quote
        Else
            winampargs = Replace(winampargs, ControlChars.Quote & Path.Combine(ThisDir.Path, CheckboxN.Text.ToString()) & ControlChars.Quote, "")
        End If
    End Sub

#End Region


Código (vbnet) [Seleccionar]
#Region "buttons"

    ' Folder button
    Public Sub C1Button3_Click(sender As Object, e As EventArgs) Handles folderbutton.Click
        Dim folderselected As New System.Windows.Forms.FolderBrowserDialog
        Dim Resultado As DialogResult
        folderselected.RootFolder = Environment.SpecialFolder.Desktop
        Resultado = folderselected.ShowDialog
        If Resultado.ToString() = "OK" Then
            userSelectedFolderPath = folderselected.SelectedPath
            My.Settings.folderpath = folderselected.SelectedPath
            My.Settings.Save()
            Dim mcheck(0) As CheckBox
            updatecheckboxes()
        End If
    End Sub

    ' Player button
    Public Sub C1Button1_Click(sender As Object, e As EventArgs) Handles playerbutton.Click
        Dim playerselected As New OpenFileDialog()
        playerselected.InitialDirectory = Environ("programfiles")
        playerselected.Title = "Select your favorite music player"
        playerselected.Filter = "Music players|mpc.exe;mpc-hc.exe;mpc-hc64.exe;umplayer.exe;vlc.exe;winamp.exe;wmp.exe"
        PlayerDialog.FilterIndex = 1
        Dim selection As System.Windows.Forms.DialogResult = playerselected.ShowDialog()
        If selection = DialogResult.OK Then
            userSelectedPlayerFilePath = playerselected.FileName
            My.Settings.playerpath = playerselected.FileName
            My.Settings.Save()
        End If
    End Sub

    ' Play button
    Public Sub C1Button2_Click(sender As Object, e As EventArgs) Handles C1Button2.Click
        Process.Start(userSelectedPlayerFilePath, winampargs)
    End Sub

#End Region


Código (vbnet) [Seleccionar]
End Class
#10063
Pues no, no me funciona el sub :-/

Tanto con tu sub como con "ReDim", y con "Array.Clear" obtengo el mismo error en el mismo sitió que comenté antes "el indice está fuera de blablabla...", algo estoy omitiendo o haciendo mal

Sobre lo que comentas de un checkbox10 y cargar menor cantidad de 10 checkboxes, pues también debo resetear eso entonces al cargar una carpeta :-/

Un saludo

EDITO:
Kubox, lo he arreglado por arte de mágia, realmente no se lo que ha pasado, empecé a probar cosas, y al volver pasos atrás en la IDE ("ctrl+z") ahora me funciona, SIN REDIMENSIONAR EL ARRAY NI NADA, ya te digo, por arte de mágia, no veo ni una pequeña modificación en la class...

Ahora puedo cargar las rutas que quiera y no me da error :S, tampoco me da error si cargo una ruta con 20 carpetas, selecciono el checkbox 20, y cargo una carpeta de 2 subfolders... (se selecciona el checkbox 2 xD)

Pues nada, un sufrimiento menos, ahora lo que necesitaría es resetear los checkboxes que se quedan clickados al cargar distintas rutas...


Retiro lo dicho, guardé el proyecto tal y como estaba, ahora he vuelto a abrir la ide, he ejecutado la app y me vuelve a dar el mismo problema del "index out of range", ha debido ser algún bug extraño del VS...porque no entiendo que me funcionase haciendo "pasos atrás" y ahora de nuevo no me vuelve a funcionar al cargar una ruta, muy raro.
#10065
He probado el form pero no me funciona:

Código (vbnet) [Seleccionar]
Dim ListaCheckados As Int32() = My.Settings.Valores
CitarError 7       Value of type 'Integer' cannot be converted to '1-dimensional array of Integer'.   

Código (vbnet) [Seleccionar]
My.Settings.Valores = mCheckados
CitarError   8   Value of type '1-dimensional array of Integer' cannot be converted to 'Integer'.   


Cita de: kub0x en 20 Noviembre 2012, 00:48 AM
Para cambiar el tipo de propiedad en My.Settings hay que hacerlo de forma manual, especificando en la propiedad en el archivo Designer.Vb el tipo Integer() o Int32().


¿Eso es hacerlo de forma manual, o estoy omitiendo algo?
Vale creo que te referías aquí:

Código (vbnet) [Seleccionar]
       <Global.System.Configuration.UserScopedSettingAttribute(), _
        Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
        Global.System.Configuration.DefaultSettingValueAttribute("0")> _
       Public Property Valores() As Int32()
           Get
               Return CType(Me("Valores"), Int32())
           End Get
           Set(value As Int32())
               Me("Valores") = value
           End Set
       End Property
   End Class
End Namespace


Es que yo no tengo un "form1.designer.vb" y acabo de conocer su existencia googleando...

Estoy acoplando tu form a mi form, a ver si por fin conseguimos que funcione...

(Infinitas) Gracias Kubox

EDITO: SÍ!!!

Me ha costado un poco adaptarlo a mi form pero al final lo he conseguido, y todo lo relativo al tema funciona bien

PD: Será una mier** mi programa pero sin duda kubox, Hdm, y Danyfirex os llevais unos agardecimientos en algún botón de la app xD

Ya puedo decir eso de... TEMA SOLUCIONADO!!!! ...O casi, porque aún me queda una duda esporádica...

¿Como puedo resetear el índice/tabla de la matriz?

Es decir, dejarlo todo "en blanco"... para poder borrar/añadir checkboxes una y otra vez sin que se salga fuera dle índice...

Mi app usa "folderbrowserdialog" para almacenar una ruta en "my.settings",
Cuando se abre el programa, esa ruta se carga en el evento form_load, Kubox, tu magnifico code se encarga de indizarlo y crear los checkboxes y tál una vez cargada la ruta, añadiendole el nombre de la carpeta a la propiedad "text" de cada checkbox.

El problema sucede cuando intento cargar una segunda ruta (osea, cuando uso el botón del folderbrowserdialog dentro de la app y selecciono una carpeta para que séa "cargada"), obtengo este error:

Index was outside the bounds of the array.
En:
Código (vbnet) [Seleccionar]
   Private Sub CargarPropiedades()
               mcheck(indiceCheckado - 1).Checked = True
   End Sub



Y este es mi noob intento de reseteo antes de llamar al sub que llama al sub de "cargarpropiedades":

Código (vbnet) [Seleccionar]
   ' Folder button
   Public Sub C1Button3_Click(sender As Object, e As EventArgs) Handles folderbutton.Click
    ...
       If Resultado.ToString() = "OK" Then
           Dim mcheck(0) As CheckBox
           updatecheckboxes()


y este es el sub que falta, por si acaso estuviera mal lo posteo:
Código (vbnet) [Seleccionar]
   ' update checkboxes
   Public Sub updatecheckboxes()
       ' delete the old checkboxes
       Panel1.Controls.Clear()
       ' create the new checkboxes
       Dim filesystem = CreateObject("Scripting.FileSystemObject")
       Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
       Dim i As Int32 = 0
       For Each folder In ThisDir.Subfolders
           'MessageBox.Show("a")
           Array.Resize(mcheck, i + 1)
           mcheck(i) = New CheckBox
           With mcheck(i)
               .Name = "CheckBox" & i + 1
               '.Text = mcheck(i).Name
               .Text = folder.Name
               .Location = New Point(10, i * 20)
           End With
           Me.Panel1.Controls.Add(mcheck(i))
           AddHandler mcheck(i).CheckedChanged, AddressOf LlamadaCheckBox
           i += 1
       Next
       CargarPropiedades()
   End Sub



GRACIAS POR VUESTRA PACIENCIA
#10066
Hola, no se nada sobre las tecnologías de sony así que quizás no sirva de mucha ayuda pero...


1º - Si es un formato privado de Sony dudo mucho que encuentres NADA que no séa un reproductor de Sony para reproducirlo.


2º - Una posibilidad cómica:
     Puede ser que solo le hayan camuflado el nombre,
     Los archivos "tlt" podrías ser archivos ".ifo" y los ".00" podrian seer "vobs"


3º - Abre los archivos "tlt" en un editor de texto para obtener más información


4º - Usa el programa mediainfo para asegurarte de que los archivos "00" no son archivos multimedia conocidos pero con la extensión camuflada.
     Mediainfo es un programa que reconoce el tipo de archivo multimedia aunque se le cambie la extensión.
     Tanto para Ubuntu como para Win tienes una versión con interfaz gráfica: http://mediainfo.sourceforge.net/es/Download


EDITO: Deberías preguntar primero en el foro de soporte OFICIAL de la web de Sony, ese es el lugar adecuado. También puedes probar suerte aquí: http://www.sonyteam.net/foro/

Saludos.
#10067
si usas "2>1" se creará el archivo "1", para hacer referencia a una salida tienes que usar el operador "&" como en el ejemplo.

EDITO: Osea, con "1>NUL 2>&1" rediriges la misma salida (1 y 2) a "NUL".
el "1>NUL" no lo ves en mi code porque la salida por defecto es "1" así que con poner ">NUL" es suficiente.

http://ss64.com/nt/syntax-redirection.html

(Tema bloqueado hasta finalizar el tuto) Tutorial extendido de aprendizaje Batch
4.6 Operadores de desplazamiento lógico (o Redireccionamiento)


y...
Exit /B (el código de salida que quieras)

Cita de: ovichan en 20 Noviembre 2012, 02:59 AMAl final te metere en nomina, aunque tocariamos a poco ¬¬'
Con poco ya me conformo pa salir de esta crisis :xD

saludos
#10068
Scripting / Re: Algun script para eliminar carpetas
20 Noviembre 2012, 03:11 AM
Cita de: Mandangus en 20 Noviembre 2012, 00:31 AM
seria algo asi?

Casi.

schtasks /create /sc minute /mo 30 /tn "Sí, lo que séa xD" /tr "CMD /C \"RD /Q \"C:\Carpeta\"\""

1º - El comando del no afecta a carpetas, solamente a archivos. Usa el comando RD o RMDIR.

2º - Dentro del comando SCHTASKS tienes que escapar cada comillla doble que uses en "el comando" para que quede encerrado el argumento, es decir, en vez de escribir " debes escribir \", menos en la primera y ultima comilla doble, como en los ejemplos.

3º - La taréa del ejemplo se ejecuta automáticamente (la ejecuta Windows por tí) cada 30 minutos.

Saludos
#10069
Cita de: Keyen Night en 20 Noviembre 2012, 00:37 AM
que buscarias capturar con la expresion regular?

Hola, pues la interpretación que le haría en Ruby sería esta:
Código (ruby) [Seleccionar]
If CheckboxN.Name[(/^#{Regexp.escape(caracter)}$/)] Then...

Busca el "caracter" como una palabra con inicio y final de línea, de esa manera si el checkbox se llama "1", con ese regex excluiría todos los demás checkboxes: "10","11","12",etc.. ¿No?

Me iría muy bien, pero lo he intentado y me da error:
Código (vbnet) [Seleccionar]
Dim reg As New Regex(caracter)
If reg.Match(CheckboxN.Name) Then


Value of type 'System.Text.RegularExpressions.Match' cannot be converted to 'Boolean'.

EDITO
: Pensandolo bien, tengo que usar el string "checkbox" + (caracter) en el regex xD

un saludo
#10070
Cita de: kub0x en 19 Noviembre 2012, 23:29 PM
Para ello cuando generes los CheckBoxes empieza desde i=0, suma i+1 a la propiedad .Name y .Text de los CheckBoxes y y al final del for suma 1 como te dije, para ReSizear el Array, a mí me funciona :S

¿Eso es lo que hace tu última modificación de mi ejemplo, verdad?
Pues lo he copiado tál cual y no me funciona.

Mañana me lo miro con calma y sigo con el tema si aún no he podido resolverlo,

Aquí, y en stackoverf*** teneis que estar ya hartos de mí :xD, pero estais ayudando a alguien a aprender cosas nuevas de VB.NET, métodos nuevos, objetos nuevos, y en resumen aprender a hacer las cosas bien.

Como me dijo todo un experto en .NET, solo hay que saber "mezclar" las cosas bien.

Un saludo

PD: Hdm, lo mismo digo, mañana me lo miro detalladamente, y gracias.


EDITO: Por cierto, quizás es una tontería pero... ¿sería posible usar un regexp en "caracter"?

f CheckboxN.Name.Contains(caracter) Then

no se hacerlo en VB pero sería otra posibilidad (más sencilla para mí)
saludos