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

#1811
Si no te sale la opción de "CC" (Closed Captions) en teoría es una señal que indica que el autor del video no ha activado las "contribuiciones de la comunidad" para ese video, y por ende el video no soporta contribuiciones de subtítulos. Vamos, que no puedes traducir el video.

Fuente(s):
https://support.google.com/youtube/answer/6054623?hl=en
https://support.google.com/youtube/answer/6052538?hl=en

Cita de: kbytes en  6 Agosto 2017, 20:30 PM
Si es que alguien sabe de alguna forma o metodo porfavor escribame a mi correo

Siempre puedes tratar de contactar con el "creador de contenido" (el autor del video) para solicitarle que active las contribuiciones de la comunidad para su canal y para ese video. Eso es lo único que pudes hacer. No sé si por preguntar en una pagina a lo mejor esperabas otro tipo de solución... ¿como por ejemplo hackear a Google? X'D.

Saludos.
#1812
...Dos temas wüapos de Rock para el antes y el despues de hacer gym:

Ashes From Stone - Mine Oh Mine
[youtube=640,360]https://www.youtube.com/watch?v=ogJRufBD-ik[/youtube]

Ashes From Stone - Buried Alive
[youtube=640,360]https://www.youtube.com/watch?v=1GI8xoVKPKM[/youtube]
#1814
Cita de: NEBIRE en  6 Agosto 2017, 06:52 AMBufff... el formulario tiene unas 16.400 líneas de código... Eso es casi 1Mb. Pero es que además el código es completamente espagueti... Desisto de perder tiempo revisándolo.

...Pues no te puedes hacer una idea de cómo era el código fuente "original" :xD: http://foro.elhacker.net/ingenieria_inversa/una_duda_sobre_un_programa_con_codigo_fuente-t472356.0.html;msg2133052#msg2133052




1. Se agradece que hayas puesto imágenes, agradezco mucho la gente que se toma el tiempo de escribir y explicar bien las cosas. Pero te ha faltado mostrar lo más importante: el bloque de código del controlador del evento Button.Click del botón "Elim/Marcados"...

2. En la imagen de la caja de error estás tapando con letras rojas la última palabra del mensaje de error, no sé que narices pone ahí (¿"objeto de comando" tal vez?). De todas formas traducir/hacerse a la idea del significado de un error con mensajes de error en Español de por si ya es una tarea bastante odiosa. Te sugiero que modifiques el idioma de la aplicación a Inglés (y con ello los mensajes de error):
Código (vbnet) [Seleccionar]
Application.CurrentCulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

...de esta forma el mensaje de error será bastante más comprensible para todos (ya que la gran mayoría de programadores están acostumbrados a programar en Inglés y lidiar con mensajes del depurador generados en Inglés para las excepciones producidas) y podrás encontrar muchísimo más facilmente información en la World Wide Web sobre un mensaje de error específico que no conozcas o que sea poco habitual...

3. Dale a "Detalles" en la caja de error y muéstranos el rastreo de la pila de llamadas, todo el mensaje al completo (click derecho > seleccionar todo > copiar). Ahí debería indicarte al menos la linea del código fuente que ha producido la excepción, y con eso ya tendrías alguna pista más para que trates de depurar el código por ti mismo. Te muestro un ejemplo de un stack-trace de una excepción cualquiera:

Código (ini,11) [Seleccionar]
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: Could not find file 'C:\fsdfsdf'.
File name: 'C:\fsdfsdf'
  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
  at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
  at System.IO.File.Open(String path, FileMode mode)
  at WindowsApp3.Form1.Button1_Click(Object sender, EventArgs e) in C:\Visual Studio Projects\WindowsApp3\WindowsApp3\Form1.vb:line 26
  at System.Windows.Forms.Control.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnClick(EventArgs e)
  ...





Es un puto horror tratar de depurar esto. Podrías probar a empezar por expandir las variables especificadas dentro de las cadenas de texto de las sentencias 'DELETE' para comprobar que valores estás enviando exactamente en esas peticiones de la base de datos.

Código (vbnet) [Seleccionar]
Me._Button3.Text = "Elim/Marcados"

...

Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles _Button3.Click
   Dim str3 As String = ""
   Dim str4 As String = ""
   Dim str5 As String = ""
   Dim str6 As String = ""
   Dim str7 As String = ""
   Dim str8 As String = ""
   Dim num5 As Double = 0
   Dim num As Integer = 0
   Dim box As CheckedListBox = Me._CheckedListBox2
   num = (Me._CheckedListBox2.CheckedItems.Count - 1)
   Do While (num >= 0)
       Dim str22 As String
       Dim str23 As String
       Dim str24 As String
       Dim str25 As String
       str3 = Me._CheckedListBox2.CheckedItems.Item(num).ToString
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           str4 = Strings.Mid(str3, 1, 3)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Mid(str3, 20, 4)
           str7 = Strings.Mid(str3, &H1A, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           str4 = Strings.Mid(str3, 1, 3)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Mid(str3, &H15, 4)
           str7 = Strings.Mid(str3, &H1B, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           str4 = Strings.Mid(str3, 1, 3)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Mid(str3, &H21, 4)
           str7 = Strings.Mid(str3, &H1A, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           str4 = Strings.Mid(str3, 1, 3)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Space(4)
           str7 = Strings.Mid(str3, &H1D, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           str4 = Strings.Mid(str3, 1, 3)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Space(4)
           str7 = Strings.Mid(str3, 30, 3)
           If (StringType.StrCmp(Strings.Mid(str3, 30, 1), "", False) <> 0) Then
               str7 = Strings.Mid(str3, &H1C, 3)
           End If
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           str4 = (Strings.Mid(str3, 1, 2) & " ")
           str6 = Strings.Mid(str3, 6, 5)
           str5 = Strings.Space(4)
           str7 = Strings.Mid(str3, &H1F, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           str4 = Strings.Mid(str3, 1, 2)
           str6 = Strings.Mid(str3, 5, 5)
           str5 = Strings.Mid(str3, &H15, 9)
           str7 = Strings.Mid(str3, &H20, 3)
           str8 = String.Concat(New String() {str8, str7, str4, str6, str5})
       End If
       Me._CheckedListBox2.Items.Remove(RuntimeHelpers.GetObjectValue(Me._CheckedListBox2.CheckedItems.Item(num)))
       Dim str13 As String = str7
       Dim str14 As String = str4
       Dim inputStr As String = str6
       Dim str16 As String = str5
       num5 = Conversion.Val(inputStr)
       Dim connection3 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BD2.mdb")
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           str23 = "delete from imprimir where cod+numero+mid(descrip,1,4)=@var10+@var11+mid(@var13,1,4)"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           str23 = "delete from imprimir where cod+numero=@var10+@var11"
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           str23 = "delete from imprimir where cod+mid(numero,1,3)+mid(descrip,1,4)=@var10+@var11+@var13"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           str23 = "delete from imprimir where cod+numero=@var10+@var11"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           str23 = "delete from imprimir where cod+numero=@var10+@var11"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           str23 = "delete from imprimir where cod+numero=@var10+@var11"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           str23 = "delete from imprimir where cod+mid(numero,1,2)+descrip=@var10+@var11+@var13"
       End If
       Dim command3 As New OleDbCommand(str23, connection3)
       command3.CommandType = CommandType.Text
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
           command3.Parameters.Add("@VAR13", str16)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
           command3.Parameters.Add("@VAR13", str16)
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
           command3.Parameters.Add("@VAR13", str16)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
           command3.Parameters.Add("@VAR13", str16)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           command3.Parameters.Add("@VAR10", str13)
           command3.Parameters.Add("@VAR11", str14)
           command3.Parameters.Add("@VAR13", str16)
       End If
       connection3.Open()
       command3.ExecuteNonQuery()
       connection3.Close()
       Dim connection4 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BD2.mdb")
       Dim str19 As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 1, 2)
       Dim str20 As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 4, 2)
       Dim str18 As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 7, 4)
       Me.vfecha = DateAndTime.Today
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           str24 = "select monto from acumula where cod+numero+mid(signo,1,4)=@vcod+@vnum+mid(@var03,1,4) and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           str24 = "select monto from acumula where cod+numero=@vcod+@vnum and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           str24 = "select monto from acumula where cod+mid(numero,1,3)+mid(signo,1,4)=@vcod+@vnum+mid(@var03,1,4)"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           str24 = "select monto from acumula where cod+numero=@vcod+@vnum and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           str24 = "select monto from acumula where cod+numero=@vcod+@vnum and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           str24 = "select monto from acumula where cod+numero=@vcod+@vnum and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           str24 = "select monto from acumula where cod+mid(numero,1,2)+mid(signo,1,4)=@vcod+@vnum+mid(@var03,1,4) and fecha=@vfecha"
       End If
       Dim command4 As New OleDbCommand(str24, connection4)
       command4.CommandType = CommandType.Text
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@var03", str16)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@var03", str16)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           command4.Parameters.Add("@vcod", str13)
           command4.Parameters.Add("@vnum", str14)
           command4.Parameters.Add("@var03", str16)
           command4.Parameters.Add("@vfecha", Me.vfecha)
       End If
       connection4.Open()
       command4.ExecuteNonQuery()
       Dim reader As OleDbDataReader = command4.ExecuteReader
       Dim expression As Double = 0
       Do While reader.Read
           expression = DoubleType.FromString(reader.Item(0).ToString)
       Loop
       connection4.Close()
       reader.Close()

       If (Conversion.Val(expression) > num5) Then
           Me.vent = StringType.FromDouble((Conversion.Val(expression) - num5))
       Else
           Me.vent = StringType.FromInteger(0)
       End If
       If (Conversion.Val(expression) = num5) Then
           Me.vent = StringType.FromDouble((Conversion.Val(expression) - num5))
       Else
           Me.vent = StringType.FromInteger(0)
       End If
       If (DoubleType.FromString(Me.vent) < 0) Then
           Me.vent = StringType.FromInteger(0)
       End If
       Me.vent = Strings.Trim(Me.vent)
       If (Strings.Len(Me.vent) = 1) Then
           str22 = ("0" & Me.vent & ".00")
       ElseIf (Strings.Len(Me.vent) = 2) Then
           If (StringType.StrCmp(Strings.Mid(Strings.Trim(Me.vent), 1, 1), ".", False) = 0) Then
               str22 = ("00" & Strings.Trim(Me.vent) & "0")
           Else
               str22 = (Strings.Trim(Me.vent) & ".00")
           End If
       ElseIf (Strings.Len(Me.vent) = 3) Then
           If (StringType.StrCmp(Strings.Mid(Me.vent, 1, 1), ".", False) = 0) Then
               str22 = ("00" & Strings.Trim(Me.vent))
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 2, 1), ".", False) = 0) Then
               str22 = String.Concat(New String() {"0", Strings.Mid(Strings.Trim(Me.vent), 1, 1), ".", Strings.Mid(Strings.Trim(Me.vent), 3, 1), "0"})
           Else
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 1) & "0")
           End If
       ElseIf (Strings.Len(Me.vent) = 4) Then
           If (StringType.StrCmp(Strings.Mid(Me.vent, 1, 1), ".", False) = 0) Then
               str22 = String.Concat(New String() {Strings.Mid(Strings.Trim(Me.vent), 2, 1), Strings.Mid(Strings.Trim(Me.vent), 3, 1), ".", Strings.Mid(Strings.Trim(Me.vent), 4, 1), "0"})
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 2, 1), ".", False) = 0) Then
               str22 = ("0" & Strings.Mid(Strings.Trim(Me.vent), 1, 1) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 2))
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 3, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 4, 1) & "0")
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 4, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 1) & "0")
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 5, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 2))
           Else
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 2))
           End If
       ElseIf (Strings.Len(Me.vent) = 5) Then
           If (StringType.StrCmp(Strings.Mid(Me.vent, 1, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 2, 1) & Strings.Mid(Strings.Trim(Me.vent), 3, 1) & "." & Strings.Mid(Strings.Trim(Me.vent), 4, 2))
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 2, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 1) & Strings.Mid(Strings.Trim(Me.vent), 3, 1) & "." & Strings.Mid(Strings.Trim(Me.vent), 4, 2))
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 3, 1), ".", False) = 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 4, 1) & Strings.Mid(Strings.Trim(Me.vent), 5, 1))
           ElseIf (StringType.StrCmp(Strings.Mid(Me.vent, 4, 1), ".", False) <> 0) Then
               str22 = (Strings.Mid(Strings.Trim(Me.vent), 1, 2) & "." & Strings.Mid(Strings.Trim(Me.vent), 3, 2))
           Else
               str22 = Strings.Trim(Me.vent)
           End If
       End If
       Dim str21 As String = ""
       str21 = str22
       str19 = Strings.Mid(StringType.FromDate(DateAndTime.Today), 1, 2)
       str20 = Strings.Mid(StringType.FromDate(DateAndTime.Today), 4, 2)
       str18 = Strings.Mid(StringType.FromDate(DateAndTime.Today), 7, 4)
       Me.vfecha = DateAndTime.Today
       Dim connection5 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BD2.mdb")
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           str25 = "update acumula set monto=@vmonto where cod+numero+mid(signo,1,4)=@var01+@var02+mid(@var03,1,4) and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           str25 = "update acumula set monto=@vmonto where cod+numero=@var01+@var02 and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           str25 = "update acumula set monto=@vmonto where cod+mid(numero,1,3)+mid(signo,1,9)=@var01+@var02+@var03 and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           str25 = "update acumula set monto=@vmonto where cod+numero=@var01+@var02 and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           str25 = "update acumula set monto=@vmonto where cod+numero=@var01+@var02 and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           str25 = "update acumula set monto=@vmonto where cod+numero=@var01+@var02 and fecha=@vfecha"
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           str25 = "update acumula set monto=@vmonto where cod+numero+mid(signo,1,9)=@var01+@var02+@var03 and fecha=@vfecha"
       End If
       Dim command5 As New OleDbCommand(str25, connection5)
       command5.CommandType = CommandType.Text
       If (Strings.Len(Strings.Trim(str3)) = &H1C) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@var01", str13)
           command5.Parameters.Add("@var02", str14)
           command5.Parameters.Add("@VAR03", str16)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1D) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@var01", str13)
           command5.Parameters.Add("@var02", str14)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = 30) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@VAR01", str13)
           command5.Parameters.Add("@VAR02", str14)
           command5.Parameters.Add("@VAR03", str16)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H1F) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@VAR01", str13)
           command5.Parameters.Add("@VAR02", str14)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H20) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@VAR01", str13)
           command5.Parameters.Add("@VAR02", str14)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H21) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@VAR01", str13)
           command5.Parameters.Add("@VAR02", str14)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       If (Strings.Len(Strings.Trim(str3)) = &H22) Then
           command5.Parameters.Add("@vmonto", str21)
           command5.Parameters.Add("@VAR01", str13)
           command5.Parameters.Add("@VAR02", str14)
           command5.Parameters.Add("@VAR03", str16)
           command5.Parameters.Add("@vfecha", Me.vfecha)
       End If
       connection5.Open()
       command5.ExecuteNonQuery()
       connection5.Close()
       str8 = ""
       num = (num + -1)
   Loop
   box = Nothing
   Dim str9 As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 1, 2)
   Dim str10 As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 4, 2)
   Dim str As String = Strings.Mid(StringType.FromDate(DateAndTime.Today), 7, 4)
   Me.vfecha = DateAndTime.Today
   Dim connection2 As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BD2.mdb")
   Dim number As Integer = 0
   Dim cmdText As String = "delete from acumula where monto=@vmonto2 and fecha=@vfecha"
   Dim command2 As New OleDbCommand(cmdText, connection2)
   command2.CommandType = CommandType.Text
   command2.Parameters.Add("@vmonto2", Conversion.Str(number))
   command2.Parameters.Add("@vfecha", Me.vfecha)
   connection2.Open()
   command2.ExecuteNonQuery()
   connection2.Close()
   Dim connection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=BD2.mdb")
   Dim str11 As String = "select nombre,numero,monto,cod,descrip from imprimir order by cod+numero"
   Dim command As New OleDbCommand(str11, connection)
   command.CommandType = CommandType.Text
   Try
       connection.Open()
       Dim reader2 As OleDbDataReader = command.ExecuteReader
       Me.pinnedArray = GCHandle.Alloc(Me.ListBoxTabs, GCHandleType.Pinned)
       Me.ptr = Me.pinnedArray.AddrOfPinnedObject
       Dim wParam As New IntPtr(Me.ListBoxTabs.Length)
       Me.result = Form1.SendMessage(Me._CheckedListBox2.Handle, &H192, wParam, Me.ptr)
       Me.pinnedArray.Free()
       Me._CheckedListBox2.Items.Clear()
       Dim str30 As String = ""
       Me.tem4 = 0
       Do While reader2.Read
           Dim str26 As String = reader2.Item(0).ToString
           Dim str27 As String = reader2.Item(1).ToString
           Dim str28 As String = reader2.Item(2).ToString
           Dim str29 As String = reader2.Item(3).ToString
           str30 = reader2.Item(4).ToString
           If (Strings.Len(str30) <> 0) Then
               str26 = Strings.Mid(str26, 1, 9)
           End If
           str30 = Strings.Mid(str30, 1, 9)
           If (Strings.Len(Strings.Trim(str27)) = 2) Then
               str27 = (Strings.LTrim(str27) & " ")
           Else
               str27 = Strings.LTrim(str27)
           End If
           Me.tem4 = (Me.tem4 + Conversion.Val(str28))
           Me._CheckedListBox2.Items.Add((String.Concat(New String() {str27, ChrW(9), str28, ChrW(9), str26, ChrW(9), str29}) & ChrW(9) & ChrW(9) & str30))
           If (Strings.Len(Strings.Trim(Me.tem2)) = 3) Then
               Me.ctr += 1
           Else
               Me.cte += 1
           End If
       Loop
       Me._TextBox2.Text = Me.tem4.ToString("N")
       Me._Label31.Text = Me.ctr.ToString
       Me._Label32.Text = Me.cte.ToString
       Me._Label30.Text = Me.tem4.ToString("N")
       Me.temp1 = ""
       Me._TextBox3.Focus()
       Me.Refresh()
       Me.ctr = 0
       Me.cte = 0
       str8 = ""
       connection.Close()
       reader2.Close()
   Catch exception1 As Exception
       ProjectData.SetProjectError(exception1)
       Dim exception As Exception = exception1
       Interaction.MsgBox("Error Al eliminar Numero", MsgBoxStyle.ApplicationModal, Nothing)
       ProjectData.ClearProjectError()
   Finally
       Me.temp1 = ""
   End Try
End Sub


Saludos!
#1816
Scripting / Re: MS-DOS y puerto serie
6 Agosto 2017, 12:39 PM
Cita de: Meta en  6 Agosto 2017, 09:06 AMQuiero enviar datos al puerto serie con el CMD de Windows

En teoría se supone que en Batch puedes usar los operadores de redirección para enviar datos a la entrada de un dispositivo en un puerto serie. Prueba así:

Script.cmd
Código (dos) [Seleccionar]
@Echo OFF & (CHCP 1252)1>Nul

MODE.com COM1 BAUD=9600 PARITY=n DATA=8 STOP=1

CHOICE.exe /C "12" /M "Choose an option..."
If %ErrorLevel% EQU 1 (
   Echo:Luz_ON>COM1
)
If %ErrorLevel% EQU 2 (
   Echo:Luz_OFF>COM1
)

Pause&Exit


...Y digo 'en teoría' por que nunca lo he necesitado probar ni tampoco puedo verificarlo ahora mismo.

Fuente:




Cita de: Meta en  6 Agosto 2017, 09:06 AMo el sustituto del cmd que es PowerShell

@Meta, sabes manejarte con C#, y dado que estos temas los has tratado muchas veces en el subforo de programación .NET doy por hecho que sabes hacerlo en C#. Entonces, en mi opinión lo que más te convendría hacer sería desarrollar la lógica/tu clase en C# para tener una solución mucho más robusta, controlada y eficiente, y simplemente usar PowerShell para compilar el código escrito en C# y usarlo.

Aquí te dejo un ejemplo a seguir:

Script.ps1
Código (csharp) [Seleccionar]
# PowerShell template by Elektro

# # # # # # # # # # # # # # # # # # # #
# C# CodeDom Provider Compiler Sample #
# # # # # # # # # # # # # # # # # # # #
$csharpCode = @'
using Microsoft.VisualBasic;
using System;

namespace CSharpNamespace {

   public sealed class CSharpClass {

       public static bool CSharpFunction() {
           return true;
       }

   }

}
'@
$csType = Add-Type -TypeDefinition $csharpCode `
                  -CodeDomProvider (New-Object Microsoft.CSharp.CSharpCodeProvider) `
                  -PassThru `
                  -ReferencedAssemblies "Microsoft.VisualBasic.dll", `
                                        "System.dll" `
          | where { $_.IsPublic }

[bool]$result = [CSharpNamespace.CSharpClass]::CSharpFunction()

# # # # # # # # # # # # # #
# Application Termination #
# # # # # # # # # # # # # #
[System.Console]::WriteLine("Press any key to exit...")
[System.Console]::ReadKey($true)
Exit(0)
#1817
Aquí tienes un ejemplo en Batch:
Cita de: http://foro.elhacker.net/scripting/batch_aporte_usb_mon_roba_usb-t372089.0.html;msg1787356#msg1787356

...Pero no vale la pena hacerlo en Batch ni tampoco en VBS. Si tu idea es no tener que depender de...herramientas externas, entonces existe otro lenguaje con soporte "nativo" en Windows llamado PowerShell, es el futuro en el scripting de Windows, además de poder utilizar la librería de clases de .NET Framework y compilar código/clases en VB.NET y C# que luego podremos utilizar desde el propio script.

Un ejemplo aleatorio de los resultados de Google de un script en PowerShell que realiza consultas directamente a las clases de WMI:

Y por último aquí te dejo otro ejemplo algo más avanzado que puedes adaptar a tus necesidades, en el que utilizo PowerShell para compilar un monitor de inserción y extracción de dispositivos que desarrollé en VB.NET:

USBMon.ps1
Código (vbnet) [Seleccionar]
$vbCode = @'
' ***********************************************************************
' Author   : Elektro
' Modified : 16-December-2016
' ***********************************************************************

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.IO
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Security
Imports System.Text
Imports System.Threading
Imports System.Windows.Forms

Namespace VBNamespace

#Region " Drive Watcher "

''' <summary>
''' A device insertion and removal monitor.
''' </summary>
Public Class DriveWatcher : Inherits NativeWindow : Implements IDisposable

#Region " Properties "

       ''' <summary>
       ''' Gets the connected drives on this computer.
       ''' </summary>
       Public Overridable ReadOnly Property Drives As IEnumerable(Of DriveInfo)
           <DebuggerStepThrough>
           Get
               Return DriveInfo.GetDrives
           End Get
       End Property

       ''' <summary>
       ''' Gets a value that determines whether the monitor is running.
       ''' </summary>
       Public Overridable ReadOnly Property IsRunning As Boolean
           <DebuggerStepThrough>
           Get
               Return Me.isRunningB
           End Get
       End Property
       Protected isRunningB As Boolean

       ''' <summary>
       ''' Gets the handle for the <see cref="NativeWindow"/> that owns this <see cref="DriveWatcher"/> instance.
       ''' </summary>
       ''' <value>
       ''' The handle.
       ''' </value>
       Public Overridable Shadows ReadOnly Property Handle As IntPtr
           Get
               Return MyBase.Handle
           End Get
       End Property

#End Region

#Region " Enumerations "

       ''' <summary>
       ''' Specifies a computer device type.
       ''' </summary>
       ''' <remarks>
       ''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363246%28v=vs.85%29.aspx"/>
       ''' </remarks>
       Private Enum DeviceType As Integer

           ' *****************************************************************************
           '                            WARNING!, NEED TO KNOW...
           '
           '  THIS ENUMERATION IS PARTIALLY DEFINED TO MEET THE PURPOSES OF THIS API
           ' *****************************************************************************

           ''' <summary>
           ''' Logical volume.
           ''' </summary>
           Logical = &H2

       End Enum

#End Region

#Region " Events "

       ''' <summary>
       ''' A list of event delegates.
       ''' </summary>
       Private ReadOnly events As EventHandlerList

       ''' <summary>
       ''' Occurs when a drive is inserted, removed, or changed.
       ''' </summary>
       Public Event DriveStatusChanged As EventHandler(Of DriveStatusChangedEventArgs)

#End Region

#Region " Event Invocators "

       ''' <summary>
       ''' Raises <see cref="DriveStatusChanged"/> event.
       ''' </summary>
       ''' <param name="e">
       ''' The <see cref="DriveStatusChangedEventArgs"/> instance containing the event data.
       ''' </param>
       <DebuggerStepThrough>
       Protected Overridable Sub OnDriveStatusChanged(ByVal e As DriveStatusChangedEventArgs)

           RaiseEvent DriveStatusChanged(Me, e)

       End Sub

#End Region

#Region " Constructors "

       ''' <summary>
       ''' Initializes a new instance of <see cref="DriveWatcher"/> class.
       ''' </summary>
       <DebuggerStepThrough>
       Public Sub New()
           Me.events = New EventHandlerList
       End Sub

#End Region

#Region " Public Methods "

       ''' <summary>
       ''' Starts monitoring.
       ''' </summary>
       <DebuggerStepThrough>
       Public Overridable Sub Start()

           If (Me.Handle = IntPtr.Zero) Then
               MyBase.CreateHandle(New CreateParams())
               Me.isRunningB = True

           Else
               Throw New Exception(message:="Monitor is already running.")

           End If

       End Sub

       ''' <summary>
       ''' Stops monitoring.
       ''' </summary>
       <DebuggerStepThrough>
       Public Overridable Sub [Stop]()

           If (Me.Handle <> IntPtr.Zero) Then
               Me.isRunningB = False
               MyBase.DestroyHandle()

           Else
               Throw New Exception(message:="Monitor is already stopped.")

           End If

       End Sub

#End Region

#Region " Private Methods "

       ''' <summary>
       ''' Gets the drive letter stored in a <see cref="DevBroadcastVolume"/> structure.
       ''' </summary>
       ''' <param name="device">
       ''' The <see cref="DevBroadcastVolume"/> structure containing the device mask.
       ''' </param>
       ''' <returns>
       ''' The drive letter.
       ''' </returns>
       <DebuggerStepThrough>
       Protected Overridable Function GetDriveLetter(ByVal device As DevBroadcastVolume) As Char

           Dim driveLetters As Char() = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()

           Dim deviceID As New BitArray(BitConverter.GetBytes(device.Mask))

           For i As Integer = 0 To deviceID.Length

               If deviceID(i) Then
                   Return driveLetters(i)
               End If

           Next i

           Return Nothing

       End Function

#End Region

#Region " Window Procedure (WndProc) "

       ''' <summary>
       ''' Invokes the default window procedure associated with this window to process windows messages.
       ''' </summary>
       <DebuggerStepThrough>
       Protected Overrides Sub WndProc(ByRef m As Message)

           Select Case m.Msg

               Case DeviceEvents.Change ' The hardware has changed.

                   If (m.LParam = IntPtr.Zero) Then
                       Exit Select
                   End If

                   ' If it's an storage device then...
                   If Marshal.ReadInt32(m.LParam, 4) = DeviceType.Logical Then

                       ' Transform the LParam pointer into the data structure.
                       Dim currentWDrive As DevBroadcastVolume =
                           DirectCast(Marshal.PtrToStructure(m.LParam, GetType(DevBroadcastVolume)), DevBroadcastVolume)

                       Dim driveLetter As Char = Me.GetDriveLetter(currentWDrive)
                       Dim deviceEvent As DeviceEvents = DirectCast(m.WParam.ToInt32, DeviceEvents)
                       Dim driveInfo As New DriveInfo(driveLetter)

                       Me.OnDriveStatusChanged(New DriveStatusChangedEventArgs(deviceEvent, driveInfo))

                   End If

           End Select

           ' Return Message to base message handler.
           MyBase.WndProc(m)

       End Sub

#End Region

#Region " IDisposable Implementation "

       ''' <summary>
       ''' Flag to detect redundant calls when disposing.
       ''' </summary>
       Private isDisposed As Boolean

       ''' <summary>
       ''' Releases all the resources used by this instance.
       ''' </summary>
       <DebuggerStepThrough>
       Public Sub Dispose() Implements IDisposable.Dispose
           Me.Dispose(isDisposing:=True)
           GC.SuppressFinalize(obj:=Me)
       End Sub

       ''' <summary>
       ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
       ''' Releases unmanaged and, optionally, managed resources.
       ''' </summary>
       <DebuggerStepThrough>
       Protected Overridable Sub Dispose(ByVal isDisposing As Boolean)

           If (Not Me.isDisposed) AndAlso (isDisposing) Then
               Me.events.Dispose()
               If Me.isRunningB Then
                   Me.Stop()
               End If
           End If

           Me.isDisposed = True

       End Sub

#End Region

   End Class

#End Region

#Region " DriveStatusChanged EventArgs "

   ''' <summary>
   ''' Contains the event-data of a <see cref="DriveWatcher.DriveStatusChanged"/> event.
   ''' </summary>
   Public NotInheritable Class DriveStatusChangedEventArgs : Inherits System.EventArgs

#Region " Properties "

   ''' <summary>
   ''' Gets the device event that occurred.
   ''' </summary>
   Public ReadOnly Property DeviceEvent As DeviceEvents
       Get
           Return Me.deviceEventB
       End Get
   End Property
   Private ReadOnly deviceEventB As DeviceEvents

   ''' <summary>
   ''' Gets the drive info.
   ''' </summary>
   Public ReadOnly Property DriveInfo As DriveInfo
       Get
           Return Me.driveInfoB
       End Get
   End Property
   Private ReadOnly driveInfoB As DriveInfo

#End Region

#Region " Constructors "

   <DebuggerNonUserCode>
   Private Sub New()
   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="DriveStatusChangedEventArgs"/> class.
   ''' </summary>
   <DebuggerStepThrough>
   Public Sub New(ByVal deviceEvent As DeviceEvents, ByVal driveInfo As DriveInfo)
       Me.deviceEventB = deviceEvent
       Me.driveInfoB = driveInfo
   End Sub

#End Region

   End Class

#End Region

#Region " Device Events "


''' <summary>
''' Specifies a change to the hardware configuration of a device.
''' </summary>
''' <remarks>
''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363480%28v=vs.85%29.aspx"/>
''' <para></para>
''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363232%28v=vs.85%29.aspx"/>
''' </remarks>
Public Enum DeviceEvents As Integer

       ' *****************************************************************************
       '                            WARNING!, NEED TO KNOW...
       '
       '  THIS ENUMERATION IS PARTIALLY DEFINED TO MEET THE PURPOSES OF THIS API
       ' *****************************************************************************

       ''' <summary>
       ''' The current configuration has changed, due to a dock or undock.
       ''' </summary>
       Change = &H219

       ''' <summary>
       ''' A device or piece of media has been inserted and becomes available.
       ''' </summary>
       Arrival = &H8000

       ''' <summary>
       ''' Request permission to remove a device or piece of media.
       ''' <para></para>
       ''' This message is the last chance for applications and drivers to prepare for this removal.
       ''' However, any application can deny this request and cancel the operation.
       ''' </summary>
       QueryRemove = &H8001

       ''' <summary>
       ''' A request to remove a device or piece of media has been canceled.
       ''' </summary>
       QueryRemoveFailed = &H8002

       ''' <summary>
       ''' A device or piece of media is being removed and is no longer available for use.
       ''' </summary>
       RemovePending = &H8003

       ''' <summary>
       ''' A device or piece of media has been removed.
       ''' </summary>
       RemoveComplete = &H8004

   End Enum

#End Region

#Region " DevBroadcast Volume "

   ''' <summary>
   ''' Contains information about a logical volume.
   ''' </summary>
   ''' <remarks>
   ''' <see href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa363249%28v=vs.85%29.aspx"/>
   ''' </remarks>
   <DebuggerStepThrough>
   <StructLayout(LayoutKind.Sequential)>
   Public Structure DevBroadcastVolume

       ''' <summary>
       ''' The size of this structure, in bytes.
       ''' </summary>
       Public Size As UInteger

       ''' <summary>
       ''' Set to DBT_DEVTYP_VOLUME (2).
       ''' </summary>
       Public Type As UInteger

       ''' <summary>
       ''' Reserved parameter; do not use this.
       ''' </summary>
       Public Reserved As UInteger

       ''' <summary>
       ''' The logical unit mask identifying one or more logical units.
       ''' Each bit in the mask corresponds to one logical drive.
       ''' Bit 0 represents drive A, bit 1 represents drive B, and so on.
       ''' </summary>
       Public Mask As UInteger

       ''' <summary>
       ''' This parameter can be one of the following values:
       ''' '0x0001': Change affects media in drive. If not set, change affects physical device or drive.
       ''' '0x0002': Indicated logical volume is a network volume.
       ''' </summary>
       Public Flags As UShort

   End Structure

#End Region

Public NotInheritable Class VBClass

   Friend WithEvents DriveMon As DriveWatcher
   Private waitHandle As ManualResetEvent

   Public Sub New()
       Me.DriveMon = New DriveWatcher()
       Me.waitHandle = New ManualResetEvent(initialState:=False)
   End Sub

   Public Sub StartMon()
       Me.DriveMon.Start()
       Me.waitHandle.WaitOne()
   End Sub

   Public Sub StopMon()
       Me.DriveMon.Stop()
       Me.waitHandle.Set()
   End Sub

   ''' <summary>
   ''' Handles the <see cref="DriveWatcher.DriveStatusChanged"/> event of the <see cref="DriveMon"/> instance.
   ''' </summary>
   Private Sub DriveMon_DriveStatusChanged(sender As Object, e As DriveStatusChangedEventArgs) _
   Handles DriveMon.DriveStatusChanged

       Select Case e.DeviceEvent

           Case DeviceEvents.Arrival
               ' Descartar cualquier dispositivo no extraible.
               If (e.DriveInfo.DriveType <> DriveType.Removable) Then
                   Exit Sub
               End If
               Dim sb As New StringBuilder
               With sb
                   .AppendLine("New drive connected...'")
                   .AppendLine(String.Format("Type......: {0}", e.DriveInfo.DriveType.ToString()))
                   .AppendLine(String.Format("Label.....: {0}", e.DriveInfo.VolumeLabel))
                   .AppendLine(String.Format("Name......: {0}", e.DriveInfo.Name))
                   .AppendLine(String.Format("Root......: {0}", e.DriveInfo.RootDirectory))
                   .AppendLine(String.Format("FileSystem: {0}", e.DriveInfo.DriveFormat))
                   .AppendLine(String.Format("Size......: {0} GB", (e.DriveInfo.TotalSize / (1024 ^ 3)).ToString("n1")))
                   .AppendLine(String.Format("Free space: {0} GB", (e.DriveInfo.AvailableFreeSpace / (1024 ^ 3)).ToString("n1")))
               End With
               Console.WriteLine(sb.ToString())

           Case DeviceEvents.RemoveComplete
               Dim sb As New StringBuilder
               With sb
                   .AppendLine("Drive disconnected...'")
                   .AppendLine(String.Format("Name: {0}", e.DriveInfo.Name))
                   .AppendLine(String.Format("Root: {0}", e.DriveInfo.RootDirectory))
               End With
               Console.WriteLine(sb.ToString())

       End Select

   End Sub

End Class

End Namespace
'@
$vbType = Add-Type -TypeDefinition $vbCode `
                  -CodeDomProvider (New-Object Microsoft.VisualBasic.VBCodeProvider) `
                  -PassThru `
                  -ReferencedAssemblies "Microsoft.VisualBasic.dll", `
                                        "System.dll", `
                                        "System.Collections.dll", `
                                        "System.ComponentModel.dll", `
                                        "System.IO.dll", `
                                        "System.Reflection.dll", `
                                        "System.Runtime.InteropServices.dll", `
                                        "System.Security.dll", `
                                        "System.Threading.dll", `
                                        "System.Windows.Forms.dll" | where { $_.IsPublic }

Write-Host "USB monitoring..."
$instance = (New-Object VBNamespace.VBClass)
$instance.StartMon()
Exit(0)


Resultado de ejecución:
#1818
Creo que sigues sin tener demasiado claro cual es el problema. Lee aquí:


Cita de: San GoogleIndentación es un anglicismo de uso común en informática, que significa mover un bloque de texto hacia la derecha insertando espacios o tabuladores, para así separarlo del margen izquierdo y mejor distinguirlo del texto adyacente

Python es un lenguaje MUY estricto (antiproductivo en mi opinión) con la indentación. Tu instrucción no está indentada, por lo que no se reconocerá como una instrucción dentro del bloque del elif... y producirá un error de sintaxis.

Si quieres evitar ese tipo de problemas te sugiero utilizar cualquier IDE profesional para Python que tenga indentación automática.

Saludos.