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

#10011
misiles resultantes...  :xD instrucciones nop... en fin, más cosas que googlear xD, Gracias por la info Nov
#10012
Tengo problemas al intentar escribir datos en un archivo de texto...

Cualquier ayuda, se agradece!


Las líneas del problema:
Código (vbnet) [Seleccionar]
           If System.IO.File.Exists(Temp_file) = True Then System.IO.File.Delete(Temp_file)
           System.IO.File.Create(Temp_file)

( Cualquiera de las dos líneas, si elimino una, me da el mismo error en la otra, pero el archivo si que me lo llega a crear (vacío) )

El error:
The process cannot access the file 'C:\Users\Administrador\AppData\Local\Temp\PlayList_temp.txt' because it is being used by another process.

El sub:
Código (vbnet) [Seleccionar]
 Public Sub C1Button2_Click(sender As Object, e As EventArgs) Handles Button1.Click

       If Not playerargs = Nothing Then

           Dim Str As String
           Dim Pattern As String = ControlChars.Quote
           Dim ArgsArray() As String
           Dim Temp_file As String = System.IO.Path.GetTempPath & "\PlayList_temp.txt"
           Dim objWriter As New System.IO.StreamWriter(Temp_file)

           Str = Replace(playerargs, " " & ControlChars.Quote, "")
           ArgsArray = Split(Str, Pattern)

           If System.IO.File.Exists(Temp_file) = True Then System.IO.File.Delete(Temp_file)
           System.IO.File.Create(Temp_file)

       For Each folder In ArgsArray
           If Not folder = Nothing Then
               Dim di As New IO.DirectoryInfo(folder)
               Dim files As IO.FileInfo() = di.GetFiles("*")
                   Dim file As IO.FileInfo

               For Each file In files
                   ' command to writleline
                   'Console.WriteLine("File Name: {0}", file.Name)
                   'Console.WriteLine("File Full Name: {0}", file.FullName)
                   objWriter.Write(file.FullName)
                   objWriter.Close()
               Next
           End If
           Next

       If randomize.Checked = True Then
               RandomiseFile(Temp_file)
       End If

       Process.Start(userSelectedPlayerFilePath, playerargs)
       If autoclose.Checked = True Then
           Me.Close()
       End If
       Else
       MessageBox.Show("You must select at least one folder...", My.Settings.APPName)
       End If
   End Sub





EDITO: Ya está, solucionado:

Código (vbnet) [Seleccionar]
....
If Not playerargs = Nothing Then
    ....
    Dim Temp_file As String = System.IO.Path.GetTempPath & "\PlayList_temp.txt"

    Using objWriter As New System.IO.StreamWriter(Temp_file, false)
        For Each folder In ArgsArray
            If Not folder = Nothing Then
                Dim di As New IO.DirectoryInfo(folder)
                Dim files As IO.FileInfo() = di.GetFiles("*")
                Dim file As IO.FileInfo
                For Each file In files
                    ' command to writleline
                    'Console.WriteLine("File Name: {0}", file.Name)
                    'Console.WriteLine("File Full Name: {0}", file.FullName)
                    objWriter.Write(file.FullName)
                    ' objWriter.Close()
                Next
            End If
        Next
    End Using ' Flush, close and dispose the objWriter
    ....
#10013
Scripting / Re: [Python] Autologin web (interactivo)
22 Noviembre 2012, 11:23 AM
Cita de: zaikar en 22 Noviembre 2012, 10:41 AM
Alguna possibilidad de ver el script en VBS?? Ya que estoy buscando algo parecido.

Gracias

No, en VBS solo vas a poder manejar InternetExplorer (O eso tengo entendido), lo que necesitas es usar Chrome, esfuerzate un poco en aprender un poco el lenguaje que necesites y lo conseguirás, en el otro enlace que te ofrecí de Ruby hice hasta un archivo de configuración para que solo tengas que escribir la URL y las identidades de los botones, léete las páginas, el resto sería modificar el uso de la gema webdriver por la de chrome-watir.

Saludos.
#10014
>[RUBY] script para loguearse en una web e ir a una url
>[Python] Autologin web (interactivo)

Hay más, usa el buscador del foro.

PD: Creo que para chrome en Ruby necesitas usar Chrome-watir, nunca la he usado.

EDITO: lo de "al apretar ctrl+f12", para eso debes mantener el script en ejecución a la espera de un evento de teclado... es decir, si usas windows: la CMD visible, sin cerrarla. O puedes crear un un acceso directo en  el escritorio y asignarle la combinación de teclado que quieres, que me parece mejor idea.
#10015
Cita de: seba123neo en 21 Noviembre 2012, 19:48 PM
me imagino que estas ejecutando el .exe que esta en bin/release y no el de debug.
La verdad es que no... estaba con el debug, no conozco las diferencias entre compilar en modo "release" y "debug", pensé que solo era para facilitar la diferencia entre la versión debug y la release, pero voy a googlear sobre eso, gracias!




Cita de: HdM en 21 Noviembre 2012, 20:06 PM
Código (vbnet) [Seleccionar]

<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute()> _


eres un genio de VB, un pequeño problema menos!

Gracias,
Saludos
#10016
Cita de: seba123neo en 22 Noviembre 2012, 03:27 AMmuy poca gente se da cuenta que visual studio viene con un administrador de los tabindex

Pues si muy poca gente se da cuenta... yo que soy novato, aún menos :xD... ¿una ayudita para encontrar esa opción en la ide?

PD: Gracias Seba
#10017
Gracias otra vez Keyen, las expresiones regulares se usarlas (al menos en otros lenguajes), pero yo esto {0} nunca lo habia visro en un RegEx, y por más que busco información sobre que es... ni idea, y para colmo la usas al principio, la usas en medio (en una agrupación), y la vuelves a usar al final del regex, no he podido trabajar el patrón porque no sé que significa el {0} XD

Tu ejemplo me falla al encontrar un espacio en el string, he intentado añadirle (s) al patrón pero... como ya te digo con tanto {0} no sé por donde cojer la expresión.


Código (vbnet) [Seleccionar]
           Dim Expresión As String = String.Format("{0}[^{0}]+?{0}", Convert.ToChar(32))

           'Esta variable simula la que tu creas en tu aplicación'
           Dim Comando As String = String.Format(playerargs, Convert.ToChar(32))

           For Each x As Match In Regex.Matches(Comando, Expresión)
               MessageBox.Show(x.Value)
           Next

Si la variable contiene la cadena "C:\carpeta\con    espacios" el messagebox solo me muestra: "C:\Carpeta\Con, incluido la comilla, que tambien se la debería quitar... un rollo :xD






EDITO: Ya lo he solucionado:
Código (vbnet) [Seleccionar]
            Str = Replace(playerargs, " " & ControlChars.Quote, "")
            ' El contenido de Cadena queda así:    C:\Ruta 1"C:\Ruta 2"C:\Ruta 3"etc..."


He intentado hacer esto otro por mi cuenta, y me está dando mejores resultados...

El problema es que creo que en el array se guardan cadenas vacías,
si pudiera omitirlas con un "If NOTHING" me conformo, de hecho así es como las omito en este code, pero me sigue fallando una, solamente una... y no se como evitarla:

Código (vbnet) [Seleccionar]
           Dim Str As String
           ' Elimino los espacios entre argumentos
           Str = Replace(playerargs, " " & ControlChars.Quote, ControlChars.Quote)
           ' El contenido de Cadena queda así: "C:\Ruta 1""C:\Ruta 2""Más rutas..."

           ' El patrón delimitador (comilla)
           Dim Pattern As String = ControlChars.Quote

           Dim ArgsArray() As String 'Creamos un array

           ArgsArray = Split(Str, Pattern) 'Llenamos el array con las cadenas cortadas.

           ' Mostramos como ha quedado el resultado
           For Each folder In ArgsArray
               If Not folder = Nothing Then
                   Console.WriteLine(folder)
                   MessageBox.Show(folder)
               End If


           If randomize.Checked = True Then
               '  RandomiseFile("c:\1.txt")
           End If


primero me muestra una caja vacía:

(Es la cadena que quiero evitar, para la función que tengo que darle más tarde al array, que no quiero que me de error...)

y luego me muestra una caja de texto con cada "argumento", sin mostrarme ninguna otra caja vacía:


#10018
Cita de: DRIGIN en 22 Noviembre 2012, 01:34 AMporque pasa eso si no esta la letra c:

Porque el comando que se encarga de entrar a las unidades lo estás omitiendo:
CitarDO (ECHO "%%#" PUSHD "%%#:\" 2>NUL &&

Ahí falta un:
CitarDO (ECHO "%%#" & PUSHD "%%#:\" 2>NUL &&

Eso no te pasaría si no hubieras "cortado" mi script para ponerlo en una sola línea XD

Saludos!
#10019
Gracias Keyen Night, pero no es lo que busco

me ha hecho gracia, porque eres la tercera víctima persona que por mi culpa se ha confundido con mi duda, ya la he editado/vuelto a plantear, sorry, ojalá puedas ayudarme con eso.
#10020
Hola,

En mi form, creo una variable que contiene un string, que más tarde usaré en un botón para lanzar una app externa con los argumentos que previamente estan guardados en mi variable.

El contenido de la variable es este:
Código (vbnet) [Seleccionar]
Winamp.exe "Argumento 1" "argumento 2" "argumento 3" "más argumentos"

PD: Los argumentos son rutas de carpetas.

Y lo que quisiera hacer es un split para obtener cada argumento, osea, cada carpeta que está encerrada en comillas,y hacer algo así:


' Pseudocode
For each folder in var.split(ControlChars.Quote)
   for each file in get.folder.files
    appendline.(archivo_de_Texto, file.Name)
 Next


¿Como puedo hacer ese split en VB?

EDITO:
He intentadoe sto, pero me dice que hay caracteres ilegales... :S

Código (vbnet) [Seleccionar]
           Dim entries = playerargs.Split(" "c)
           For n As Integer = 1 To entries.Length - 1
               Dim files As String() = Directory.GetFiles(entries(n))
           Next