elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 80
311  Programación / Programación Visual Basic / Re: Problema con el Sorted en: 10 Enero 2017, 13:35 pm
Vale creo que he dado en un punto clave, el list1 depende directamente del campo/función SEtiquetaTxt y PlantillasLST (que tambien es un listbox que esta bajo el cuadrito de Listbox1) . Tal y como lo entiendo el texto de List1 viene de el PlantillaLST y este a su vez, de SEtiquetaTxt.. ¿puede tener algo que ver o estoy dando palos de ciego?

Para aclarar, cual es el listbox que quieres ordenar porque veo muchos y además sigues usando la propiedad list, incluso en PlantillasLST .

Es simple, como pongo en el ejemplo si usas list no ordena si usas Additem si.

Nota:
Deberías usar e código GeShi de el Hacker.net para que el código se vea más claro, Selecciona Visual Basic y entre  |Code=vb| y |/code| pones el código.



Si el tener que usar AddItem te obliga a reconfigurar todo el código, se me ocurre que hagas una cosa.

Sea cual sea el ListBox que quieras ordenar puedes meter la lista que quieras ordenar en un Array. Luego lismpias el listBox, mediante  List1.Clear y luego lo llenas usando List1.AddItem()


312  Programación / Programación Visual Basic / Re: Problema con el Sorted en: 9 Enero 2017, 11:53 am
¿dices que ya valdría? ¿no haría falta definir el True en el código? ¿solo con ponerlo en la opciones como True ya vale?. Muchas gracias, me estais ayudando mucho. ;)

Hombre, en el código ya te dice que es una propiedad de solo lectura cuando lo ejecutas y no te deja. Hay que establecerlo en las propiedades del objeto.

La razón por la cual no se ordena el listbox usando la propiedad list no tengo ni idea de por qué. Parece como si al hacerlo así fijaras el lugar del elemento en el la lista y no se aplica la ordenación. Así que para que funcione la ordenación hay que usar AddItem.

 Si te digo la verdad yo tampoco lo sabía, ha sido a base de probar que he comprobado que al usar la propiedad ListBox.List no ordena y usando AddItem si lo hace, como comprobarás aplicando los ejemplos, no hay más.



Ya para rematar la faena pondré otro ejemplo más simple

Así NO ordena con la propiedad Sorted en TRUE
Código
  1. List1.List(0) = "Patata"
  2. List1.List(1) = "Zanahoria"
  3. List1.List(2) = "Guisante"
  4. List1.List(3) = "Limón"
  5.  

Resultado
Código:
Patata
Zanahoria
Guistante
Limón


Así SÍ ordena con la propiedad Sorted en TRUE
Código
  1. List1.AddItem "Patata"
  2. List1.AddItem "Zanahoria"
  3. List1.AddItem "Guisante"
  4. List1.AddItem "Limón"
  5.  

Resultado
Código:
Guistante
Limón
Patata
Zanahoria

313  Programación / Programación Visual Basic / Re: Problema con el Sorted en: 9 Enero 2017, 10:42 am
A ver pongo el List1.Sorted = True al principio del código, despues de definir variables y cuando doy a compilar me sale "error de compilacion no se puede asignar a propiedad de solo lectura".. pero si lo cambio a Listbox.Sorted = True no me da dicho error y si que me deja compilar, pero no sé si me funciona o no.. ¿A que se debe esto? ¿Es por que hay que definir el objeto como propiedad general o como?. Gracias de nuevo.

A veces me enrollo mucho en mis respuestas y no quedan claras. La razón ya te la he comentado es por usar List1.List() en lugar de AddItem para llenar el ListBox.

Si usas la propiedad LIST, cada elemento queda asignado en un determinado lugar del ListBox y éste ignora el sorted.  Si usas AddItem, aplicará el sorted.

Además te he puesto ejemplo para que veas como en un caso si ordena y en otro no.

Te vuelvo a poner donde debes corregir.
Citar
For Bucle = 0 To (PlantillasLST.ListCount - 1)
    If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
        List1.List(conto) = PlantillasLST.List(Bucle)
       List1.AddItem (PlantillasLST.List(Bucle))
        conto = conto + 1
    End If
Next Bucle

En este caso el Sorted se puede aplicar a control ListBox de nombre List1
. El otro ListBox que se llama PlantillasLST no veo en el código donde lo cargas pero si también lo quieres poder  ordenar usa AddItem cuando lo llenes, ya que no dices cual de los dos quieres ordenar.


Te pongo de nuevo varios ejemplos para que veas como en un caso se ordena y en otro no aunque tenga la propiedad Sorted activada

Código:
- Crea dos ListBox 
...- Con List1.Sorted= False
...- Con List2.Sorted = True

EJEMPLO1
En este ejemplo al usar la propiedad LIST, el List2 NO queda ordenado aunque Sorted esté en True.
Código
  1. '//Debes cambiar las propiedades de...
  2. '//List1 con Sorted = False
  3. '//List2 con Sorted = True
  4.  
  5. List1.AddItem ("Patata")
  6. List1.AddItem ("Zanahoria")
  7. List1.AddItem ("Guisante")
  8. List1.AddItem ("Limón")
  9.  
  10. For Index = 0 To List1.ListCount - 1
  11. List2.List(Index) = (List1.List(Index))
  12. Next


EJEMPLO2
En este ejemplo, el List2 SÍ queda ordenado porque usas la propiedad AddItem para llenarlo
Código
  1. '//Debes cambiar las propiedades de...
  2. '//List1 con Sorted = False
  3. '//List2 con Sorted = True
  4.  
  5. List1.AddItem ("patata")
  6. List1.AddItem ("Zanahoria")
  7. List1.AddItem ("Guisante")
  8. List1.AddItem ("Limón")
  9.  
  10. For Index = 0 To List1.ListCount - 1
  11. List2.AddItem (List1.List(Index))
  12. Next








314  Foros Generales / Foro Libre / Curso ocupacional de páginas Web ¿timo? en: 8 Enero 2017, 17:37 pm
He recibido una carta del servicio ocupacional para realizar un curso, ya que estoy en paro,  que consiste en la confección y publicación de páginas web, obviamente no basado en programación, seguramente se use algún tipo de programa conocido para este fin.

Se menciona en la carta que  hay prácticas en  empresa.

Como ya he realizado timo cursos ocupacionales con anterioridad tengo dudas de si esto sirve realmente para algo. Uno de ellos era de logística por parte de una empresa municipal y consistía en un tipo sentado en una silla dictando las páginas de un libro para que lo escribiéramos en una libreta, libro que podía encontrar en la biblioteca de mi ciudad. Así un día tras otro y finalmente el certificado de haber realizado el curso. A saber qué dinero recibieron como subvención por parte del estado para realizar este curso y lo que gastaron, obviamente sólo en el sueldo del profesor que se limitaba a dictar las páginas del libro.

Por otro lado qué empresa contrata a alguien solo por haber hecho este curso. Además sin discapacidad. Porque hablamos de un trabajo sedentario de alguien sentado en una silla. Trabajo perfecto para alguien sin movilidad, por ejemplo. y que al menos pueda usar las manos. Yo tengo perfecta movilidad, así que no se.

¿Vale la pena hacer el curso? ¿O es una gilipollez?


Tengo que mencionar que a pesar que tengo conocimientos de programación, jamás he trabajado ni he estudiado en el campo de la programación o la informática.



315  Foros Generales / Foro Libre / Re: Este es el informe del espionaje de EEUU que acusa a Putin de ayudar a Trump en: 8 Enero 2017, 16:10 pm
Pues yo me lo creo. Por Tutatis bendito, que también se hace aquí en España, los del PP llena las redes de trolls despotricando a los líderes de otros partidos contrarios al PP cuando hay elecciones. Se llenan los foros y los comentarios de noticias de cualquier índole, sea de ciencia, política, literatura, deporte, social, del corazón o lo que sea, cualquier excusa vale para desprestigiar y desacreditar a otros partidos y líderes, con mentiras a mansalva. Es que era increíble, entrabas en una noticia sobre una especie nueva de rana encontrada en el Amazonas y te salía el troll de turno haciendo comentarios negativos sobre Zapatero y en las últimas sobre Pablo Iglesias o Sánchez.

Cuando estudiaba usaba Yahoo Repuestas, y hacía una pregunta sobre matemáticas, y contestaba alguien criticando a Zapatero, alucinante.

Y se deben dedicar a eso porque no descansaban. Contestabas y te volvían a contestar, volvías a replicar y te volvían a contestar a cualquier hora, fueran las 2 de la madrugara, las 6 o las 12 de medio día. No descansan. Al final lo dejabas estar porque era una rueda sin fin. Yo creo que algunos de ellos tenían el mismo alias pero contestaban varias personas usando el mismo alias o cuenta turnándose.



316  Programación / .NET (C#, VB.NET, ASP) / Re: Modificar registro de windows a 64 bits en: 8 Enero 2017, 15:51 pm
Hola

No se si @Elektro te responderá a si que a ver si este cambio te sirve.
(no te servirá por la razón que verás más abajos - usas Net Framework anterior a 4.0-)


Código
  1.             Dim ClaveRaíz As Microsoft.Win32.RegistryHive = Microsoft.Win32.RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
  2.        ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
  3.        Dim Clave = Microsoft.Win32.RegistryKey.OpenBaseKey(ClaveRaíz, Microsoft.Win32.RegistryView.Registry64) '<-- Para x64
  4.  
  5.  
  6.        Dim Dato As Byte() = New Byte() {&H43, &H61, &H63, &H61, &H72, &H72, &H75,
  7.                         &H74, &H61, &H20, &H64, &H65, &H20, &H70,
  8.                         &H6F, &H6C, &H6C, &H6F}
  9.  
  10.        ' Crea las claves y valores en la localización especificada
  11.        Using key As Microsoft.Win32.RegistryKey = Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo\",
  12.                                                      Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree)
  13.  
  14.            key.SetValue("Valor_DWORD", 1, Microsoft.Win32.RegistryValueKind.DWord) 'Valor DWORD
  15.            key.SetValue("Valor_Binario", Dato, Microsoft.Win32.RegistryValueKind.Binary) 'Valor Binario
  16.            key.SetValue("Valor_String", "Hola mundo", Microsoft.Win32.RegistryValueKind.String) 'Valor String
  17.        End Using
  18.  
  19.  


OpenRemoteBaseKey es para un equipo remoto.
Código
  1.    Dim Clave = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(ClaveRaíz, Environment.MachineName, RegistryView.Registry64) '<-- Para x64

Lo de que Microsoft.Win32 no está declarado es porque debes importar la clase primero.

Código:
Imports  Microsoft.Win32


Código
  1. Imports Microsoft.Win32
  2.  
  3. Public Class Form1
  4.  
  5.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.    End Sub
  7.  
  8.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  9.        Dim ClaveRaíz As RegistryHive = RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
  10.        ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
  11.        Dim Clave = RegistryKey.OpenBaseKey(ClaveRaíz, RegistryView.Registry64) '<-- Para x64
  12.  
  13.  
  14.        Dim Dato As Byte() = New Byte() {&H43, &H61, &H63, &H61, &H72, &H72, &H75,
  15.                         &H74, &H61, &H20, &H64, &H65, &H20, &H70,
  16.                         &H6F, &H6C, &H6C, &H6F}
  17.  
  18.        ' Crea las claves y valores en la localización especificada
  19.        Using key As RegistryKey = Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo\",
  20.                                                      RegistryKeyPermissionCheck.ReadWriteSubTree)
  21.  
  22.            key.SetValue("Valor_DWORD", 1, RegistryValueKind.DWord) 'Valor DWORD
  23.            key.SetValue("Valor_Binario", Dato, RegistryValueKind.Binary) 'Valor Binario
  24.            key.SetValue("Valor_String", "Hola mundo", RegistryValueKind.String) 'Valor String
  25.        End Using
  26.    End Sub
  27.  
  28. End Class
  29.  

O bien ponerlo como te lo he puesto yo
Código
  1.                Dim ClaveRaíz As Microsoft.Win32.RegistryHive = Microsoft.Win32.RegistryHive.LocalMachine
  2. ...



He estado mirando la razón por la cual te aparece el error de que OpenBaseKey no es miembro de Microsoft.Win32.RegistryKey

Eso es debido a que estás usando .Net Framework anterior 4.0. Si usas Framework 3.5 por ejemplo solo dispones de la función OpenRemoteBaseKey.

Usando Framework 3.5 lo he estado testando y puedes hacerlo de la siguiente manera usando OpenRemoteBaseKey en lugar de OpenBaseKey:


Código
  1.  
  2.        Dim ClaveRaíz As Microsoft.Win32.RegistryHive = Microsoft.Win32.RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
  3.        ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
  4.        Dim Clave = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(ClaveRaíz,
  5.                                                                  Environment.MachineName) '<-- Para x64 '<-- Para x64
  6.  
  7.  
  8.        Dim Dato As Byte() = New Byte() {&H43, &H61, &H63, &H61, &H72, &H72, &H75,
  9.                         &H74, &H61, &H20, &H64, &H65, &H20, &H70,
  10.                         &H6F, &H6C, &H6C, &H6F}
  11.  
  12.        Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo").
  13.            SetValue("Valor_DWORD", 1, Microsoft.Win32.RegistryValueKind.DWord)
  14.  
  15.        Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo").
  16.            SetValue("Valor_Binario", Dato, Microsoft.Win32.RegistryValueKind.Binary)
  17.  
  18.        Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo").
  19.            SetValue("Valor_String", "Hola mundo", Microsoft.Win32.RegistryValueKind.String)
  20.  
  21.       Clave.Close()
  22.  
  23.  

con Using;

Código
  1. Imports Microsoft.Win32
  2.  
  3. Public Class Form1
  4.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  5.   Dim ClaveRaíz As RegistryHive = RegistryHive.LocalMachine    ' HKEY_LOCAL_MACHINE
  6.        ' Crea un puntero de clave de Registro para HKEY_LOCAL_MACHINE en la máquina actual
  7.        Dim Clave = RegistryKey.OpenRemoteBaseKey(ClaveRaíz, Environment.MachineName) '<-- Para x64
  8.        Dim Dato As Byte() = New Byte() {&H43, &H61, &H63, &H61, &H72, &H72, &H75,
  9.                         &H74, &H61, &H20, &H64, &H65, &H20, &H70,
  10.                         &H6F, &H6C, &H6C, &H6F}
  11.  
  12.        ' Crea las claves y valores en la localización especificada
  13.        Using key As RegistryKey = Clave.CreateSubKey("SOFTWARE\CacarrutaDePollo\",
  14.                                                      RegistryKeyPermissionCheck.ReadWriteSubTree)
  15.  
  16.            key.SetValue("Valor_DWORD", 1, RegistryValueKind.DWord) 'Valor DWORD
  17.            key.SetValue("Valor_Binario", Dato, RegistryValueKind.Binary) 'Valor Binario
  18.            key.SetValue("Valor_String", "Hola mundo", RegistryValueKind.String) 'Valor String
  19.        End Using
  20.  
  21.  End Sub
  22.  End Class



ACCESO AL REGISTRO MEDIANTE VBSCRIPT

VBScript está obsoleto y como nos ha mostrado @Elektro Net dispone de funciones para acceder al registro.  Sin embargo si lo prefieres puedes usar VBScript, que además es compatible con cualquier versión de Framework que uses incluso el 2.0.

La verdad es que quise hacerlo como lo hacía en VB6, per no funciona en modo Option Sctrit en ON. No encontré nada de nada por mucho que busqué, pero sí un método para poder ejecutar funciones  de VBScript en Net y con Option Strict activado y con System.Reflection.

Aplicando dicho método he creado el siguiente código:

Código
  1. Option Strict On
  2.  
  3. Imports System.Runtime.InteropServices
  4. Imports System.Reflection
  5.  
  6. Public Class Form1
  7.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  8.        Dim Shell As Object = Nothing
  9.        Dim WSHType As Type = Type.GetTypeFromProgID("WScript.Shell")
  10.        If Not WSHType Is Nothing Then
  11.            Shell = Activator.CreateInstance(WSHType)
  12.        End If
  13.        If Not Shell Is Nothing Then
  14.            'Introduce un dato en el valor predeterminado de la clave
  15.            WSHType.InvokeMember("RegWrite", BindingFlags.InvokeMethod Or BindingFlags.Public Or BindingFlags.Instance, Nothing, Shell,
  16.   New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\", "Dato_Predeterminado", "REG_SZ"})
  17.  
  18.            'Crea un Valor String
  19.            WSHType.InvokeMember("RegWrite", BindingFlags.InvokeMethod, Nothing, Shell,
  20.                                 New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\Valor_String",
  21.                                  "Hola mundo",
  22.                                  "REG_SZ"})
  23.  
  24.            'Crea un Valor EXPAND
  25.            WSHType.InvokeMember("RegWrite", BindingFlags.InvokeMethod, Nothing, Shell,
  26.            New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\Valor_EXPAND",
  27.              "Hola mundo",
  28.              "REG_EXPAND_SZ"})
  29.  
  30.            'Crea un valor DWORD
  31.            WSHType.InvokeMember("RegWrite", BindingFlags.InvokeMethod, Nothing, Shell,
  32.               New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\Valor_DWORD",
  33.                 "25",
  34.                 "REG_DWORD"})
  35.  
  36.            Marshal.ReleaseComObject(Shell)
  37.        End If
  38.  
  39.  
  40.    End Sub
  41. End Class
  42.  


Sólo que no tengo muy claro que marcador de enlace usar. He usado BindingFlags.InvokeMethod, podría usar BindingFlags.Public o BindingFlags.Instance, y muchos más.

Además se pueden combinar

Código
  1.            WSHType.InvokeMember("RegWrite",
  2.                                 BindingFlags.InvokeMethod Or
  3.                                 BindingFlags.Public Or
  4.                                 BindingFlags.Instance, Nothing, Shell,
  5.        New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\Valor_String", "Hola mundo", "REG_SZ"})


El inconveniente son los datos binarios que sólo admite 4 valores "43 61 63 61" por ejemplo. Quizás si que se pueda añadir más, no se. La forma de escribir los datos binarios es extraña. Hay que invertir los valores y unirlos, formando un nuevo valor hexadecimal compuesto por los anteriores e invertido -->61636143. Luego hay que convertirlo a un valor decimal entero 1633902915 y este dato es el que se escribe en el registro, pero quedará registrado como "43 61 63 61".

Código
  1. Option Strict On
  2.  
  3. Imports System.Runtime.InteropServices
  4. Imports System.Reflection
  5.  
  6. Public Class Form1
  7.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  8.        Dim Shell As Object = Nothing
  9.        Dim WSHType As Type = Type.GetTypeFromProgID("WScript.Shell")
  10.        If Not WSHType Is Nothing Then
  11.            Shell = Activator.CreateInstance(WSHType)
  12.        End If
  13.        If Not Shell Is Nothing Then
  14.            'Crea un valor Binario
  15.            Dim Dato As Byte() = New Byte() {&H43, &H61, &H63, &H61}
  16.            Dim InvertByte As String = Nothing
  17.            For N As Integer = 0 To 3
  18.                InvertByte = CStr(Conversion.Hex(Dato(N))) & InvertByte '&H61636143
  19.            Next N
  20.  
  21.            Dim intValueBinary As Integer = Convert.ToInt32(InvertByte, 16) ' -->1633902915
  22.            WSHType.InvokeMember("RegWrite", BindingFlags.InvokeMethod, Nothing, Shell,
  23.               New Object()  {"HKEY_LOCAL_MACHINE\SOFTWARE\MiClave\Valor_Binario",
  24.                 intValueBinary,
  25.                 "REG_BINARY"})
  26.  
  27.            Marshal.ReleaseComObject(Shell)
  28.  
  29.        End If
  30.    End Sub
  31. End Class
  32.  


Para leer usar RegRead

Código
  1.  
  2.     Dim Shell As Object = Nothing
  3.        Dim WSHType As Type = Type.GetTypeFromProgID("WScript.Shell")
  4.        If Not WSHType Is Nothing Then
  5.            Shell = Activator.CreateInstance(WSHType)
  6.        End If
  7.        If Not Shell Is Nothing Then
  8.            Try
  9.                MessageBox.Show(CStr(WSHType.InvokeMember("RegRead",
  10.                                                          System.Reflection.BindingFlags.InvokeMethod,
  11.                                                          Nothing,
  12.                                                          Shell,
  13.                       New String() {"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName"})))
  14.                System.Runtime.InteropServices.Marshal.ReleaseComObject(Shell)
  15.            Catch ex As Exception
  16.                MessageBox.Show("no hay ningún valor")
  17.            End Try
  18.        End If
  19.  
  20.  



No hace falta  decir que también se puede hacer, aunque innecesariamente, con funciones API,

317  Programación / .NET (C#, VB.NET, ASP) / Re: Modificar registro de windows a 64 bits en: 7 Enero 2017, 16:07 pm
En realidad no es necesario que modifiques las propiedades de tu proyecto para compilarlo explicitamente a arquitectura de 64 Bits

Respetando las formas del usuario que ha usado My, en tal caso debe compilar como x64. Que tras probar su ejemplo comprobé que era por eso, por compilar como AnyCPU. En realidad, esa es la razón por la cual  se modifica esta clave

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows
NT\CurrentVersion\Windows

y no esta otra

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows

como  pregunta @Tomas1982

El término spooler suele hacer referencia a la cola de impresión de la impresora, eso debería dar una pista junto al valor asignable yes/no. Yo tampoco se exactamente para que sirve ese cambio, no lo he buscado (seguro que habrá miles de resultados en Google xD), pero supongo que servirá para simular que no haya impresora conectada, o algo relacionado.

Sí, lo busqué en Google, pero lo que he encontrado efectivamente hace referencia a la cola de impresión, como dices, pero me sale en otros puntos de registro sin el valor "spooler" y no en [..\CurrentVersion\Windows], además de hacer referencias a servicios de impresora. Por defecto está en Yes, pero vamos, ni idea de para qué.

El servicio de cola de impresión se llama Spooler, y el proceso del servicio es [C:\Windows\System32\spoolsv.exe]. Tras deshabilitar este servicio el valor seguía en YES. Así que probé con gpedit.msc, estuve habilitando y deshabilitando valores relacionados con la impresión y el registro no cambiaba el valor.



318  Programación / Programación Visual Basic / Re: Problema con el Sorted en: 6 Enero 2017, 08:53 am
No puedes establecer SORTED del Listbox en tiempo de ejecución.

Citar
Private Sub List1_Click()
SEtiquetaTXT.Text = List1.Text
List1.Sorted = True
End Sub

Se debe establecer desde las propiedades del objeto.


Abría que ver que tipo de ordenación quieres.

En este caso si lo quisieras de menor a mayor sorted no te sirve, ya que el listbox te lo ordena de la siguiente manera:

Código:
1
12
2
25
4
45


y debería ser así:
Código:
1
2
4
12
25
45

Para los números basta con poner ceros a la izquierda:
Código
  1. Private Sub Form_Load()
  2. Dim patata(5) As String
  3. patata(0) = "05"
  4. patata(1) = "25"
  5. patata(2) = "03"
  6. patata(3) = "35"
  7. patata(4) = "04"
  8. patata(5) = "40"
  9. For Each n In patata
  10. List1.AddItem n
  11. Next
  12.  
  13. End Sub
  14.  

Pero no uses  LIST
Código:
List1.List(Index) = (patata(Index))

usa AddItem

Fíjate:
Código
  1. Dim patata(5) As String
  2. patata(0) = "05"
  3. patata(1) = "25"
  4. patata(2) = "03"
  5. patata(3) = "35"
  6. patata(4) = "04"
  7. patata(5) = "40"
  8. For Index = 0 To UBound(patata) - 1
  9. List1.List(Index) = (patata(Index))
  10. Next
Si lo haces así los elementos no quedarán ordenados, ni siquiera poniendo un cero a la izquierda.

Así que tienes dos razones por la cual no se te ordena. Una es que como ordena alfabéticamente si usas números debes poner ceros a la izquierda, según la longitud del número. Si manejas tres cifras  deberías poner los números del modo --> 001, 002 , ... , 025, 099, ..., 120

La otra razón es que usas, "List1.List(índice)=....", en lugar de List1.AddItem.


Citar
For Bucle = 0 To (PlantillasLST.ListCount - 1)
    If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
       List1.List(conto) = PlantillasLST.List(Bucle)
       List1.AddItem (PlantillasLST.List(Bucle))
        conto = conto + 1
    End If
Next Bucle


Para otro tipo de ordenación especial tendrás que hacer algún tipo de algoritmo de ordenación y luego en ese orden meterlo en el listBox con sorted en False


319  Programación / .NET (C#, VB.NET, ASP) / Re: Modificar registro de windows a 64 bits en: 6 Enero 2017, 08:26 am
Tienes que compilar el programa como aplicación de 64bits.

Supongo que lo debes tener en AnyCPU, pues lo cambias a x64.




En propiedades del proyecto, ves a 'COMPILAR' o 'BUILD' en inglés y luego en CPU selecciona x64


por cierto, deberías quitar la coma en "no,"



Por curiosidad ¿Para qué este cambio? ¿para que és "Spooler"?

Código:
My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows", "Spooler", "no")

320  Programación / .NET (C#, VB.NET, ASP) / Re: Ayuda para realizar programa en c# en: 29 Diciembre 2016, 19:53 pm
No entiendo muy bien lo que buscas a pesar de los comentarios anteriores. Pero me da la impresión que lo que quieres es obtener combinaciones sin repetición.
Si tienes A, B, C
Sería
Código:
AB
AC
BC


Si  tienes
A, B, C, D, E
(y en grupos de 3 en 3)
Sería :
Código:
A B C 
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E

En cuyo caso esto obtendría las combinaciones sin repetición:
Código
  1.           List<string> Matriz = new List<string>();
  2. List<string> Elementos = new List<string>();
  3.  
  4.        Elementos.AddRange(new List<string>() { "A", "B", "C", "D", "E" });
  5.            IEnumerable<string> pairsCol = Enumerable.Empty<string>();
  6.            pairsCol = from string value1 in Elementos
  7.                       from string value2 in Elementos
  8.                       select string.Join(Environment.NewLine, (from value3 in Elementos
  9.                                                 where
  10.                                                 (value1 != value2) &&
  11.                                                 (value1 != value3) &&
  12.                                                 (value2 != value3) &&
  13.                                                  (Convert.ToChar(value2) > Convert.ToChar(value1)) &&
  14.                                                    (Convert.ToChar(value3) > Convert.ToChar(value2))
  15.            select  string.Format("{0} {1} {2} ", value1, value2, value3)));
  16.  
  17.  
  18. List<string> ClearRep = new List<string>();
  19. Matriz.Clear();
  20.  
  21. foreach (string pairs in pairsCol) {
  22. foreach (string line in pairs.Split(new string[]{ Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries))
  23.            {
  24. Matriz.Add(line);
  25. }
  26.  
  27. }
  28.  
  29. Console.WriteLine("Número de combinaciones: {0}", Matriz.Count);
  30. Console.WriteLine(string.Join(Environment.NewLine, Matriz));
  31. Console.ReadLine();
  32.  


Como información extra, para calcular el número de combinaciones sin repetición se hace de la siguiente forma:

Cm,n =  m!/(n! * (m-n)!)

donde m! es el factorial de m
n! es el factorial de n
(m-n)! es el factorial de (m-n)

Por ejemplo:
Elementos = A, B, C, D, E (que son 5)
Grupos= de 3 en 3

C5,3 =  5!/(3! * (5-3)!)= 10

Espero te sirva




Chau

Páginas: 1 ... 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [32] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 ... 80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines