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ú

Temas - OscarCadenas_91

#1
buenas queria preguntarles cual es la forma mas adecuada a hacer esto, basicamente es que tengo una aplicacion hecha en vb.net winform y que lee archivos csv, la aplicacion esta asociada a la extension es decir que  al hacer doble clic sobre el archivo inicia y carga el contenido en mi aplicación, uno de los detalles es que si quiero abrir otro archivo se me abre la aplicacion otra ves y lo que quiero es que se abra solo en una.

Estaba leyendo por internet que esto se puede hacer mediante:

1) la api "SendMessage" es decir al iniciar y comprobar si el proceso esta activo y si lo esta  enviar los archivos que pasan Environment.GetCommandLineArgs()
y luego cerrar la aplicacion.
2)lo mismo que el anterior solo que en ves de verificar si el proceso esta activo usar MUTEX.
3)Hacerlo mediante el WindowsFormsApplicationBase, es decir   heredar una clase de WindowsFormsApplicationBase  estableciendo la propiedad IsSingleInstance  en TRUE.
4) Mediante: Dynamic Data Exchange (DDE) - (Esto si que no tengo mucha idea)

Cual de estas formas deberia usar??


Gracias
#2
Buenas, tengo esta duda cual de estas dos tecnologias es bueno usar al momento de desarrollar una aplicacion, a nivel de diseño y performance.

He estado leyendo por la red y vi que muchos recomiendan usar WPF ante Winform, ya que se puede personalizar y tiene capacidades mucho mayores de DataBinding entre otras cosas.
¿Segun ustedes cual creen que es mejor?

#3
hola estoy regresando despues de algun tiempo y me surge la siguiente duda cuando o cómo  se deben usar al pasar parametros  o argumentos a una subrutina o a una funcion.

Que diferencias hay en usar:
Código (vbnet) [Seleccionar]

'Caso 1
Private Sub Incrementar(valorA As Integer)
    valorA  = valorA +1
End Sub
'Caso 2
Private Sub Incrementar(ByRef valorA As Integer)
    valorA  = valorA +1
End Sub
'Caso 3
Private Sub Incrementar(ByVal valorA As Integer)
    valorA  = valorA +1
End Sub


Por lo que lei... tengo entendido que  pasar  argumento tipo ByVal crea una copia de la variable original, por lo que cualquier modificación hecha a dicha variable no afectará a la variable original y cuando se usa el  argumento tipo ByRef hace una referencia de la variable original, por lo que cualquier modificación hecha a dicha variable si afectará a la variable original.
Y ademas tengo entendido que tanto el caso 1 y el caso 2 son lo mismo ya que en el caso 1 viene implicitamente el ByRef

(Corríjanme si me equivoco)

Mis dudas que me surgen son:

Esto pasa de igual forma en una Funcion que retorne algun valor(Es necesario indicarle el tipo de Argumento)
como ejemplo:
Código (vbnet) [Seleccionar]

Private Function Incrementar(valorA As Integer) as Integer
valorA  = valorA +1
Return valorA 
End Function
Private Function Incrementar(ByVal valorA As Integer) as Integer

valorA = valorA +1
Return valorA 
End Function
Private Function Incrementar(ByRef valorA As Integer) as Integer
valorA  = valorA +1
Return valorA 
End Function



Cual es la forma correcta en la que deben escribirse en las Functions?

#4
Hola amigos, queria preguntarles si existe alguna forma de configurar en VB.NET o si existe algun complemento para que te aparezca las excepciones que generen al usar ciertos métodos.
Lo vi en C#




Existe alguna forma de ponerlo en vb.net?


#5
Buenas a todos, tengo una  duda, haber si alguien me puede orientar.

Estoy creando un aplicacion que busca palabras en un archivo de texto
Código (vbnet) [Seleccionar]

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim nCoincidencias As Integer = 0
       Dim texto As String = IO.File.ReadAllText("D:\resumen.txt")
       If texto.Contains("Solucion") Then
           nCoincidencias = nCoincidencias + 1
       End If
       If texto.Contains("Libro") Then
           nCoincidencias = nCoincidencias + 1
       End If
       If texto.Contains("Autor") Then
           nCoincidencias = nCoincidencias + 1
       End If
   End Sub


El problema viene cuando intento usar archivo un poco mas grande la aplicacion se queda congelada, sin poder hacer nada.


Busque informacion y lo que encontre es que se puede usar: Backgroundworker y usando Threads
Me podrian decir cual es la diferencia entre ambos, y que puedo mejorar en el codigo para no usar muchos IF



gracias
#6
Soy aprendiz en visual basic .net y no sabia como preguntar esto, quería preguntarles a los que tiene mas conocimientos, sobre que buenas practicas se deben tomar para programar en este lenguaje, tengo poca base y estoy aprendiendo de forma autodidacta
Espero que se entienda.
#7

Buenas a todos, tengo una duda haber si alguien me puede ayudar, tengo un Listview1, con los siguientes Items:

Proyecto1.docx
Presentacion_1.pptx
Informe2.docx
Proyecto1.docx
Informe3.docx
Presentacion_2.docx
Informe1.docx
Presentacion_2.docx



Lo que quiero hacer es  separar los Items duplicados  y los no duplicados:

No Duplicados:

Presentacion_1.pptx
Informe2.docx
Informe3.docx
Informe1.docx


Duplicados:

Proyecto1.docx
Presentacion_2.docx


Para listar los duplicados hice lo siguiente:
Código (vbnet) [Seleccionar]
   Dim NuevaLista As New List(Of String)
        Total = ListView1.Items.Count - 1
        For i = 0 To Total
            For j = i + 1 To Total

                If ListView1.Items.Item(i).Text = ListView1.Items.Item(j).Text Then
                    NuevaLista.Add(ListView1.Items.Item(i).Text)
                End If

            Next

        Next

      
      

Ahora necesito alguna idea para obtener para los no Duplicados, alguien me daria alguna idea?









#8

Hola a todos soy nuevo en este foro.

Comence hace 3 semanas a aprender VB.NET y despues de leer y leer  queria hacer mi primer programa es muy sencillo pero lo necesitaba, el programa lo que hace es buscar archivos con extension ".docx" y ".pptx" de mi memoria usb para luego copiar en otra carpeta, hasta hace un par de dias funcionaba, buscaba archivos y los mostraba en un listview1, pero ayer me infecte con un virus mi usb y oculto todas los archivos y carpetas y mi antivirus borro el virus, pero aun estaban ocultos los archivos y crei que igual deberia listar los archivos sin importar los atributos de oculto, pero cuando le doy a buscar me muestra el siguiente error:

No se controló StackOverflowException

Excepción no controlada del tipo 'System.StackOverflowException' en mscorlib.dll

Despues busque la forma de volver a mostrar los archivos desde el CMD de windows encontre que el virus movio todos mis archivos en una carpeta sin nombre(me di cuenta despues que el nombre tenia un espacio si no me equivoco es un caracter que aparece cuando se presiona alt + 0160).

El problema ocurre con esa carpeta con nombre vacio ya que si le cambio de nombre de la carpeta la aplicacion funciona.

Aqui les dejo el codigo del boton buscar archivos:


Código (vbnet) [Seleccionar]
'BOTON BUSCAR ARCHIVOS
Try
            Dim RutaArchivos As String = "G:\"

            For Each archivo As String In My.Computer.FileSystem.GetFiles(RutaArchivos, FileIO.SearchOption.SearchAllSubDirectories, "*.docx")
                ListView1.Items.Add(archivo)
            Next
For Each archivo2 As String In My.Computer.FileSystem.GetFiles(RutaArchivos, FileIO.SearchOption.SearchAllSubDirectories, "*.pptx")
                ListView1.Items.Add(archivo2)
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try


Si alguien podria ayudarme a solucionarlo, se lo agradeceria mucho.