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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 526
221  Programación / .NET (C#, VB.NET, ASP) / Re: Cual es la forma más simple de obtener el tamaño de una carpeta? en: 14 Enero 2013, 03:08 am
otra forma que se incluyo en la 4.0 del framework es esta forma con LINQ.

How to Calculate the Size of the Folder Using LINQ in C#

Igual ese artículo habla de calcular el tamaño de los directorios con LINQ, pero de LINQ tiene solamente el Sum que usé más arriba, así que no deja de ser un método recursivo :P

Saludos
 
222  Programación / .NET (C#, VB.NET, ASP) / Re: Cual es la forma más simple de obtener el tamaño de una carpeta? en: 14 Enero 2013, 02:53 am
¿Cuando te refieres a "rápida" lo dices por performance?

Hasta donde tengo entendido el tamaño no es una de las propiedades de una carpeta, por eso no aparece en el explorer, y por esto el DirectoryInfo no contiene la información, por lo que la alternativa es sumar el tamaño de todos los archivos de manera recursiva o no.

El tema es que hay que iterar los directorios y archivos porque si bien lo siguiente funciona, algunas veces se obtiene un UnauthorizedAccessException por los subdirectorios :-\
Código
  1. DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Program Files (x86)");
  2. long size = directoryInfo.GetFiles("*", SearchOption.AllDirectories).Sum(f => f.Length);

Saludos
223  Programación / .NET (C#, VB.NET, ASP) / Re: ¿que técnica asíncrona debo usar? en: 14 Enero 2013, 00:04 am
Me he asustado un poco con lo último de los dibujos con GDI+ :xD Por lo que entiendo, el problema sería que el form esta recibiendo más datos de los que puede procesar/dibujar no? Tal vez lo he entendido mal, pero en este caso, por más que se ejecute en otro hilo seguirá existiendo el cuello de botella :-\

Saludos
224  Programación / .NET (C#, VB.NET, ASP) / Re: Es c# dejen lo pasar por ahora sobre metodos virtuales en: 13 Enero 2013, 23:54 pm
Los get y set son reservados. Y si estabas mirando el código que aparece en el link que he dejado anteriormente, lo único que se da como ejemplo es una propiedad auto-implementada y virtual, que luego es sobreescrita por la clase derivada, no me queda claro cual sería la duda :-\

Saludos
225  Programación / .NET (C#, VB.NET, ASP) / Re: dudas visual basic 2012 en: 13 Enero 2013, 23:40 pm
Por desgracia, las aplicaciones "Modern UI Syle" (antes Metro Style) están limitadas a Windows 8 y RT (tablets).

En lo que respecta a su distribución, para Windows 8 puedes generar instaladores para distribuir por fuera del market, para Win RT solo es posible hacerlo por medio de este.

Saludos
226  Programación / .NET (C#, VB.NET, ASP) / Re: [APORTE] Snippets !! (Posteen aquí sus snippets) en: 13 Enero 2013, 23:29 pm
Bueno, lo siguiente son sugerencias, críticas o comentarios sobre algunos de los snippets que has puesto en el post, así como algo más genérico sobre como estructuras tus métodos o funciones, y el código en general.

  • Es aconsejable declarar el tipo de retorno de las funciones en su declaración. Para alguien que no tiene claro el objetivo de una función es mucho más legible hacerlo de este modo, de lo contrario hay que revisar el código de la función en busca de los Return para darse cuenta de que la función retorna un booleano por ejemplo.

Código
  1. Private Function Funcion() As Boolean

  • Función Attrib. Ya que estás creando una función que te abstrae de verificar la existencia de un archivo y asignar atributos, tal vez lo mejor sería que la función reciba una lista de atributos en lugar de un atributo global. Es decir, en este caso al utilizar tu función es necesario pasar la suma de los atributos para que asigne varios (como en la función original), pero por que no abstraerse un poco más y olvidarse de la suma?

Código
  1.    Private Function Attrib(ByVal File As String, ByVal Attributes As List(Of System.IO.FileAttributes)) As Boolean
  2.        If IO.File.Exists(File) Then
  3.            Try
  4.                FileSystem.SetAttr(File, Attributes.Select(Function(a) DirectCast(a, Integer)).Sum())
  5.                Return True ' File was modified OK
  6.            Catch ex As Exception
  7.                ' MsgBox(ex.Message)
  8.                Return False ' File can't be modified maybe because User Permissions
  9.            End Try
  10.        Else
  11.            Return Nothing ' File doesn't exist
  12.        End If
  13.    End Function

  • "Controlar el mismo evento para varios controles". No es aconsejable tener un solo método con condiciones para cada control por separado, lo recomendado es tener un método por evento. Si necesitas realizar algo en específico para un control en especial, entonces asigna un método diferente al control.
  • Función ConvertToDiscSize. Si debes de pasar un string a una función, para luego tomar una decisión según se trate de un string u otro, debes de plantearte declarar un enumerador (esto mismo es aplicable a otras de tus funciones). Por otra parte, tampoco es recomendable tener todos los valores hardcodeados en un método, además de que estás repitiendo mucho código. A continuación una variante de la función reestructrada;

Código
  1. #Region " Convert To Disc Size function"
  2.  
  3. Private Function ConvertToDiscSize(ByVal fileSize As Double, ByVal fileKindSize As MagnitudeType, ByVal to_DiscKindCapacity As DiscType) As Double
  4.    Dim size As Double = GetSize(to_DiscKindCapacity)
  5.    If (size < 0) Then Throw New ArgumentException("Tamaño de disco no localizado")
  6.    Return fileSize * DirectCast(fileKindSize, Integer) / size
  7. End Function
  8.  
  9. Enum MagnitudeType
  10.    Bytes = 1
  11.    KB = 1024
  12.    MB = 1048576
  13.    GB = 1073741824
  14. End Enum
  15.  
  16. Enum DiscType
  17.    CD
  18.    CD800
  19.    CD900
  20.    DVD
  21.    DVD_DL
  22.    BR
  23.    BR_DL
  24.    BR_3L
  25.    BR_4L
  26.    BR_MD
  27.    BR_MD_DL
  28. End Enum
  29.  
  30. Private Function GetSize(ByVal discType As DiscType) As Double
  31.    Select Case discType
  32.        Case DiscType.CD
  33.            Return 737280000      ' CD Standard
  34.        Case DiscType.CD800
  35.            Return 829440393.216 ' CD 800 MB
  36.        Case DiscType.CD900
  37.            Return 912383803.392 ' CD 900 MB
  38.        Case DiscType.DVD
  39.            Return 4700000000 ' DVD Standard (DVD5
  40.        Case DiscType.DVD_DL
  41.            Return 8500000000 ' DVD Double Layer (DVD9)
  42.        Case DiscType.BR
  43.            Return 25025314816 ' BluRay Standard
  44.        Case DiscType.BR_DL
  45.            Return 50050629632 ' BluRay Double Layer
  46.        Case DiscType.BR_3L
  47.            Return 100103356416 ' BluRay x3 Layers
  48.        Case DiscType.BR_4L
  49.            Return 128001769472 ' BluRay x4 Layers
  50.        Case DiscType.BR_MD
  51.            Return 7791181824 ' BluRay MiniDisc Standard
  52.        Case DiscType.BR_MD_DL
  53.            Return 15582363648 ' BluRay MiniDisc Double Layer
  54.        Case Else
  55.            Return -1 ' Por si se declara un nuevo valor en el enumerador sin especificar tamaño
  56.    End Select
  57. End Function
  58.  
  59. #End Region

Creo que por el momento es todo lo que se me ocurre, en otro momento vuelvo a mirar :P

Saludos
227  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda sobre argumentos en: 13 Enero 2013, 19:20 pm
Otra alternativa es utilizar generics, pero tampoco aplica para el caso, si vas a utilizar generics no deberías de estar verificando el tipo luego.

Pero digo yo que no seré el primero en tener este problemilla xD... ¿Como lo solucionarías tú? :-[

Con sobrecargas, tendría dos métodos :P

Saludos
228  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda sobre argumentos en: 13 Enero 2013, 18:15 pm
Todos los tipos de objetos deberían de implementar la misma interfaz o heredar de la misma base (nada de lo que pones como ejemplo), de lo contrario, para eso se utilizan las sobrecargas :P

Podrías pasar un object, pero no es para nada recomendable, donde vea que comienzas a hacer eso te baneo :xD, en un rato me paso por tu post de snippets para darte unas sugerencias en cuanto a estructura de código :)

Saludos
 
 
229  Programación / .NET (C#, VB.NET, ASP) / Re: Es c# dejen lo pasar por ahora sobre metodos virtuales en: 12 Enero 2013, 00:22 am
Sí entiendes eso, entonces mejor leer lo mismo en español :P

 http://msdn.microsoft.com/es-es/library/9fkccyh4(v=vs.80).aspx
230  Programación / .NET (C#, VB.NET, ASP) / Re: Es c# dejen lo pasar por ahora sobre metodos virtuales en: 11 Enero 2013, 23:56 pm
no entiendo porque este post tiene chincheta  :rolleyes:

Ups  :-X
La herencia es una caracterísica de lenguaje POO que es capaz dereutilizar
otra clase por ejemplo de una superclase y tener la misma signature creo que me expliqué bien,por cierto gracias por responder

Bien, sí tú en una clase tienes un método X con cierto comportamiento, y en una clase derivada quieres redefinir/reescribir este método, el mismo debe de estar declarado como virtual en la base (abstracto es otra opción, pero tiene otro comportamiento).

Supongamos que tienes una clase Vehículo con un método mover que simula el movimiento en un casillero. Por otra parte tienes una clase derivada de nombre Ferrari, sí quieres que este último se mueva 5 casilleros, en la clase Vehículo el método mover debe de estar definido como virtual, para luego en Ferrari sobreescribirlo con override :)

Espero se haya entendido.

Saludos

Páginas: 1 ... 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 [23] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 ... 526
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines