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

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32
271  Programación / .NET (C#, VB.NET, ASP) / Re: Recortar caracteres en: 23 Octubre 2015, 01:20 am
Hola Elektro

con todos los respetos SI que hay verios formatos para CSV. Tu mismo lo has dicho
Código:
un CSV es un archivo de TEXTO PLANO (archivo.txt) con la extensión modificada (archivo.csv) cuyo contenido está delimitado por comas u otro caracter que queda a elección de quien construye la tabla.

Partiendo de esa base es el formato (de guardado o lectura) que tu le quieras dar y no me refiero a la forma de compresión o codificación máquina del archivo (quizás debí especificar más).

 Por lo que se ha visto puede ser el de punto y coma que usa Excel ';', o simplemente separación por comas o las comillas y cada grupo de datos de forma lineal. Y el sistema es crear separaciones de datos por estos signos sean ;, , o  "","", como delimitadores entre un dato y otro. Cuando digo formato me refiero a diferentes formas de crear o interpretar la información del archivo. No se me ocurre otra palabra.  


En cuanto el equivalente a Input en .Net que expones tengo algunas ideas y me va a ser muy útil, gracias. Creo que eso justo es lo que necesita la persona que inició este tema.

272  Programación / .NET (C#, VB.NET, ASP) / Re: Recortar caracteres en: 21 Octubre 2015, 10:20 am
En cualquier caso el método par leerlo debe ser un equivalente al Input (debería haberlo), en VB6 pero desde VB.NET.

Si te fijas:
Código:
Element Name,Windows NT,Windows,Windows CE,Win32s,Component,Component Version,Header File,Import Library,Unicode,Element Type
ADsBuildEnumerator,4.0 or later,,,,ADSI,,adshlp.h,,,function

Aunque se vea desordenado sigue una lógica:
Código:
Dato1,Dato2,Dato3,Dato4,Dato5,...,Dato11

Donde ,,  es un espacio nulo es decir DatoX= ""

Y si su archivo lo muestra así:
Código:
"Dato1","Dato2","Dato3","Dato4","Dato5",...,"Dato11"

Viene a ser lo mismo.

Luego el sistema para leerlo debe ser similar al Input en VB.

Los archivos CSV que tengo yo, no son como los que pones de ejemplo. De hecho al abrirlo con el Excel se muestra todo en la misma columna tal cual como está en el archivo con comas y todo.

Por eso digo que debe haber varios formatos con misma extensión. Tengo clarísimo que los ejemplos que he puesto yo se han creado y se leen siguiendo un sistema similar al Input en VB6. Y por el ejemplo que ha puesto ella también deben ir por ahí los tiros.

Saludos


Utilizando el excel me he creado mi propio archivo
y se ha creado de la siguiente manera

Código:
1;124;9789
2;145;788
3;7878;65
4;9789;78
5;99;87
6;;88
7;788;7888
8;787;7
10;8;8

 En el Excel son 9 filas y 3 columnas.
Luego está claro que, todo depende del sistema para crear este tipo de archivo. como dices
Código:
un archivo CSV o Comma-separated values, es un archivo de texto plano el cual, como su propia definición indica, está delimitado por comas (u otro caracter)

Yo creo que el de ella sigue un patrón IDÉNTICO al del Input en VB6 y no el Excel

Ya no lo doy más vueltas  :xD


273  Programación / .NET (C#, VB.NET, ASP) / Re: Cerrar aplicación mientras ser reproduce un bucle Do/Loop en: 21 Octubre 2015, 09:54 am
Ok Elektro  :)

Encontré lo que comentas aquí. Lo probaré cuando pueda.

 CANCELACIÓN DE SUBPROCESOS ADMINISTRADOS

Saludos
274  Programación / .NET (C#, VB.NET, ASP) / Re: Recortar caracteres en: 21 Octubre 2015, 09:21 am
A partir de ahora en VB voy a preguntar si es para VB6 o para VB.NET  :-\

Siempre pasa igual :(

Los primero y antes de nada pon código, así sabremos que lenguaje usas o bien especifique que es para VB.NET.


Pero mantengo lo que dije pues he buscado ese tipo de archivos CSV, y hasta se pueden abrir con el notepad y son perfectamente legibles y sin comillas. No se quizás hay varios formatos.

Y también estoy de acuerdo con electro en que habría que ver como está escrito el texto, donde están las comas. Si no me equivoco debería ser algo similar a esto:

Código:
Element Name,Windows NT,Windows,Windows CE,Win32s,Component,Component Version,Header File,Import Library,Unicode,Element Type
ADsBuildEnumerator,4.0 or later,,,,ADSI,,adshlp.h,,,function
ADsBuildVarArrayInt,4.0 or later,,,,ADSI,,adshlp.h,,,function
ADsBuildVarArrayStr,4.0 or later,,,,ADSI,,adshlp.h,,,function

Código:
Job #, goURL, Reason, Destination
10101, learn_ps_processraw_cz, Automation/Batch Processing, http://av.adobe.com/russellbrown/ImageProcessorSM.mov
10101, learn_ps_viewglyphsai_cz, Type, http://av.adobe.com/russellbrown/OpenTypeSM.mov
10101, learn_ps_cs5_gsindex_cz, Getting Started and tutorials link on homepage, http://www.adobe.com
10101, ps_cs5_plugins_mac_cz, Download page for optional plug-ins, http://www.adobe.com
10101, ps_cs5_plugins_win_cz, Download page for optional plug-ins, http://www.adobe.com
275  Programación / .NET (C#, VB.NET, ASP) / Re: Recortar caracteres en: 20 Octubre 2015, 20:45 pm
Hola Eliza

Estaba intentado resolver tu problema hasta que me he dado cuenta de una cosa, y es que la cadena que muestra no tiene ningún sentido:

Código:
"652394532592467968,"","","2015-10-09 08:05:52 +0000","Twitter Web Client","Hay ocasiones en la que mejor prevalecer ‪#‎Sisepuede‬ y seguir adelante."

¿De verdad esto es así? Porque yo he buscado este tipo de archivo que nombras *.csv y no tienen ese formato.

Esto lo he sacado de WIN32API.CSV:
Código:
Element Name,Windows NT,Windows,Windows CE,Win32s,Component,Component Version,Header File,Import Library,Unicode,Element Type
ADsBuildEnumerator,4.0 or later,,,,ADSI,,adshlp.h,,,function
ADsBuildVarArrayInt,4.0 or later,,,,ADSI,,adshlp.h,,,function
ADsBuildVarArrayStr,4.0 or later,,,,ADSI,,adshlp.h,,,function
...


Creo que el archivo que intentas abrir se ha creado utilizando Open/For Append y Write. Este método crea los archivos con comillas:

Código:
NumFile = FreeFile
Open NombreFichero For Append As NumFile
Write #NumFile , Date$, Time$, Time$, "00:00:00"
Close NumFile

Se obtiene un archivo con el texto:

Código:
"10-20-2015","23:30:13","23:30:13","00:00:00"

Ahora al intentar leerlo la cosa se te complica. Para leerlo se hace de la siguiente manera:

Código:
NumFile = FreeFile
Open NombreFichero For Input As NumFile
Input #NumFile , Dato1, Dato2, Dato3, Dato4
Close NumFile

Ejemplo:
Código
  1. Option Explicit
  2.  
  3. Private Sub cmdGuardar_Click()
  4. Dim NombreFichero As String
  5. Dim NumFile As Integer
  6.  
  7. NombreFichero = App.Path & "\Prueba.txt"
  8. NumFile = FreeFile
  9.  
  10. Open NombreFichero For Append As NumFile
  11. Write #NumFile , Date$, Time$, Time$, "00:00:00"
  12. Close NumFile
  13.  
  14. 'Se guarda con este formato
  15. '"10-20-2015","23:27:56","23:27:56","00:00:00"
  16. End Sub
  17.  
  18. Private Sub cmdAbrir_Click()
  19. Dim NombreFichero As String
  20. Dim Dato1 As String, Dato2 As String, Dato3  As String, Dato4 As String
  21. Dim NumFile As Integer
  22.  
  23. NombreFichero = App.Path & "\Prueba.txt"
  24. NumFile = FreeFile
  25.  
  26. Open NombreFichero For Input As NumFile
  27. Input #NumFile , Dato1, Dato2, Dato3, Dato4
  28. Close NumFile
  29. Text1.Text = Dato1 & "  " & Dato2 & "  " & Dato3 & "  " & Dato4
  30.  
  31. 'Se Abre con este formato (sin comillas)
  32. '10-20-2015  23:27:56  23:27:56  00:00:00
  33. End Sub
  34.  
  35.  

Voy a proponerte otra manera y luego si puedes me comentas si te sirve.

Saludos



Pues lo prometido es deuda.

Este código lee un archivo CSV  (normal, sin comillas) e introduce línea por línea en un ListBox

Código
  1. Option Explicit
  2. Private Sub Command1_Click()
  3.  Dim Texto As String
  4.  Dim DirFile As String
  5.  
  6.  '//Directorio donde se encuentra el archivo
  7.  DirFile = App.Path & "\goURL_lr_photoshop_cz.csv"
  8.  
  9.  'Obtiene el texto
  10.  Texto = LeerArchivo(DirFile)
  11.  
  12.  'Obtiene las líneas y las introduce en un ListBox
  13.   Call CrearListaCompleta(Texto, List1)
  14.  
  15. End Sub
  16. '//Proceso para obtener las líneas de un texto
  17. Public Sub CrearListaCompleta(ByVal strLista As String, ByVal objList As ListBox)
  18.    Dim Lineas() As String
  19.    Dim i As Integer
  20.    Lineas = Split(strLista, vbNewLine)
  21.    For i = LBound(Lineas) To UBound(Lineas)
  22.        If Lineas(i) <> "" Then objList.AddItem Lineas(i)
  23.    Next
  24. End Sub
  25.  
  26. Public Function LeerArchivo(ByVal DirFile As String) As String
  27.  Dim FileName As String
  28.  Dim File As Integer
  29.  File = FreeFile
  30.  FileName = DirFile
  31.  Open FileName For Input As File
  32.    LeerArchivo = Input(LOF(File), #File)
  33.  Close File
  34. End Function
  35.  

Para guardar una archivo de texto (sin que se creen comillas) puedes usar esto:

Código
  1. Public Function GuardarArchivoTexto(ByVal strTexto As String, ByVal FileName As String)
  2.  Dim File As Integer, Cont As Integer, cDato As String
  3.  On Error GoTo EvitarError
  4.      File = FreeFile
  5.  Open FileName For Binary As #File
  6. For Cont = 1 To Len(strTexto)
  7.    Put #File, Cont, strTexto
  8.    Close #File
  9. Next
  10. EvitarError:
  11. Select Case Err.Number
  12.    Case 91
  13.    Resume Next
  14. End Select
  15. End Function
  16.  

Para llamarlo:
Código
  1. Dim Texto as Sring
  2. Texto = "¡Hola que tal!"
  3. Call GuardarArchivoTexto(Texto , "C:\Prueba.txt")  
  4.  

y si va a ser CSV

Código
  1. Dim Texto as Sring
  2. Texto = "¡Hola que tal!"
  3. Call GuardarArchivoTexto(Texto , "C:\Prueba.csv")  
  4.  


Espero que te sirva  ;)
276  Programación / .NET (C#, VB.NET, ASP) / Re: Cerrar aplicación mientras ser reproduce un bucle Do/Loop en: 19 Octubre 2015, 23:41 pm
Gracias  los dos ;-)


No estoy seguro que opción es mejor pero creo que por sencillez me decanto por usar la variable boleana.

He aprovechado para realizar un experimento de velocidad de los procesos dentro del bucle, para este ejemplo, que imagino que según el ordenador los resultados será  distinto.

Código
  1. Option Explicit On
  2. Option Strict On
  3. Imports System.Text
  4. Public Class Form1
  5.    Dim AplicacionCerrada As Boolean = False
  6.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  7.        Dim stopWatch As New Stopwatch() : Dim ts As TimeSpan : Dim elapsedTime As String = Nothing
  8.        Dim Cont As Integer = 0
  9.  
  10.        stopWatch.Start()
  11.        Do
  12.            Cont += 1
  13.            ts = stopWatch.Elapsed
  14.            String.Format("{00}", ts.Seconds)
  15.  
  16.            '///Experimeto que mide el número de procesos por segundo
  17.            Dim Datos As New StringBuilder
  18.            With Datos
  19.                .AppendFormat("Procesos: {0}", CInt(Cont))
  20.                .AppendLine()
  21.                .AppendFormat("Segundos: {0}", ts.Seconds)
  22.                .AppendLine()
  23.                .AppendFormat("Velocidad: {0}", (CInt(Cont) / (CInt(ts.Seconds))).ToString("0.000") & " Proc/s")
  24.            End With
  25.            Label1.Text = Datos.ToString
  26.            '/////////////////////////////////////////////////////////////////////////
  27.  
  28.            If AplicacionCerrada = True Then End
  29.            If ts.Seconds = 10 Then stopWatch.Stop() : Exit Do
  30.            My.Application.DoEvents()
  31.        Loop While Cont < 14000
  32.    End Sub
  33.    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles MyBase.FormClosing
  34.        AplicacionCerrada = True
  35.    End Sub
  36. End Class
  37.  




Esta sería la otra forma, aunque más compleja y que me ha costado encontrar.

Código
  1. Option Explicit On
  2. Option Strict On
  3. Imports System.Threading.Tasks
  4. Imports System.Text
  5.  
  6. Public Class Form1
  7.  
  8.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  9.        Dim stopWatch As New Stopwatch() : Dim ts As TimeSpan : Dim elapsedTime As String = Nothing
  10.        Dim Cont As Integer = 0
  11.  
  12.        Task.Factory.StartNew(Sub()
  13.  
  14.                                  stopWatch.Start()
  15.                                  'Desactivar el chequeo sobre acceso de varios subprocesos
  16.                                  ' CheckForIllegalCrossThreadCalls = False
  17.  
  18.                                  Do
  19.                                      Cont += 1
  20.                                      ts = stopWatch.Elapsed
  21.                                      String.Format("{00}", ts.Seconds)
  22.                                      '///Experimeto que mide el número de procesos por segundo
  23.                                      Dim Datos As New StringBuilder
  24.                                      With Datos
  25.                                          .AppendFormat("Procesos: {0}", CInt(Cont))
  26.                                          .AppendLine()
  27.                                          .AppendFormat("Segundos: {0}", ts.Seconds)
  28.                                          .AppendLine()
  29.                                          .AppendFormat("Velocidad: {0}", (CInt(Cont) / (CInt(ts.Seconds))).ToString("0.000") & " Proc/s")
  30.                                      End With
  31.                                      Label1.Invoke(CType(Sub() Label1.Text = Datos.ToString, MethodInvoker))
  32.                                      '/////////////////////////////////////////////////////////////////////////
  33.                                      If ts.Seconds = 10 Then stopWatch.Stop() : Exit Do
  34.                                      '  My.Application.DoEvents()
  35.                                  Loop While Cont < 14000
  36.  
  37.                              End Sub).ContinueWith(Sub()
  38.                                                        Me.Invoke(Sub()
  39.                                                                      Me.Text = "Proceso terminado"
  40.                                                                  End Sub)
  41.                                                    End Sub)
  42.    End Sub
  43. End Class
  44.  


De esta última forma usando Task e Invoke como habéis dicho el programa se cierra sin problemas.

Me ha costado averiguar también como llamar a un control externo dentro de un subproceso, ya que si llamaba diréctamente obtenía error. La forma era la siguiente:

Código
  1. Label1.Invoke(DirectCast(Sub() Label1.Text = Datos, MethodInvoker))

También:
Código
  1. Me.Invoke(Sub()
  2.        Me.Text = "Proceso terminado"
  3.        End Sub)


En cuanto a la eficiencia creo que es lo mismo porque me dan resultados idénticos, me refiero al experimento.

Si el ordenador es al menos normalito, debería salir del bucle antes de los 10 segundos.

Saludos
277  Programación / .NET (C#, VB.NET, ASP) / Cerrar aplicación mientras ser reproduce un bucle Do/Loop en: 19 Octubre 2015, 01:13 am
Hola

Hola me gustaría saber como salir de la aplicación cuando todavía no se a salido de DO/LOOP

Mi método clásico siempre ha sido poner END en el evento Unload en VB y también en Dispose en Net. No se si habrá otra manera también sencilla.

Por ejemplo he creado un Bucle Do/Loop en el que creo un reloj en el cual si han pasado 10 segundos se sale de del bucle. La razón es porque quiero que el bucle dure un mínimo de 10 segundos a espera que se cumpla una condición y si pasados los 10 segundos no se cumple sale del bucle.

Aquí va el supercódigo de ejemplo :P
Código
  1. Option Strict On
  2. Option Explicit On
  3. Public Class Form1
  4.  
  5.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  6.        Dim SecA As TimeSpan, SecB As TimeSpan
  7.        SecA = TimeSpan.FromTicks(Date.Now.Ticks)
  8.        Do
  9.            SecB = TimeSpan.FromTicks(Date.Now.Ticks).Subtract(SecA)
  10.            Me.Text = CStr(SecB.Seconds)
  11.            If CInt(SecB.Seconds) = 10 Then Exit Do
  12.            My.Application.DoEvents()
  13.        Loop 'While (podría poner condición y si se cumple sale antes de los 10 segundos)
  14.    End Sub
  15.  
  16.    Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
  17.        End
  18.    End Sub
  19. End Class

El problema está en que si quito
 
Código
  1.    Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
  2.        End
  3.    End Sub
  4.  

No se puede cerrar la apliación hasta que no pasen los 10 segundos
278  Programación / .NET (C#, VB.NET, ASP) / Re: Personalizar colores entorno de desarrollo de VB.NET 2010 en: 13 Octubre 2015, 23:49 pm
Ya está solucionado :laugh:.

Como dije quedaba probar el editor. Ya lo he probado.

Visual Studio Color Theme Editor
https://visualstudiogallery.msdn.microsoft.com/20cd93a2-c435-4d00-a797-499f16402378






Make the Visual Studio 2010 IDE colors look like Visual Studio 2008
http://www.hanselman.com/blog/MakeTheVisualStudio2010IDEColorsLookLikeVisualStudio2008.aspx


Esto si permite cargar archivos *.vstheme
https://raw.githubusercontent.com/peteristhegreat/DarkVS2010Theme/master/Expression.vstheme


279  Programación / .NET (C#, VB.NET, ASP) / Uso de Socks5 con navegador y motor de Firefox en: 13 Octubre 2015, 16:55 pm
Hola

He usado dos componentes que he añadido al cuadro de herramientas con el fin de usar el motor de firefox: WebKitBrowser y GeckoFX

El caso que puedo configurar Firefox para que use el Socks v5 en lugar de Proxy HTTP. Pero no he visto la forma de hacer que estos motores  en Vb.net usen socks.

Se que es un poco complicado el tema. Si lo sabéis bien, si no pues nada que se le va hacer.

MAS INFORMACIÓN:
Con WebKitBrowser he seguido el siguiente tutorial:

http://thebot.net/threads/vb-net-how-to-make-a-firefox-webbrowser.142359/

Componente WebKit
http://webkitdotnet.sourceforge.net/downloads.php
http://sourceforge.net/projects/webkitdotnet/?source=typ_redirect


Con GeckoFX he seguido el siguiente turorial
http://www.scenebeta.com/tutorial/como-usar-el-motor-de-mozilla-firefox-en-vb-net


GeckoFX
http://sourceforge.net/projects/geckofx/

Necesita los archivos  Xulrunner que se añaden a la carpeta  Debug de nuestro proyecto:
https://eclipse.org/atf/old/downloads/base_files/manualXulrunner_section.php

Gracias
280  Programación / .NET (C#, VB.NET, ASP) / Re: Personalizar colores entorno de desarrollo de VB.NET 2010 en: 13 Octubre 2015, 14:27 pm
Bueno, no soy un experto en Net, apenas acabo de empezar a sacarle jugo y con el 2010 me apaño.

Solo quiero cambiar el color de la maldita selección, nada más, ¿para eso lo tengo que actualizar ¿Ya es hora? ¿Por qué?, ¿estoy obligado?.  

Entiendo que un programador avanzado y que se gana la vida con ello quiere lo último pero yo solo quiero cambiar el color de la selección. Además, VB.NET no es barato como para estar actualizando a nueva versión cada  cinco minutos, ¿Como? ¿ la versión Express? para eso prefiero usar .Net 2010 completo. Supongo que te refieres a que actualice a una versión pirata ¿NO?  :xD

No se, esperaba que alguien supiera algún truquillo, como modificar algún archivo de configuración (setting) o extensión dll, del directorio del programa o algo así.

En cuanto a cargar el archivo *.vstheme, VB2010 no lo permite, tan sólo *.vssettings.

Creo que el editor podría funcionar, en cuanto pueda lo descargo y lo pruebo.

Por cierto,  Entorno de Desarrolo Integrado = Integrated Development Environment . Es una traducción. Vamos, si hablo en castellano, escribo en castellano, para que se me entienda. No confundamos churros con merinas. Ya al poner las siglas IDE lo pones en 'Universal', a eso me refiero con "mmm, no se a que te refieres  :¬¬". He tenido que buscar en Google que era IDE. No todos conocemos el 'lenguaje Universal'. Pero esto es solo un apunte personal, no te lo tomes a mal  ;). Contigo siempre aprendo algo y es de agradecer ¿De acuerdo?

Saludos





 
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines