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

#4431
Scripting / Re: como Crea un programa en Python 3.4
28 Septiembre 2015, 10:33 AM
Cita de: drummersss en 28 Septiembre 2015, 07:43 AMCree un programa en Python 3.4 que le solicite al usuario...

Aquí no se entregan trabajos para eso ya tienes freelance.com, este es un foro de aprendizaje, inténtalo por ti mismo, luego comparte el código y te diré(mos) donde fallaste o cómo avanzar.

Si tienes dudas sobre cómo empezar, entonces formula una duda sobre orientación, no pidiendo que te hagan un script.

Saludos
#4432
Productos profesionales, de pago, yo te recomiendo Araxis Merge, seguido de UltraCompare.






Si quieres algo mucho más simple, y gratuito, pues WinMerge, o WinDiff de Microsoft.





Saludos
#4434
Cita de: engel lex en 27 Septiembre 2015, 04:49 AMprogramar? como mucho descargar de internet XD

Ahí le has dao xD. Por eso lo moví.

Lo triste es que usuarios de buena fe como @ivancea96 le preguntan sobre el tema para ayudarle en el supuesto desarrollo del RAT, y el otro tipo, FlowerTFP, hace como que si, tocar variables y tal...



En fin.

Saludos
#4435
Cita de: Lekim en 27 Septiembre 2015, 14:30 PM
He puesto Option Explicit On a principio de código pero no me muestra ningún fallo.

Pero no estás activando la opción de los casteos ni desactivando la inferencia de types, solamente activaste la declaración explícita de variables.

Código (vbnet) [Seleccionar]
Option Explicit On
' +
Option Strict On
Option Infer Off


Pruébalo de nuevo y verás de lo que te hablaba. :P

PD: Puedes activar por edefecto esas opciones para todos los proyectos/classes nuevos, en el menú Tools -> Options -> Projects and Solutions -> VB Defaults de Visual Studio.




Cita de: Lekim en 27 Septiembre 2015, 14:30 PMTambién he visto que usas Shown en lugar de Load, ¿Cuál es la diferencia?

El evento Form.Shown se dispara cuando la ventana del Form se muestra.

El evento Form.Load se dispara cuando el Form se carga (esto ocurre antes de mostrar la ventana).

En el ejemplo de arriba lo usé por costumbre, nada relevante.




Cita de: Lekim en 27 Septiembre 2015, 14:30 PMEn cuanto a la librería de classes de .Net me gustaría que me dijeras como encontrar lo que busco cuando quiero hacer algo

Creo que no existe un artículo que especifique esos miembros equivalentes en la documentación de la MSDN, pero si que podemos encontrar esa tabla de miembros equivalentes en otras fuentes:
Visual Basic 6 to .NET Function Equivalents

Si lo que buscas no está ahí entonces siempre puedes formular una pregunta en el foro y con gusto te ayudaré. (pero en otro post. No hagamos demasiado offtopic en este hilo)




Cita de: Lekim en 27 Septiembre 2015, 14:30 PMcon los miembros Microsoft.VisualBasic es fácil intuir como contruir el código, además que es muy directo.

Nombres intuitivos si, pero solo eso. De todas formas los miembros que están fuera de ese namespace también son intuitivos, simplemente los desconocerás, pero intuitivos te aseguro que si lo son.

La gente suele pensar que me quejo demasiado de este asunto en concreto, que no me tengo que obsesionar con tanta "perfección" en el rendimiento por que da igual usar un método u otro con argumentos como los que has expuesto de que "es más intuitivo" o etc, así que despues de esto no se ya que pensarán, pero bueno, supongo que es mi deber intentar defender los buenos hábitos de programación .Net xD.

Para empezar, si aprendes a usar Microsoft.VisualBasic y te acostumbras a ello, en realidad no estás aprendiendo a usar .Net. Digamos que el Namespace Microsoft.VisualBasic es cómo el lenguaje Batch en programación, algo que está ahí, se le llama lenguaje, pero no se puede clasificar cómo lenguaje de programación realmente, pues eso mismo es el namespace Microsoft.VisualBasic, está ahí por cuestiones de compatibilidad, se puede usar siempre que lo necesites, pero lo mejor sería no utilizarlo por que no lo necesitas.

Todo lo que existe en Microsoft.VisualBasic es un código menos optimizado y son miembros con menos overloads (sustitutos). En resumen, la funcionalidad es más limitada.

Aparte, si vieras el código fuente (mediante reflection) verías que no es tan "directo" internamente hablando, hacen muchas vueltas y la mayoría de los métodos no se valen por si mismos así que en realidad son simples wrappers (gracias a dios) de los métodos optimizados de .Net, por ejemplo la función Microsoft.VisualBasic.Strings.Mid() (entre otras) en realidad se limitan a hacer unas evaluaciones irrelevantes del argumento y seguidamente llama a System.String.Substring(), vuelve a hacer las mismas evaluaciones del argumento (si. esto quiere decir que cuando llamas a Mid y a toda esa otra morralla, trabajan innecesareamente x2) y por último devuelve el valor que tenga que devolver, es quien hace el trabajo de verdad.

Aquí puedes ver una referencia del código fuente de la librería de classes de .Net Framework:
http://referencesource.microsoft.com/
(creo que es una referencia parcial)

Saludos
#4436
.NET (C#, VB.NET, ASP) / Re: Pagina que hereda clase
27 Septiembre 2015, 15:18 PM
No manejo ASP.Net, pero de todas formas me parece que el problema que tienes es más bien de referencias y visibilidad de miembros, que no de herencia.

De todas formas sigo sin entender muy bien cual es el problema que tienes y quieres resolver, pero creo que si te puedo ayduar en algunas cosas que he notado:




1. La función PaginaBase.LoggedIn tienes que declararla compartida (shared) si pretendes usarlo aquí:
Citar
Código (vbnet,2) [Seleccionar]
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
   Dim isLogged As Boolean = PaginaBase.LoggedIn(Session)
...




2. ¿Por qué hay métodos definidos con sintaxis de C#?, ¿como este? (entre otros)
Citar
Código (vbnet,2) [Seleccionar]
Private Sub InitializeComponent()
   Base.Load += New EventHandler(Me.Page_Load)
End Sub

¿Estás intentando traducir un código de C# a VB.Net?, ese código es incompilable ya que en VB.Net para asociar un evento a un controlador de eventos se debe usar la instrucción AddHandler

Código (vbnet) [Seleccionar]
AddHandler Evento, Delegado

O haber declarado un objeto que pueda disparar eventos con el keyword WithEvents:

Código (vbnet) [Seleccionar]
Dim WithEvents obj As PaginaBase

Private Sub Obj_Load(ByVal sender As Object, ByVal e As EventArgs) Handles obj.Load
End Sub





3. Para poder suscribirte al evento, el método PaginaBase.Page_Load debe haber sido declarado compartido, o debes crear una instancia de la class PaginaBase para usar la referencia.

Código (vbnet) [Seleccionar]
Imports System.Web.SessionState

Public Class PaginaBase : Inherits System.Web.UI.Page

   Public Sub New()
       PaginaBase.Page_Load(Me, Nothing)
   End Sub

   Friend Shared Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
       ' ...
   End Sub

   Public Shared Function LoggedIn(ByVal session As HttpSessionState) As Boolean

       Return (session("UserName") IsNot Nothing) AndAlso (session("UserID") IsNot Nothing)

   End Function

End Class


Código (vbnet) [Seleccionar]
Public Class UCNavigation : Inherits System.Web.UI.UserControl

   Protected Overrides Sub OnInit(ByVal e As EventArgs)
       MyBase.OnInit(e)
       AddHandler MyBase.Load, AddressOf PaginaBase.Page_Load
   End Sub

   Protected Overrides Sub OnLoad(ByVal e As EventArgs)

       MyBase.OnLoad(e)

       Dim isLogged As Boolean = PaginaBase.LoggedIn(Session)
       ' etc...

   End Sub

End Class


Espero que esto te haya ayudado un poco aunque sea.

Saludos
#4437
.NET (C#, VB.NET, ASP) / Re: Pagina que hereda clase
27 Septiembre 2015, 10:56 AM
Explica con más detalle el tipo de modelo que pretendes diseñar.

Yo entendí, probablemente mal, que necesitas esta estructura, donde la herencia múltiple no es necesaria:

Código (vbnet) [Seleccionar]
Public Class UserCtrl : Inherits System.Web.UI.UserControl

End Class

Public Class PaginaBase : Inherits System.Web.UI.Page

   Public Sub New()
   End Sub

End Class

Public NotInheritable Class Inciso3 : Inherits PaginaBase

End Class


Muestra un ejemplo más extenso como el de arriba, ya que no queda claro donde ves necesario aplicar una herencia múltiple.




Tomando el ejemplo de arriba, si el problema es que necesitas heredar UserCtrl y PaginaBase en una misma class, entonces una alternativa sería crear una instancia de ambas classes en el constructor de otra class.

Obviamente esto no te permitiria reemplazar, añadir y/o anular miembros ya que no existe una herencia, pero tampoco se si necesitas hacer eso.

Código (vbnet) [Seleccionar]
Public NotInheritable Class Multi

   Public ReadOnly Property UserCtrl As UserCtrl
       Get
           Return Me.userCtrlB
       End Get
   End Property
   Private userCtrlB As UserCtrl

   Public ReadOnly Property PaginaBase As PaginaBase
       Get
           Return Me.paginaBaseB
       End Get
   End Property
   Private paginaBaseB As PaginaBase

   Public Sub New()
       Me.userCtrlB = New UserCtrl
       Me.paginaBaseB = New PaginaBase
   End Sub

End Class





De todas formas, una herencia múltiple la podrías simular implementando múltiples interfaces, pero esto requiere un mayor trabajo.

Sabiendo esto:
https://msdn.microsoft.com/en-us/library/system.web.ui.page%28v=vs.110%29.aspx
System.Web.UI.Page:
   Inherits   TemplateControl
   Implements IHttpHandler

https://msdn.microsoft.com/en-us/library/system.web.ui.templatecontrol%28v=vs.110%29.aspx
System.Web.UI.TemplateControl
   Inherits   Control
   Implements INamingContainer,
              IFilterResolutionService

https://msdn.microsoft.com/en-us/library/system.web.ui.control%28v=vs.110%29.aspx
System.Web.UI.Control
   Implements IComponent,
              IDisposable,
              IParserAccessor,
              IUrlResolutionService,
              IDataBindingsAccessor,
              IControlBuilderAccessor,
              IControlDesignerAccessor,
              IExpressionsAccessor


Podemos empezar por llevar a cabo algo como esto:
Código (vbnet) [Seleccionar]
Public Class TestClass
   Inherits Otraclass
   Implements System.IDisposable,
              System.ComponentModel.IComponent,
              System.Web.IHttpHandler,
              System.Web.UI.IControlBuilderAccessor,
              System.Web.UI.IControlDesignerAccessor,
              System.Web.UI.IDataBindingsAccessor,
              System.Web.UI.IExpressionsAccessor,
              System.Web.UI.IFilterResolutionService,
              System.Web.UI.INamingContainer,
              System.Web.UI.IParserAccessor,
              System.Web.UI.IUrlResolutionService

   Public Event Disposed(sender As Object, e As EventArgs) Implements IComponent.Disposed

   Public Property Site As ISite Implements IComponent.Site

   Public ReadOnly Property DataBindings As Web.UI.DataBindingCollection Implements Web.UI.IDataBindingsAccessor.DataBindings
       Get
       End Get
   End Property

   Public ReadOnly Property HasDataBindings As Boolean Implements Web.UI.IDataBindingsAccessor.HasDataBindings
       Get
       End Get
   End Property

   Public ReadOnly Property ControlBuilder As Web.UI.ControlBuilder Implements Web.UI.IControlBuilderAccessor.ControlBuilder
       Get
       End Get
   End Property

   Public ReadOnly Property UserData As IDictionary Implements Web.UI.IControlDesignerAccessor.UserData
       Get
       End Get
   End Property

   Public ReadOnly Property Expressions As Web.UI.ExpressionBindingCollection Implements Web.UI.IExpressionsAccessor.Expressions
       Get
       End Get
   End Property

   Public ReadOnly Property HasExpressions As Boolean Implements Web.UI.IExpressionsAccessor.HasExpressions
       Get
       End Get
   End Property

   Public Sub New()
   End Sub

   Public ReadOnly Property IsReusable As Boolean Implements Web.IHttpHandler.IsReusable
       Get
       End Get
   End Property

   Public Sub ProcessRequest(context As Web.HttpContext) Implements Web.IHttpHandler.ProcessRequest
   End Sub

   Public Function CompareFilters(filter1 As String, filter2 As String) As Integer Implements Web.UI.IFilterResolutionService.CompareFilters
   End Function

   Public Function EvaluateFilter(filterName As String) As Boolean Implements Web.UI.IFilterResolutionService.EvaluateFilter
   End Function

   Public Sub AddParsedSubObject(obj As Object) Implements Web.UI.IParserAccessor.AddParsedSubObject
   End Sub

   Public Function ResolveClientUrl(relativeUrl As String) As String Implements Web.UI.IUrlResolutionService.ResolveClientUrl
   End Function

   Public Function GetDesignModeState() As IDictionary Implements Web.UI.IControlDesignerAccessor.GetDesignModeState
   End Function

   Public Sub SetDesignModeState(data As IDictionary) Implements Web.UI.IControlDesignerAccessor.SetDesignModeState
   End Sub

   Public Sub SetOwnerControl(owner As Web.UI.Control) Implements Web.UI.IControlDesignerAccessor.SetOwnerControl
   End Sub

#Region "IDisposable Support"
   Private disposedValue As Boolean ' To detect redundant calls

   ' IDisposable
   Protected Overridable Sub Dispose(disposing As Boolean)
       If Not Me.disposedValue Then
           If disposing Then
               ' TODO: dispose managed state (managed objects).
           End If

           ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below.
           ' TODO: set large fields to null.
       End If
       Me.disposedValue = True
   End Sub

   ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources.
   'Protected Overrides Sub Finalize()
   '    ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
   '    Dispose(False)
   '    MyBase.Finalize()
   'End Sub

   ' This code added by Visual Basic to correctly implement the disposable pattern.
   Public Sub Dispose() Implements IDisposable.Dispose
       ' Do not change this code.  Put cleanup code in Dispose(disposing As Boolean) above.
       Dispose(True)
       GC.SuppressFinalize(Me)
   End Sub
#End Region

End Class


Saludos
#4438
Scripting / Re: maximo y minimo en batch
27 Septiembre 2015, 09:25 AM
Cita de: guason9 en 26 Septiembre 2015, 21:59 PMNo logro entender como hacer que de por ejemplo 5 calificaciones (3, 5, 8, 10 ,12), yo le solicite al programa la nota maxima y por otro lado la minima y me arroje como resultado: 3 y 12.

Código (dos) [Seleccionar]
@Echo OFF & Setlocal EnableDelayedExpansion

Set /A "Max=0"
Set /A "Min=100"
Set    "Values=5,3,8,12,10"

For %%v in (%Values%) Do (

If %%v LEQ !Min! (Set /A "Min=%%v")
If %%v GEQ !Max! (Set /A "Max=%%v")
<Nul Set /P"=%%v "
)

Echo+
Echo Minimum: !Min!
Echo Maximum: !Max!

Pause&Exit /B 0



Cita de: cmd5 3 8 12 10
Minimum: 3
Maximum: 12
Presione una tecla para continuar . . .


PD:
Por si acaso en el futuro te sirve de algo, mírate este ejemplo en VBS sobre funcionalidades de alumnos/materias:
http://foro.elhacker.net/scripting/ayuda_con_select_case_vbs-t436700.0.html;msg2020173#msg2020173


Saludos
#4440
Por si sirve de algo, he vuelto a refactorizar el código fuente para que se entienda mejor, ahora solo expongo UN solo evento al que podemos suscribirnos para obtener el tiempo transcurrido, el tiempo restante, y el tiempo límite o meta.

El ejemplo de arriba también lo he modificado, más simple que esto es imposible ya:

Cita de: http://foro.elhacker.net/net/cuenta_regresiva_a_partir_de_una_fecha_vbnet-t441934.0.html;msg2040412#msg2040412
Código (vbnet) [Seleccionar]
   Public NotInheritable Class Form1 : Inherits Form
   
       Private WithEvents countdown As New TimeMeasurer With {.UpdateInterval = 100}
   
       Private Shadows Sub Load() Handles MyBase.Load
   
           ' Medir el lapso de 1 mes desde la fecha y hora actual.
           Me.countdown.Start(DateTime.Now, DateTime.Now.AddMonths(1))
   
       End Sub
   
       Private Sub Countdown_TimeUpdated(ByVal sender As Object, ByVal e As TimeMeasurer.TimeUpdatedEventArgs) _
       Handles countDown.TimeUpdated
   
           Me.lblCountDown.Text = String.Format("Days:{0:00} Hours:{1:00} Minutes:{2:00} Seconds:{3:00}",
                                                e.Remaining.Days, e.Remaining.Hours, e.Remaining.Minutes, e.Remaining.Seconds)
   
       End Sub
   
   End Class

Basicamente el código fuente que compartí encapsula todos los miembros necesarios para resolver el problema que tienes de una forma amistosa orientada a eventos xD.

De todas formas si aun sigues sin saber cómo utilizarlo a pesar del ejemplo, o si por algún motivo prefieres no usar mi solución entonces ahí tienes la alternativa de @Lekim, aunque os aconsejo a los dos que cambieis los hábitos que están siguiendo ya que son perjudiciales para el aprendizaje, por ejemplo no es necesario la aplicación de operaciones aritméticas para calcular manualmente las horas, dias, minutos y demás, pueden usar las propiedades que expone un objeto TimeSpan o un objeto Date cómo mencioné al principìo!, con eso lo resolverían TODO sin complicarse.




@Lekim, con tu permiso, te muestro como podrías simplificar para mejorar el código que compartiste:

Código (vbnet) [Seleccionar]
Public Class Form1

   Dim culture As CultureInfo = CultureInfo.GetCultureInfo("es-ES")
   Dim fechaLimite As Date = Date.ParseExact("01/10/2015 00:00:00", "dd/MM/yyyy hh:mm:ss", culture, DateTimeStyles.None)

   Private Sub Form1_Shown() Handles MyBase.Shown
       Timer1.Enabled = True
   End Sub

   Private Sub Timer1_Tick() Handles Timer1.Tick

       Dim dateDiff As TimeSpan = fechaLimite.Subtract(Date.Now)
       Dim dateFormat As String = "dddd dd, MMMM, yyyy"

       Dim sb As New StringBuilder
       With sb
           .AppendFormat("Fecha Actual: {0}", Date.Today.ToString(dateFormat, culture))
           .AppendLine()
           .AppendFormat("Fecha Límite: {0}", fechaLimite.ToString(dateFormat, culture))
           .AppendLine()
           .AppendFormat("Quedan: {0}", String.Format("{0:0}d. {1:00}h. {2:00}m. {3:00}s.",
                                                      dateDiff.TotalDays, dateDiff.Hours,
                                                      dateDiff.Minutes, dateDiff.Seconds))
       End With

       Me.Label1.Text = sb.ToString

   End Sub

End Class




También te recomiendo activar las declaraciones "Option" cuando programes bajo VB.Net, verias las decenas de fallos que cometiste en aquél código sin darte cuenta, sobre todo de casting.

Otra recomendación que les hago, eviten CUALQUIER uso de los miembros expuestos en el namespace Microsoft.VisualBasic, cómo por ejemplo DateDiff, DateAdd, FormatDateTime, Len, Mid, etc, evitenlo todo sin excepción, todo eso es morralla rescatada de VisualBasic 6 para familiarizar a los que migran a VB.Net, aunque es puro código .Net pero no tan optimizado, así que deberían usar los equivalentes del resto de la librería de classes de .Net.

Saludos!