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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 ... 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 [581] 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 ... 1236
5801  Programación / .NET (C#, VB.NET, ASP) / Re: Compilación C# - Estructuras Dinamicas en: 11 Febrero 2015, 15:55 pm
como realizo las modificaciones para ... permitir ingresar más datos a la pila

Sabiendo de antemano que dicho código en su estructura se encuentra limitado a insertar tres elementos en la pila.

¿Lo que quieres es limitar la inserción de elementos en la pila a un total de 3 elementos?, entonces:

Código
  1. Stack myStack = new Stack();
  2. int maxStackCount = 3;
  3.  
  4. ...
  5.  
  6. case 1:
  7.  if (mySatck.Count < maxStackCount) {
  8.    // Pedimos el valor a introducir
  9.  } else {
  10.    Console.WriteLine(string.Format("La pila no puede exceder más de {0} elementos.", maxStackCount));
  11.  }

EDITO: En el código que has mostrado no has acondicionado un 'case 5' para detener la inserción de datos en la pila, ¿a sido un descuido por tu parte, o necesitas ayuda con eso?.
EDITO 2: Además, si introduces una opción "erronea", tal y como tienes el búcle no va a permitir "intentarlo de nuevo" como se supone que especificas en un mensaje de la consola xD.

Traslada todas las instruccones del código que has msotrado para trabajarlo en un bloque distinto al punto de entrada de la aplicación, prueba así:

VB.Net
Código
  1. Imports System.Text
  2.  
  3. Module Module1
  4.  
  5.    Dim myStack As New Stack
  6.    Dim maxStackCount As Integer = 3
  7.  
  8.    Sub Main()
  9.        Choose()
  10.    End Sub
  11.  
  12.    Private Sub Choose()
  13.  
  14.        Dim userInput As Char
  15.        Dim userValue As Integer = 0
  16.  
  17.        Dim sb As New StringBuilder
  18.        sb.AppendLine("1- Push")
  19.        sb.AppendLine("2- Pop")
  20.        sb.AppendLine("3- Clear")
  21.        sb.AppendLine("4- Contains")
  22.        sb.AppendLine("5- Salir")
  23.        sb.AppendLine("Dame tu opcion")
  24.  
  25.        Do Until Not Enumerable.Range(0, 5).Contains(userValue)
  26.  
  27.            Console.WriteLine(sb.ToString)
  28.  
  29.            userInput = Console.ReadKey().KeyChar
  30.            Integer.TryParse(userInput, userValue)
  31.  
  32.            Select Case userValue
  33.  
  34.                Case 1
  35.                    If myStack.Count < maxStackCount Then
  36.                        ' Pedimos el valor a introducir
  37.                    Else
  38.                        Console.WriteLine(String.Format("La pila no puede exceder más de {0} elementos", maxStackCount))
  39.                    End If
  40.  
  41.                Case 2
  42.                    ' Obtnemos el elemento.
  43.  
  44.                Case 3
  45.                    ' Limpiamos todos los contenidos del stack.
  46.  
  47.                Case 4
  48.                    ' Pedimos el valor a encontrar.
  49.  
  50.                Case 5
  51.                    ' Salimos del búcle.
  52.                    Exit Do
  53.  
  54.                Case Else
  55.                    userValue = 0 ' Resetear el valor para no salir del bucle.
  56.                    Console.Clear()
  57.                    Console.WriteLine("No existe la opción, intente de nuevo")
  58.  
  59.            End Select
  60.  
  61.        Loop
  62.  
  63.        sb.Clear()
  64.  
  65.    End Sub
  66.  
  67. End Module

Traducción a C#:
Código
  1. using Microsoft.VisualBasic;
  2. using System;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Diagnostics;
  7. using System.Text;
  8.  
  9. static class Module1
  10. {
  11.  
  12. static Stack myStack = new Stack();
  13.  
  14. static int maxStackCount = 3;
  15.        static void Main(string[] args)
  16. {
  17. Interaction.Choose();
  18. }
  19.  
  20. private static void Choose()
  21. {
  22. char userInput = '\0';
  23. int userValue = 0;
  24.  
  25. StringBuilder sb = new StringBuilder();
  26. sb.AppendLine("1- Push");
  27. sb.AppendLine("2- Pop");
  28. sb.AppendLine("3- Clear");
  29. sb.AppendLine("4- Contains");
  30. sb.AppendLine("5- Salir");
  31. sb.AppendLine("Dame tu opcion");
  32.  
  33. while (!(!Enumerable.Range(0, 5).Contains(userValue))) {
  34. Console.WriteLine(sb.ToString);
  35.  
  36. userInput = Console.ReadKey().KeyChar;
  37. int.TryParse(userInput, userValue);
  38.  
  39. switch (userValue) {
  40.  
  41. case 1:
  42. if (myStack.Count < maxStackCount) {
  43. // Pedimos el valor a introducir
  44. } else {
  45. Console.WriteLine(string.Format("La pila no puede exceder más de {0} elementos", maxStackCount));
  46. }
  47. break;
  48.  
  49. case 2: // Obtnemos el elemento.
  50. break;
  51.  
  52. case 3: // Limpiamos todos los contenidos del stack.
  53. break;
  54.  
  55. case 4: // Pedimos el valor a encontrar.
  56. break;
  57.  
  58. case 5: // Salimos del búcle.
  59. userValue = -1;
  60. break;
  61.  
  62. default:
  63. userValue = 0; // Resetear el valor para no salir del bucle.
  64. Console.Clear();
  65. Console.WriteLine("No existe la opción, intente de nuevo");
  66. break;
  67. }
  68. }
  69. sb.Clear();
  70. }
  71. }
  72.  
  73. //=======================================================
  74. //Service provided by Telerik (www.telerik.com)
  75. //=======================================================

Saludos!
5802  Programación / .NET (C#, VB.NET, ASP) / Re: abrir desde la fila de un Datagridview en: 11 Febrero 2015, 15:28 pm
en tu código veo que en la parte de arriba del evento CellContentClick tienes un código que supongo yo es para llenar el datagridview (aun que lo estoy dudando, creo que es parde del codigo para que lo de abajo me funcione correctamente)

No te preocupes, era un simple relleno del DataGridView para mostrarte un código funcional.


las tres palabras que subraye dentro del evento CellContentClick me marcan error bro, porfa ayudame  

Debes seguir las normas del foro para utilizar las etiquetas al insertar código.

Puedes utilizar los parámetros de las etiquetas para resaltar lineas del código como puedes ver en tu comentario que he editado arriba, o puedes especificar exactamente los nombres.

Dicho esto, si el compiler te está indicando un error y además te está mostrando la causa del error y la información adicional sobre el mismo, ¿porque no muestras la información sobre el error?, no soy adivino.

De todas formas, por los nombres que subrayaste, deduzco que seguramente los errores sean porque no hayas importado los namespaces necesarios.
Código
  1. Using System.IO; // File
  2. Using System.Diagnostics; // Process
  3. Using System.Windows.Forms; // DataGridView.Rows

...Pero es que como ya he explicado puedes comprobar la causa de esos errores sin necesidad de ayuda, muestra la info del error si necesitas ayuda para solucionarlos en caso de que el error no sea por la ausencia de los namespaces.

Saludos!
5803  Programación / .NET (C#, VB.NET, ASP) / Re: ¿Cómo se haría? Proxy grabber [C#] en: 11 Febrero 2015, 14:59 pm
Código
  1. </style><span class="VUaZ">212</span><span style="display: inline">.</span><span style="display: inline">12</span><span class="KPFX">67</span><div style="display:none">67</div><span style="display:none">170</span><span class="KPFX">189</span><span></span><span style="display:none">199</span><span class="KPFX">199</span><span></span><span class="KPFX">223</span><div style="display:none">223</div><span class="218">.</span><span class="64">12</span><span style="display:none">77</span><span class="KPFX">77</span><div style="display:none">77</div><span></span><span style="display:none">126</span><div style="display:none">126</div><span class="KPFX">165</span><div style="display:none">165</div><span style="display:none">193</span><span class="KPFX">193</span><span></span><span style="display:none">243</span><span class="KPFX">243</span><span></span><span style="display: inline">.</span><span class="217">163</span></span>

El código de arriba contiene la IP '212.12.12.163' separada en varios segmentos que utilizan nombres al azahar para mostrar los números (y los puntos delimitadores, por separado), a veces son nombres alfabéticos y otras veces numéricos, y la misma técnica de aletoriedad se puede apreciar que se utiliza para añadir otra información irrelevante (para despistar y así dificultar o imposibilitar la ingeniería inversa, me imagino), aparte de los campos <div style="display:none"> que siempre son basura.

Es el código fuente más tedioso que he visto para hacerle web-scrapping, aunque por otro lado, lo mio no es la programación a nivel web como para poder analizar la situación a la perfección.

Mi opinión tras un vistazo rápido es que ni merece la pena intentar desarrollar el algoritmo de filtración de datos (¿he mencionado ya que los nombres son al azahar?), prueba con otra página, hay miles de servicios de proxylist gratuitos (y mejores que ese).

Saludos!
5804  Programación / .NET (C#, VB.NET, ASP) / Re: Referencia a objeto no definida como instancia de un objeto - [C#] en: 11 Febrero 2015, 14:39 pm
Código
  1.        {
  2.        ...
  3.            element newElement = new element();
  4.        ...
  5.            database.element.Add(newElement); //<------ERROR AQUI
  6.        }

Edit: He probado a meter una linea asi
Código
  1. if (newElement == null)
  2.                MessageBox.Show("NUEVO ELEMENTO NULO");
para ver si el elemento que acabo de crear es nulo y nunca me salta asi que doy por hecho que tiene que ser algo relacionado con la base de datos o su instanciacion.

El 'MessageBox' nunca se muestra porque es imposible que el objeto 'newElement' sea nulo, ya que siempre estás inicializando el objeto al principio del bloque con el constructor.

Lo que tienes que hacer es inicializar la colección 'database.element' antes de intentar agregar un item a dicha colección, ya que al ser nula, te salta una excepción de referencia a objeto nulo, el error te está indicando que estás intentando utilizar un objeto que no ha sido inicializado, por ende, si no es el objeto  'newElement ', es la lista 'database.element' o también podría ser el objeto 'database', realiza la misma prueba del 'MessageBox' con ambos objetos.

Saludos!
5805  Programación / .NET (C#, VB.NET, ASP) / Re: Necesito tutorial de controles de VB.Net 2010 en PDF o blog en: 11 Febrero 2015, 14:22 pm
Hola, intentaré aclararte algunas cosas:

cuando busco por ejemplo como usar el control MonthTimer siempre me salen referéncias a Clases, es decir crear objetos Timer, y en muchos casos las propiedades de objetos no están disponibles en el control mismo.

1. No existe ningún control llamado "MonthTimer" en la librería de classes de .Net framework, el nombre del miembro más parecido es un 'Timer', quizás por eso solo te salen resultados sobre la class 'Timer', no es que te muestre resultados incorrectos o que no esté documentado, es que has buscado un miembro inexistente, ¿quizás quisiste decir/buscar un "Monthcalendar" o un 'DateTimePicker'?.

2. En esencia un Control es un conjunto de miembros (clases, propiedades, funciones, enumeraciones, estructuras, etc), ¿que tipo de documentación esperas encontrar en MSDN o en otro lugar?.



en muchos casos las propiedades de objetos no están disponibles en el control mismo.

Eso no es para nada cierto, lo que ocurre es que muchos miembros se llaman de la misma manera pero están ubicados en distintos namespaces, por ejemplo eso es lo que ocurre con la class Timer:
Código:
System.Timers.Timer
System.Threading.Timer
System.Windows.Forms.Timer

Cada class 'Timer' tiene un propósito diferente, unas propiedades diferentes, y cada class tiene su distinta documentación en la MSDN.

Aparte de eso, no todas las classes/controles pertenecen a la misma tecnología, por ejemplo la class TextBox de un WinForms no tiene los mismos miembros(propiedades) que la class TextBox de WPF:
Código:
System.Windows.Forms.TextBox
System.Windows.Controls.TextBox

Es normal que si no comprendes o no te fijas en los detalles importantes no le encuentres lógica a que algunas propiedades no existan...
Asegúrate de leer el namespace en la documentación de MSDN para saber a que miembro se está refiriendo:




Citar
Además, en ocasiones me sale en inglés, según el caso.

Sin ánimo de entrar en debates sobre la programación, en mi opinión, un requisito fundamental es tener conocimientos del idioma universal, leer, comprender, y trabajar en Inglés, ya que todo con lo que estás utilizando es en Inglés empezando por la propia sintaxis del lenguaje, pero bueno, aun así los códigos en español y en chino siempre seguirán existiendo para el disgusto de todos :-/.

Bueno, dicho esto, vamos al lio, te explico, el 90% de la documentación de MSDN está traducida en varios idiomas, es cierto que no toda la documentación lo está, pero si te incomoda buscar documentación de MSDN en Google y que te salga una página en inglés, siempre puedes probar a modificar la región del idioma en la url:

Del inglés:
Código:
https://msdn.microsoft.com/en-us/library/system.windows.forms.timer%28v=vs.110%29.aspx

Al Castellano:
Código:
https://msdn.microsoft.com/es-es/library/system.windows.forms.timer%28v=vs.110%29.aspx


Citar
Otra cosa me fastidia es no encontrar ejemplos por ejemplo de como usar una determinada función API, tan sólo obtengo descripciones.

En ese aspecto te doy la razón, aparte de que muchas funciones están indocumentadas, MSDN no suele exponer ejemplos útiles para funciones avanzadas, y muchas veces con las descripciones del propósito de la función o de sus parámetros no es suficiente para entender el funcionamiento o el modo de emplear la función, la verdad es que si, tienes razón.

La mejor "base de datos" de ejemplos de utilización de la API de Windows en .Net que puedes encontrar es Pinvoke.net, que está incluida en la cita del post que publiqué arriba.

PD: Si tienes dudas específicas sobre el uso de alguna función de la WinAPi, siempre puedes preguntar aquí :)


Saludos!
5806  Programación / .NET (C#, VB.NET, ASP) / Re: Nesecito eliminar registros negativos y cero en: 11 Febrero 2015, 13:43 pm
Joder Luis... ¿no se te ha ocurrido añadir una condición más a la query de LINQ?:
Código:
...Where (Value <= max AndAlso Value > 0)

Código
  1. Dim values1 As IEnumerable(Of Integer) = {-2, -1, 0, 1, 2}
  2. Dim values2 As IEnumerable(Of Integer) = {-20, -10, 0, 10, 20}
  3. Dim max As Integer = 10
  4.  
  5. Dim result As IEnumerable(Of Integer) =
  6.    (From Value As Integer In (values1.Concat(values2)).Distinct
  7.     Where (Value <= max AndAlso Value > 0))
  8.  
  9. ListBox1.Items.AddRange(result.Cast(Of Object).ToArray)

PD ¿porque no aprendes en serio despues de tanto tiempo manejando VB.Net?, al menos lo básico ...como esto, saldrías de muchos apuros por ti mismo y eso te ayudaría a avanzar más rápido...

Saludos!
5807  Programación / .NET (C#, VB.NET, ASP) / Re: convertir calendario gregoriano a gps en: 11 Febrero 2015, 13:33 pm
Vaya, recuerdo que estabas haciendo esa tarea en VBS y te ayudé a resolver el algoritmo y otras dudas que tenias, me alegra saber que has trasladado el trabajo a un lenguaje más óptimo como Vb.Net :)



Hay varias cosas muy incorrectas en el código que has mostrado.


1)
El segundo parámetro de la función "Enumerable.Range" es un contador, no es el final del rango inicial.

Por lo tanto, en esta instrucción estás generando 1825 valores innecesarios, empezando desde el valor 1772 y acabando en el valor 3596:
Citar
Código
  1. Enumerable.Range(1773 - 1, 1825)

Cuando lo que deberías crear es un rango de 53 valores correspondientes a los 53 valores de las semanas GPS de ese año, de esta manera:
Código
  1. Enumerable.Range(1773 - 1, 53)


2)
Los indices en .Net empiezan por 0, no es correcto empezar por 1
Citar
Código
  1.        For Day As Integer = 1 To DaysInThisYear
  2.           Result.Add(Day, GPSWeeks(DatePart(DateInterval.WeekOfYear,
  3.                                             New DateTime(ThisYear, 1, 1).AddDays(Day - 1))))
  4.       Next Day

Déjalo así:
Código
  1.        For day As Integer = 0 To (totalDaysInYear - 1)
  2.            result.Add(day, gpsWeeks(DatePart(DateInterval.WeekOfYear,
  3.                                              New DateTime(year, 1, 1).AddDays(day))))
  4.        Next day
  5.  


3)
A la función "JulianDate" le das demasiadas vueltas utilizando wrappers de vb6, cuando puedes simplificarlo de esta manera:
Código
  1.    Public Function JulianDate(ByVal [date] As Date) As Integer
  2.  
  3.        Return [date].Subtract(New Date([date].Year, 1, 1)).Days + 1
  4.  
  5.    End Function


4)
Las variables Día, Més, y Año (que por cierto, no deberías utilizar caracteres especiales en el nombramiento de las variables), yo las adaptaría en propiedades para añadirle mayor movilidad, y control de errores:
Código
  1.    Friend ReadOnly Property GPSDictionary(ByVal datePicker As DateTimePicker) As Dictionary(Of Integer, Integer)
  2.        Get
  3.            If datePicker IsNot Nothing Then
  4.                Return Me.GetGPSDictionary(datePicker)
  5.            Else
  6.                Throw New ArgumentNullException("datePicker")
  7.                Return Nothing
  8.            End If
  9.        End Get
  10.    End Property
  11.  
  12.    Friend ReadOnly Property Day(ByVal datePicker As DateTimePicker) As Integer
  13.        Get
  14.            If datePicker IsNot Nothing Then
  15.                Return datePicker.Value.Day
  16.            Else
  17.                Throw New ArgumentNullException("datePicker")
  18.                Return -1
  19.            End If
  20.        End Get
  21.    End Property
  22.  
  23.    Friend ReadOnly Property Month(ByVal datePicker As DateTimePicker) As Integer
  24.        Get
  25.            If datePicker IsNot Nothing Then
  26.                Return datePicker.Value.Month
  27.            Else
  28.                Throw New ArgumentNullException("datePicker")
  29.                Return -1
  30.            End If
  31.        End Get
  32.    End Property
  33.  
  34.    Friend ReadOnly Property Year(ByVal datePicker As DateTimePicker) As Integer
  35.        Get
  36.            If datePicker IsNot Nothing Then
  37.                Return datePicker.Value.Year
  38.            Else
  39.                Throw New ArgumentNullException("datePicker")
  40.                Return -1
  41.            End If
  42.        End Get
  43.    End Property


5)
El event-handler "DateTimePicker1_ValueChanged" quedaría así:
Código
  1.    Private Sub DateTimePicker1_ValueChanged(ByVal sender As Object, ByVal e As EventArgs) _
  2.    Handles DateTimePicker1.ValueChanged
  3.  
  4.        Me.txtday.Text = CStr(Me.JulianDate(DirectCast(sender, DateTimePicker).Value))
  5.  
  6.    End Sub



Respondiendo a tu pregunta principal, puedes hacer que la función pida una fecha como parámetro, para poder trabajar con el año de la fecha, y así puedes asignar el rango equivalente al año específico:

Código
  1.    Private Function GetGPSDictionary(ByVal datePicker As DateTimePicker) As IDictionary(Of Integer, Integer)
  2.  
  3.        Dim year As Integer = Me.Year(datePicker)
  4.        Dim totalDaysInYear As Integer = New Date(year, 1, 1).AddYears(1).Subtract(New Date(year, 1, 1)).Days
  5.        Dim gpsWeeks As IEnumerable(Of Integer)
  6.        Dim result As IDictionary(Of Integer, Integer)
  7.  
  8.        Select Case year
  9.  
  10.            Case 2014
  11.                gpsWeeks = Enumerable.Range(1773 - 1, 53)
  12.  
  13.            Case 2015
  14.                gpsWeeks = Enumerable.Range(1825 - 1, 53)
  15.  
  16.            Case 2016
  17.                gpsWeeks = Enumerable.Range(1877 - 1, 53)
  18.  
  19.            Case Else ' Año desconocido, lanzar excepción.
  20.                Throw New NotImplementedException("En este ejemplo no se ha implementado el calendario GPS para el año especificado.")
  21.  
  22.        End Select
  23.  
  24.        result = New Dictionary(Of Integer, Integer)
  25.        For day As Integer = 0 To (totalDaysInYear - 1)
  26.            result.Add(day, gpsWeeks(DatePart(DateInterval.WeekOfYear,
  27.                                              New DateTime(year, 1, 1).AddDays(day))))
  28.        Next day
  29.  
  30.        Return result
  31.  
  32.    End Function

De todas formas, quizás podrías automatizar la tarea ya que en un principio y por lo que he visto cada rango parece constar de 53 valores correspondientes a las 53 semanas del calendario GPS en un año con 365 dias, así que yo habia pensado en algo así, el problema es que no da el resultado que debería dar (1820 en vez de 1825) pero si incremento el startingYear a 2010 y el startingGPSWeek al 1564 de ese año 2010 si que da el resultado esperado, así que algún detalle estoy omitiendo respecto a los calendarios y los días en los años, pero te dejo la idea por si quieres perfeccionarla:

Código
  1.        Dim startingYear As Integer = 1994
  2.        Dim startingGPSWeek As Integer = 723
  3.  
  4.        Dim a As Integer
  5.        For x As Integer = startingYear To (year - 1)
  6.  
  7.            Select Case New Date(x, 1, 1).AddYears(1).Subtract(New Date(x, 1, 1)).Days
  8.  
  9.                Case 365 ' days in year
  10.                    startingGPSWeek += 52
  11.  
  12.                Case 366 ' days in year
  13.                    startingGPSWeek += 53
  14.  
  15.            End Select
  16.  
  17.        Next
  18.  
  19.        MsgBox(startingGPSWeek)
  20.    ...
  21.            gpsWeeks = Enumerable.Range(startingGPSWeek - 1, 53) ' ajustar el 53 al numero real de semanas GPS
  22.    ...
  23.  

EDITO: Por supuesto cabe mencionar que otra alternativa sería obtener el código fuente de la página del año en cuestión y parsearlo, pero me resulta innecesario.



Bueno, te dejo el código completo con las modificaciones que mencioné, no estoy seguro de haber comprobado correctamente que todos los días devuelvan el valor esperado:

Código
  1. Public Class TestForm
  2.  
  3. #Region " Properties "
  4.  
  5.    ''' <summary>
  6.    ''' Gets the GPS dictionary according to the specified <see cref="DateTimePicker"/> current year.
  7.    ''' </summary>
  8.    Friend ReadOnly Property GPSDictionary(ByVal datePicker As DateTimePicker) As IDictionary(Of Integer, Integer)
  9.        Get
  10.            If datePicker IsNot Nothing Then
  11.                Return Me.GetGPSDictionary(datePicker)
  12.            Else
  13.                Throw New ArgumentNullException("datePicker")
  14.                Return Nothing
  15.            End If
  16.        End Get
  17.    End Property
  18.  
  19.    ''' <summary>
  20.    ''' Gets the day of the specified <see cref="DateTimePicker"/>.
  21.    ''' </summary>
  22.    ''' <value>The year.</value>
  23.    ''' <exception cref="System.ArgumentNullException">datePicker</exception>
  24.    Friend ReadOnly Property Day(ByVal datePicker As DateTimePicker) As Integer
  25.        Get
  26.            If datePicker IsNot Nothing Then
  27.                Return datePicker.Value.Day
  28.            Else
  29.                Throw New ArgumentNullException("datePicker")
  30.                Return -1
  31.            End If
  32.        End Get
  33.    End Property
  34.  
  35.    ''' <summary>
  36.    ''' Gets the month of the specified <see cref="DateTimePicker"/>.
  37.    ''' </summary>
  38.    ''' <value>The year.</value>
  39.    ''' <exception cref="System.ArgumentNullException">datePicker</exception>
  40.    Friend ReadOnly Property Month(ByVal datePicker As DateTimePicker) As Integer
  41.        Get
  42.            If datePicker IsNot Nothing Then
  43.                Return datePicker.Value.Month
  44.            Else
  45.                Throw New ArgumentNullException("datePicker")
  46.                Return -1
  47.            End If
  48.        End Get
  49.    End Property
  50.  
  51.    ''' <summary>
  52.    ''' Gets the year of the specified <see cref="DateTimePicker"/>.
  53.    ''' </summary>
  54.    ''' <value>The year.</value>
  55.    ''' <exception cref="System.ArgumentNullException">datePicker</exception>
  56.    Friend ReadOnly Property Year(ByVal datePicker As DateTimePicker) As Integer
  57.        Get
  58.            If datePicker IsNot Nothing Then
  59.                Return datePicker.Value.Year
  60.            Else
  61.                Throw New ArgumentNullException("datePicker")
  62.                Return -1
  63.            End If
  64.        End Get
  65.    End Property
  66.  
  67. #End Region
  68.  
  69. #Region " Event-Handlers "
  70.  
  71.    ''' <summary>
  72.    ''' Handles the ValueChanged event of the DateTimePicker1 control.
  73.    ''' </summary>
  74.    ''' <param name="sender">The source of the event.</param>
  75.    ''' <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
  76.    Private Sub DateTimePicker1_ValueChanged(ByVal sender As Object, ByVal e As EventArgs) _
  77.    Handles DateTimePicker1.ValueChanged
  78.  
  79.        Dim datePicker As DateTimePicker = DirectCast(sender, DateTimePicker)
  80.  
  81.        Me.txtday.Text = CStr(Me.JulianDate(datePicker.Value))
  82.  
  83.        'Try
  84.        '    ' MsgBox(GPSDictionary(datePicker)(1))
  85.        '    MsgBox(GPSDictionary(datePicker)(3))
  86.  
  87.        'Catch ex As Exception
  88.        '    MsgBox(ex.Message)
  89.        'End Try
  90.  
  91.    End Sub
  92.  
  93. #End Region
  94.  
  95. #Region " Misc. Date Functions "
  96.  
  97.    ''' <summary>
  98.    ''' Converts a date to the first day's date of the specified <see cref="Date"/> instance,
  99.    ''' and returns the substracted date difference, in days.
  100.    ''' Eg. 28/02/2015 > 01/01/2015 = 31 days in Jan + 28 days in Feb = 59 days
  101.    ''' </summary>
  102.    ''' <param name="date">The <see cref="Date"/> instance.</param>
  103.    ''' <returns>The substracted date difference, in days.</returns>
  104.    Public Function JulianDate(ByVal [date] As Date) As Integer
  105.  
  106.        ' Set the passed date to: 01/01/YYYY (day/month/year)
  107.        Dim dateFirstDay As New Date([date].Year, 1, 1)
  108.  
  109.        ' Return the substracted date difference.
  110.        Return [date].Subtract(dateFirstDay).Days + 1
  111.  
  112.    End Function
  113.  
  114.    ''' <summary>
  115.    ''' Gets the GPS dictionary.
  116.    ''' </summary>
  117.    ''' <param name="datePicker">The <see cref="DateTimePicker"/> instance.</param>
  118.    ''' <returns>IDictionary(Of System.Int32, System.Int32).</returns>
  119.    ''' <exception cref="System.NotImplementedException">
  120.    ''' En este ejemplo no se ha implementado el calendario GPS para el año especificado.
  121.    ''' </exception>
  122.    Private Function GetGPSDictionary(ByVal datePicker As DateTimePicker) As IDictionary(Of Integer, Integer)
  123.  
  124.        Dim year As Integer = Me.Year(datePicker)
  125.        Dim totalDaysInYear As Integer = New Date(year, 1, 1).AddYears(1).Subtract(New Date(year, 1, 1)).Days
  126.        Dim gpsWeeks As IEnumerable(Of Integer)
  127.        Dim result As IDictionary(Of Integer, Integer)
  128.  
  129.        Select Case year
  130.  
  131.            Case 2014
  132.                gpsWeeks = Enumerable.Range(1773 - 1, 53)
  133.  
  134.            Case 2015
  135.                gpsWeeks = Enumerable.Range(1825 - 1, 53)
  136.  
  137.            Case 2016
  138.                gpsWeeks = Enumerable.Range(1877 - 1, 53)
  139.  
  140.            Case Else ' Año desconocido, lanzar excepción.
  141.                Throw New NotImplementedException("En este ejemplo no se ha implementado el calendario GPS para el año especificado.")
  142.  
  143.        End Select
  144.  
  145.        result = New Dictionary(Of Integer, Integer)
  146.        For day As Integer = 0 To (totalDaysInYear - 1)
  147.            result.Add(day, gpsWeeks(DatePart(DateInterval.WeekOfYear,
  148.                                              New DateTime(year, 1, 1).AddDays(day))))
  149.        Next day
  150.  
  151.        Return result
  152.  
  153.    End Function
  154.  
  155. #End Region
  156.  
  157. End Class

Saludos
5808  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Les gusta este header? en: 11 Febrero 2015, 10:19 am
Bueno, recopilación de logos:


(Hacer click para ver en tamaño original)

El logo del post principal, con la textura de hexágonos, ¡es muy bonita!, aunque no me convence mucho ese tipo de fondos con el logo de elhacker.net, son más un banner que un logo.

Y digo yo, @Nac-ho, ¿por que en lugar de re-estilizar el logo actual, no lo reinventas?,
el "shuriken" ya está demasiado visto, no digo que sea feo porque estaría mintiendo, es un logo genial, pero lo suyo sería proponer nuevas ideas para el logo actual, ¿no creen ustedes?.

Sugerencia para el Staff: ¿No estaría bien hacer un consurso de nuevos diseños para el logo de elhacker.net?

Saludos!
5809  Programación / Scripting / Re: Donde aprender python? en: 11 Febrero 2015, 10:05 am
Opino lo mismo que el compañero @Engel Lex, pero también cabe mencionar que Python 3.X se lleva desarrollando desde el año 2008, no es que se vayan a encontrar releases de betas inestables o prematuras... la expansión de py3 es grande en varios entornos profesionales hoy en día, se puede utilizar sin miedo, aunque como ya ha dicho @engel, pueden contener ciertos bugs, pero los cuales serán corregidos en nuevas releases.

Saludos!
5810  Programación / Scripting / Re: VBScript Funcion SaveAs arroja error en: 11 Febrero 2015, 09:54 am
"No se puede tener acceso al archivo"

Código
  1. Const xlNormal = -4143
  2. filename = objFile.GetFileName(oFile)
  3. IF objFile.FileExists(deletefile) Then
  4. objFile.DeleteFile(deletefile)
  5. objRawData.SaveAS "d:\Script\Outbox\" & filename & ".xls"&, xlNormal
  6. ELSE
  7. objRawData.SaveAs  "d:\Script\Outbox\" & filename & ".xls"&, xlNormal
  8. objRawData.Close SaveChanges=True
  9.  
  10. END IF
  11.  

VBS, a diferencia de VBA, no soporta parámetros nombrados (named parameters) y seguramente sea esa la instrucción que te está lanzando un error, no al método SaveAs como piensas, ya que según la documentación oficial de Microsoft, y aunque no puedo evaluar la sintaxis porque desconozco que valor le das a la variable "filename" o si el directorio que utilizas existe, estás utilizando la parametización correcta para el método SaveAs:
Fuente: Workbook.SaveAs Method (Excel)

Como ya he explicado, no te va a funcionar tal y como lo estás escribiendo, ya que VBS no soporta esa sintaxis,
Si quieres guardar los cambios en el archivo al liberar el objeto, en VBS, simplemente omite el nombre del parámetro al llamar al método close:
Código:
objRawData.Close True

El resto del script parece estar bien a simple vista, aunque como ya he comentado hay ciertos detalles que no puedo evaluar sin conocer la información necesaria.

Aparte del error de sintaxis que estás cometiendo, quizás tambien te pudiera dar problemas la enumeración del formato especifico de archivo que estás utilizando (-4143=xlWorkbookNormal), si sigues teniendo problemas despues de la corrección que he mencionado, prueba a utilizar el valor 51 de la enumeración (xlWorkbookDefault).
Fuente: XlFileFormat Enumeration (Excel)

Saludos
Páginas: 1 ... 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 [581] 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines