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

#3211
Cita de: PalitroqueZ en 22 Septiembre 2016, 21:26 PMuna calculadora on line

Jeje, para eso siempre se puede utilizar la calculadora online de Google simplemente escribiendo en el buscador: "gb to kib"

Saludos!
#3212
Cita de: FKT en 22 Septiembre 2016, 21:02 PMel caso que me han dicho que pase 500GB a kibibyte, seria conviritendo los 500 GB a bytes y despues que?? realmente no lo he entendido :-\

No. Un kilobyte son 1000 bytes (aunque generalmente se use para referirse a 1024 bytes), 1 kibibyte son 1024 bytes, y un gigabyte son 1.000.000.000 bytes, partiendo de esa base ya tienes la solución al problema.

Saludos!
#3213
.NET (C#, VB.NET, ASP) / Re: Oculta app
22 Septiembre 2016, 19:53 PM
Cita de: Tomas1982 en 22 Septiembre 2016, 18:38 PMCuando le pongo Me me quita el error pero no me oculta la form.

El keyword "Me" se utiliza para referenciar la instancia actual de la clase donde estés escribiendo el código, por ende, debes usar "Me" a nivel de clase:
Código (vbnet,1,4) [Seleccionar]
Public Class Form1

   Sub Test()
       Me.Hide() ' Me = Form1
   End Sub

End Class


Si por otro lado estás intentando ocultar el Form desde otra clase distinta, entonces puedes llamarlo de la siguiente manera: My.MyProject.Forms.NombreDelForm.Hide()

Saludos!
#3214
Scripting / Re: Que lenguaje me recomendais
22 Septiembre 2016, 19:40 PM
Cita de: MDd2 en 22 Septiembre 2016, 19:13 PMQuiero un lenguaje que no se necesite compilar, en plan bash o batch.

Si lo que quieres es un lenguaje nativamente soportado por el sistema operativo, entonces:

PowerShell, puedes usar todo el potencial de dicho lenguaje, incluyendo todo el potencial de la librería de classes de .NET Framework puesto que puedes hibridarlo facilmente (importar namespaces, instanciar types de .NET, utilizar los métodos de .NET, etc), todo ello sin instalar nada adicional en el sistema operativo de Windows, y el resultado final será en único archivo individual con extensión .ps1.

Utilizar PowerShell a secas también lo veo recomendable aunque es un lenguaje basado en el uso de pipes, en un uso excesivo... y eso puede crear cierta frustración, sin embargo si lo usas para escribir código .NET evitarás el uso de las pipes.

Debo aclarar que PowerShell v1 y v2 no compilan, sin embargo PowerShell v3 si que se compila a byte-code, pero creo que es un dato insignificante puesto que se compila al vuelo y lo único que pareces querer es utilizar un lenguaje que te permita tener el código final en forma de archivo editable en lugar de un executable.

Saludos!
#3215
Programación General / Re: sumar numeros en un texto
22 Septiembre 2016, 18:28 PM
Cita de: daniel7885 en 22 Septiembre 2016, 18:08 PM
Me das la implementacion en java es que no se  vb.net

pero... ¿qué te cuesta hacer esto?:

#3216
Cita de: okik en 22 Septiembre 2016, 16:41 PM
Lo que quiero es iniciar el segundo formulario y  FormA ocultarlo mediante 'HIDE". Pero al ocultar el principal realmente sigue en memoria y para liberar memoria quería eliminar todos los eventos y controles del FormA , al mostrar el FormB

Te entiendo, pero no no no no no no, no... no, y ¡NO!.  No debes intentar hacer eso okik, arriba al principio del comentario te expliqué la razón.

De todas formas te explico por que te sucede eso, creo que estás atribuyéndole propósitos adicionales al método Form.Show(), ese método solo sirve para mostrar el Form, no para instanciarlo, es decir, si tu liberas un control del FormA, luego ocultas ese FormA llamando a Form.Hide() y por último muestras el FormA llamando a Form.Show(), en ese procedimiento lo único que has hecho es liberar un control y ocultar y mostrar el form, el control no se va a volver a colocar ahí por arte de mágia, debes volver a crear una instancia del control, y añadirla a la colección de controles del Form.

Para solucionarlo debidamente, podrías controlar el evento Form.VisibleChanged de la siguiente manera:
Código (vbnet) [Seleccionar]
Public NotInheritable Class FormMain : Inherits Form

   Friend WithEvents ButtonShowFormB As Button

   Public Sub New()
       MyClass.InitializeComponent()
       Me.Text = "FormA"
   End Sub

   Private Sub FormMain_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.VisibleChanged

       If DirectCast(sender, Form).Visible Then
           Me.ButtonShowFormB = New Button With
                   {
                     .Text = "Show FormB",
                     .Location = New Point(10, 10)
                   }
           Me.Controls.Add(Me.ButtonShowFormB)
       End If

   End Sub

   Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonShowFormB.Click
       Me.ButtonShowFormB.Dispose()
       Me.ButtonShowFormB = Nothing
       Me.Hide()

       FormB.Show()
   End Sub

End Class


Si realmente te empeñas en liberar los recursos del Form principal a deshora, fíjate bien en esta instrucción que añadí:
Citar
Código (vbnet) [Seleccionar]
Me.ButtonShowFormB = Nothing
...después de llamar al método Control.Dispose() es necesario asignarle un valor nulo al objeto tal y como hice, para facilitarle la tarea al GarbageCollector indicándole que puede proceder a liberar los recursos del control cuanto antes.

Saludos!
#3217
.NET (C#, VB.NET, ASP) / Re: Oculta app
22 Septiembre 2016, 17:44 PM
Hola.

Intenta explicarte mejor.

Si te refieres a ocultar el Form en tiempo de ejecución entonces puedes utilizar el método Form.Hide().
Si por otro lado te refieres a impedir que se muestre el Form en tiempo de startup (cuando inicias la aplicación, durante la carga del Form), entonces en el constructor del Form (Public Sub New() ...) debes añadir y modificar algunas propiedades del Form que no vale la pena mencionar hasta no tener claro si eso es lo que quieres hacer...

Saludos!
#3218
Programación General / MOVIDO: Oculta app
22 Septiembre 2016, 17:43 PM
#3219
Programación General / Re: sumar numeros en un texto
22 Septiembre 2016, 17:41 PM
Cita de: engel lex en 22 Septiembre 2016, 16:06 PMaqui 2 ejemplos en batch
...
claro, con un lenguaje de verdad (python, nodejs, c, c++, visual basic... o cualquiera) sería un poco más facil

Toda la razón, logicamente, Batch es "especial" (como Forrest Gump).




Antes de nada quiero aclarar que por norma general no suelo proporcionar tareas ya hechas si no veo un esfuero por parte del usuario que formula la pregunta, pero esto es algo muy sencillo que no cuesta esfuerzo de reproducir practicamente en ningún lenguaje así que...

Esta sería una manera de hacerlo con VB.NET:
Código (vbnet) [Seleccionar]
Dim sum As Integer =
   (From line As String In File.ReadAllLines("C:\file.txt")
    Select CInt(line.Split({"="c}, StringSplitOptions.RemoveEmptyEntries).Last())
   ).Sum()

Console.WriteLine("Sum: {0}", sum)



Una metodología que nos aportaría mayor versatilidad y control sería la siguiente:
Código (vbnet) [Seleccionar]
Dim sum As Integer

Using sr As New StreamReader(File.OpenRead("C:\file.txt"))
   Do Until sr.EndOfStream
       sum += CInt(sr.ReadLine().Split({"="c}, StringSplitOptions.RemoveEmptyEntries).Last())
       ' Control de errores opcional:  Integer.TryParse(...)
   Loop
End Using

Console.WriteLine("Sum: {0}", sum)



Saludos.
#3220
Windows / Re: Limpiar Windows manualmente
22 Septiembre 2016, 17:02 PM
Buen aporte, enhorabuena @okik, ¡me apunto! y añado algo a la sección:


////Limpiar archivos temporales/////

Productos de Microsoft


Los productos de Microsoft (Microsoft Office, Visual Studio, etc) suelen crear copias de seguridad de sus instaladores, los cuales se almacenarán en la ubicación C:\ProgramData\Package Cache despues de su instalación, esto es una simple copia de seguridad que sirve para dos propósitos, el primero es para poder crear una instalación administrativa y así aumentar el tiempo de carga de los componentes del instalador (de ahí el nombre "cache", puesto que esos archivos sirven como cache para el instalador), el segundo propósito y más importante es para poder desinstalar el producto, esto quiere decir que podemos eliminar todas esas copias de instaladores sin problemas siempre y cuendo seamos conscientes de que si posteriormente intentasemos desinstalar el producto entonces tendriamos problemas y deberiamos recurrir a metodologías manuales para eliminar los restos de esas instalaciones.

Instaladores de Microsoft Installer (MSI)


Lo mismo ocurre con los instaladores del software de creación de instaladores de Microsoft Installer. Cada vez que instalamos un archivo de instalación en formato .MSI, se guardará una copia del instalador en el directorio C:\Windows\Installer, nuevamente podemos eliminarlos sin ningún problema siempre y cuando sepamos que no necesitarémos desinstalarlo en un futuro, repararlo y/o actualizarlo, puesto que al momento de intentar desinstalar un paquete .MSI se le pedirá al usuario que ubique el desinstalador (pero ya no estará, por que lo habremos eliminado de C:\Windows\Installer).

- ¿Qué hacer en caso de que necesitemos desinstalar un paquete .MSI y no tengamos la copia de seguridad del instalador?
En realidad no es nada grave siempre y cuando tengamos la copia original del instalador, es exactamente lo mismo que la copia de seguridad que se almacena en C:\Windows\Installer, así que al momento de intentar la desinstalación de un instalador .msi solo tenemos que indicarle la ubicación del instalador original para que pueda proceder con su desinstalación.

En algunos casos los instaladores vienen empacados por doble, me refiero, archivos executables que en su interior contienen los paquetes .msi. Para obtener el archivo .msi del interior del .exe lo único que debemos hacer es dirigirnos al dirctorio temporal del sistema, iniciar el instalador .exe y éste desempacará el instalador .msi en dicho directorio temporal, lo copiamos, lo guardamos en otra ubicación y listo.

El método alternativo para la desinstalación de un paquete .msi consistiría en eliminar manualmente los rastros del instalador que se encuentran en una de las siguientes claves: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall o HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall, pero esto no voy a explicarlo en profundidad puesto que ya se explicó en su mayor parte en el post principal.





////Eliminar un programa manualmente/////

Archivos .dll "imborrables"


En ciertas ocasiones, al desinstalar un programa de forma manual, nos encontraremos con el siguiente problema: al intentar eliminar el directorio de una aplicación no nos permite eliminar un archivo dll específico.

El problema descrito arriba suele deberse a que algunas aplicaciones pueden registrar componentes en el sistema operativo que siempre están en uso, como por ejemplo extensiones de shell. Si por los motivos que tengamos  intentamos eliminar directamente el directorio de un programa y no nos permite eliminar algunos archivos dll, esto es un indicativo casi seguro de que se trata de una extensión de shell, y para poder eliminar ese archivo .dll primero debemos hacer otra cosa: desinstalarlo.

Para desinstalar una extensión de shell (o shell-extension) abriremos la consola de windows (o CMD), y simplemente escribiremos el siguiente comando:
Código (dos) [Seleccionar]
RegSvr32.exe -u "C:\Directorio del programa\Archivo_que_no_puedo_borrar.dll"

En algunos casos puede que no se trate de una extensión de shell, y solamente ocurra que otra aplicación está mantiiendo abierto el handle del archivo, o dicho con otras palabras, que otro programa está usando ese archivo y hasta que no termine de usarlo (o cierres ese programa) no se podrá eliminar. Podemos forzar el desbloqueo del handle del archivo con aplicaciones como File Governor: http://www.novirusthanks.org/products/file-governor/

Un método alternativo para eliminar un archivo dll de una desinstalación conflictiva que no sepamos la causa por la cual no nos permite eliminar dicho archivo, simplemente debemos modificarle el nombre, así es, modificarle el nombre al archivo .dll, reiniciar sesión en Windows, y ahora te permitirá eliminar el archivo.
¿Por qué no puedo eliminar el archivo .dll con nombre modificado si primero no reinicio sesión en Windows?, esto tiene una razón muy sencilla, el archivo .dll está registrado en el sistema, está en uso, y si, puedes modificarle el nombre, pero seguirá en uso, en cambio cuando reiniciamos sesión en Windows, el sistema operativo se ve incapaz de encontrar ese archivo .dll con el nombre modificado, y al no encontrarlo no lo puede cargar, es decir, ya no estará en uso por el sistema (sin embargo, seguirán los restos del registro de ese archivo .dll en el registro de Windows).  



Espero que todo esto haya servido de algo, y se proceda a desinstalar aplicaciones con un par de neuronas si no se sabe bien lo que se está haciendo y las consecuencias que puede tener.

Saludos!