Autor
|
Tema: Librería de Snippets para VB.NET !! (Compartan aquí sus snippets) (Leído 529,360 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Para una aplicación necesité dividir el tamaño de unos MEgaBytes entre la capacidad de un DVD5, así que ya puestos he hecho este snippet que divide el tamaño entre varios formatos de discos, para la próxima ocasión. PD: Las medidas están sacadas de la Wikipedia, para los más... Saludos. ' Usage: ' ' MsgBox(ConvertToDiscSize(737280000, "Bytes", "CD")) ' MsgBox(ConvertToDiscSize(700, "MB", "CD")) ' MsgBox(Math.Ceiling(ConvertToDiscSize(6.5, "GB", "DVD"))) ' MsgBox(ConvertToDiscSize(40, "GB", "BR").ToString.Substring(0, 3) & " Discs") #Region " Convert To Disc Size function" Private Function ConvertToDiscSize(ByVal FileSize As Double, ByVal FileKindSize As String, ByVal To_DiscKindCapacity As String) ' KindSize Measures: ' -------------------------- ' Bytes ' KB ' MB ' GB ' ToDiscKind Measures: ' ----------------------------- ' CD ' CD800 ' CD900 ' DVD ' DVD-DL ' BR ' BR-DL ' BR-3L ' BR-4L ' BR-MD ' BR-MD-DL ' Bytes If FileKindSize.ToUpper = "BYTES" Then If To_DiscKindCapacity.ToUpper = "CD" Then Return FileSize / 737280000 ' CD Standard If To_DiscKindCapacity.ToUpper = "CD800" Then Return FileSize / 829440393.216 ' CD 800 MB If To_DiscKindCapacity.ToUpper = "CD900" Then Return FileSize / 912383803.392 ' CD 900 MB If To_DiscKindCapacity.ToUpper = "DVD" Then Return FileSize / 4700000000 ' DVD Standard (DVD5 If To_DiscKindCapacity.ToUpper = "DVD-DL" Then Return FileSize / 8500000000 ' DVD Double Layer (DVD9) If To_DiscKindCapacity.ToUpper = "BR" Then Return FileSize / 25025314816 ' BluRay Standard If To_DiscKindCapacity.ToUpper = "BR-DL" Then Return FileSize / 50050629632 ' BluRay Double Layer If To_DiscKindCapacity.ToUpper = "BR-3L" Then Return FileSize / 100103356416 ' BluRay x3 Layers If To_DiscKindCapacity.ToUpper = "BR-4L" Then Return FileSize / 128001769472 ' BluRay x4 Layers If To_DiscKindCapacity.ToUpper = "BR-MD" Then Return FileSize / 7791181824 ' BluRay MiniDisc Standard If To_DiscKindCapacity.ToUpper = "BR-MD-DL" Then Return FileSize / 15582363648 ' BluRay MiniDisc Double Layer ' KB ElseIf FileKindSize.ToUpper = "KB" Then If To_DiscKindCapacity.ToUpper = "CD" Then Return FileSize / 720000 ' CD Standard If To_DiscKindCapacity.ToUpper = "CD800" Then Return FileSize / 810000.384 ' CD 800 MB If To_DiscKindCapacity.ToUpper = "CD900" Then Return FileSize / 890999.808 ' CD 900 MB If To_DiscKindCapacity.ToUpper = "DVD" Then Return FileSize / 4589843.75 ' DVD Standard (DVD5) If To_DiscKindCapacity.ToUpper = "DVD-DL" Then Return FileSize / 8300781.25 ' DVD Double Layer (DVD9) If To_DiscKindCapacity.ToUpper = "BR" Then Return FileSize / 24438784 ' BluRay Standard If To_DiscKindCapacity.ToUpper = "BR-DL" Then Return FileSize / 48877568 ' BluRay Double Layer If To_DiscKindCapacity.ToUpper = "BR-3L" Then Return FileSize / 97757184 ' BluRay x3 Layers If To_DiscKindCapacity.ToUpper = "BR-4L" Then Return FileSize / 125001728 ' BluRay x4 Layers If To_DiscKindCapacity.ToUpper = "BR-MD" Then Return FileSize / 7608576 ' BluRay MiniDisc Standard If To_DiscKindCapacity.ToUpper = "BR-MD-DL" Then Return FileSize / 15217152 ' BluRay MiniDisc Double Layer ' MB ElseIf FileKindSize.ToUpper = "MB" Then If To_DiscKindCapacity.ToUpper = "CD" Then Return FileSize / 703.125 ' CD Standard If To_DiscKindCapacity.ToUpper = "CD800" Then Return FileSize / 791.016 ' CD 800 MB If To_DiscKindCapacity.ToUpper = "CD900" Then Return FileSize / 870.117 ' CD 900 MB If To_DiscKindCapacity.ToUpper = "DVD" Then Return FileSize / 4482.26929 ' DVD Standard (DVD5) If To_DiscKindCapacity.ToUpper = "DVD-DL" Then Return FileSize / 8106.23169 ' DVD Double Layer (DVD9) If To_DiscKindCapacity.ToUpper = "BR" Then Return FileSize / 23866 ' BluRay Standard If To_DiscKindCapacity.ToUpper = "BR-DL" Then Return FileSize / 47732 ' BluRay Double Layer If To_DiscKindCapacity.ToUpper = "BR-3L" Then Return FileSize / 95466 ' BluRay x3 Layers If To_DiscKindCapacity.ToUpper = "BR-4L" Then Return FileSize / 122072 ' BluRay x4 Layers If To_DiscKindCapacity.ToUpper = "BR-MD" Then Return FileSize / 7430.25 ' BluRay MiniDisc Standard If To_DiscKindCapacity.ToUpper = "BR-MD-DL" Then Return FileSize / 14860.5 ' BluRay MiniDisc Double Layer ' GB ElseIf FileKindSize.ToUpper = "GB" Then If To_DiscKindCapacity.ToUpper = "CD" Then Return FileSize / 0.68665 ' CD Standard If To_DiscKindCapacity.ToUpper = "CD800" Then Return FileSize / 0.77248 ' CD 800 MB If To_DiscKindCapacity.ToUpper = "CD900" Then Return FileSize / 0.84972 ' CD 900 MB If To_DiscKindCapacity.ToUpper = "DVD" Then Return FileSize / 4.37722 ' DVD Standard (DVD5) If To_DiscKindCapacity.ToUpper = "DVD-DL" Then Return FileSize / 7.91624 ' DVD Double Layer (DVD9) If To_DiscKindCapacity.ToUpper = "BR" Then Return FileSize / 23.30664 ' BluRay Standard If To_DiscKindCapacity.ToUpper = "BR-DL" Then Return FileSize / 46.61328 ' BluRay Double Layer If To_DiscKindCapacity.ToUpper = "BR-3L" Then Return FileSize / 93.22852 ' BluRay x3 Layers If To_DiscKindCapacity.ToUpper = "BR-4L" Then Return FileSize / 119.21094 ' BluRay x4 Layers If To_DiscKindCapacity.ToUpper = "BR-MD" Then Return FileSize / 7.2561 ' BluRay MiniDisc Standard If To_DiscKindCapacity.ToUpper = "BR-MD-DL" Then Return FileSize / 14.51221 ' BluRay MiniDisc Double Layer End If Return Nothing ' Argument measure not found End Function #End Region
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
He actualizado el pack de Snippets en el post principal (Antes eran 76, ahora 114) Si alguien quiere que incluya un pack con sus snippets en el post principal porfavor que me pase los snippets en formato de snippet (Archivo.snippet). Y añado este snippet, un delimitador de strings, es parecido al método "Split", pero bajo mi opinión lo he mejorado bastante! · Acepta 1 o 2 delimitadores, · Opción de IgnoreCase · Delimitar de izquierda a derecha o de derecha a izquierda. Saludos! #Region " Delimit_String Function " ' // By Elektro H@ker ' ' USAGE: ' ' MsgBox(Delimit_String("Welcome to my new house", "to")) ' my new house ' MsgBox(Delimit_String("Welcome to my new house", "to", "house")) ' my new ' MsgBox(Delimit_String("Welcome to my new house", "TO", "HoUSe", True)) ' my new ' MsgBox(Delimit_String("Welcome to my new house", "house", "to", , "Left")) ' my new ' MsgBox(Delimit_String("Welcome to my new house", "TO", "HoUSe", False)) ' False ' MsgBox(Delimit_String("Welcome to my new house", "to", "to", , "Left")) ' Index was outside bounds of the array Private Function Delimit_String(ByVal STR As String, ByVal Delimiter_A As String, Optional ByVal Delimiter_B As String = "", Optional ByVal Ignore_Case As Boolean = False, Optional ByVal Left_Or_Right As String = "Right") Dim Compare_Method As Integer = 0 ' Don't ignore case If Ignore_Case = True Then Compare_Method = 1 ' Ignore Case If Not Left_Or_Right.ToUpper = "LEFT" And Not Left_Or_Right.ToUpper = "RIGHT" _ Then Return False ' Returns false if the Left_Or_Right argument is in incorrect format If Compare_Method = 0 Then If Not STR.Contains(Delimiter_A) Or Not STR.Contains(Delimiter_B) _ Then Return False ' Returns false if one of the delimiters in NormalCase can 't be found Else If Not STR.ToUpper.Contains(Delimiter_A.ToUpper) Or Not STR.ToUpper.Contains(Delimiter_B.ToUpper) _ Then Return False ' Returns false if one of the delimiters in IgnoreCase can 't be found End If Try If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(0) _ Else If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_A, , Compare_Method)(1) If Delimiter_B IsNot Nothing Then If Left_Or_Right.ToUpper = "LEFT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(1) _ Else If Left_Or_Right.ToUpper = "RIGHT" Then STR = Split(STR, Delimiter_B, , Compare_Method)(0) End If Return STR ' Returns the splitted string Catch ex As Exception Return ex.Message ' Returns exception if index is out of range End Try End Function #End Region
|
|
« Última modificación: 12 Enero 2013, 18:56 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Otro convertidor, en esta ocasión un convertidor de tiempo, ms, segundos, minutos, horas. #Region " Convert Time Function" ' // By Elektro H@cker ' ' MsgBox(Convert_Time(1, "h", "m")) ' MsgBox(Convert_Time(1, "h", "s")) ' MsgBox(Convert_Time(1, "h", "ms")) ' MsgBox(Convert_Time(6000, "milliseconds", "seconds")) ' MsgBox(Convert_Time(6000, "seconds", "minutes")) ' MsgBox(Convert_Time(6000, "minutes", "hours")) Private Function Convert_Time(ByVal Time As Int64, ByVal Input_Time_Format As String, ByVal Output_Time_Format As String) Dim Time_Span As New TimeSpan If Input_Time_Format.ToUpper = "MS" Or Output_Time_Format.ToUpper = "MILLISECONDS" Then Time_Span = New TimeSpan(TimeSpan.TicksPerMillisecond * Time) If Input_Time_Format.ToUpper = "S" Or Output_Time_Format.ToUpper = "SECONDS" Then Time_Span = New TimeSpan(TimeSpan.TicksPerSecond * Time) If Input_Time_Format.ToUpper = "M" Or Output_Time_Format.ToUpper = "MINUTES" Then Time_Span = New TimeSpan(TimeSpan.TicksPerMinute * Time) If Input_Time_Format.ToUpper = "H" Or Output_Time_Format.ToUpper = "HOURS" Then Time_Span = New TimeSpan(TimeSpan.TicksPerHour * Time) If Output_Time_Format.ToUpper = "MS" Or Output_Time_Format.ToUpper = "MILLISECONDS" Then Return Time_Span.TotalMilliseconds If Output_Time_Format.ToUpper = "S" Or Output_Time_Format.ToUpper = "SECONDS" Then Return Time_Span.TotalSeconds If Output_Time_Format.ToUpper = "M" Or Output_Time_Format.ToUpper = "MINUTES" Then Return Time_Span.TotalMinutes If Output_Time_Format.ToUpper = "H" Or Output_Time_Format.ToUpper = "HOURS" Then Return Time_Span.TotalHours Return False ' Returns false if argument is in incorrect format End Function #End Region
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Set_PC_State ' // By Elektro H@cker ' USAGE: ' ' Set_PC_State(RESET) ' Set_PC_State(SUSPEND, 30, "I'm suspending your system.") ' Set_PC_State(LOG_OFF) ' Set_PC_State(HIBERN) ' Set_PC_State(ABORT) #Region " Set PC State " Const RESET As String = " -R " Const SUSPEND As String = " -S " Const LOG_OFF As String = " -L " Const HIBERN As String = " -H " Const ABORT As String = " -A " Private Function Set_PC_State(ByVal PowerState_Action As String, Optional ByVal TimeOut As Integer = 1, Optional ByVal COMMENT As String = "") Dim Shutdown_Command As New ProcessStartInfo Shutdown_Command.FileName = "Shutdown.exe" Try If PowerState_Action = ABORT Or PowerState_Action = HIBERN Or PowerState_Action = LOG_OFF Then Shutdown_Command.Arguments = PowerState_Action ' Windows don't allow TimeOut or Comment options for HIBERN, LOG_OFF or ABORT actions. ElseIf PowerState_Action = RESET Or PowerState_Action = SUSPEND Then If Not COMMENT = "" Then If COMMENT.Length > 512 Then COMMENT = COMMENT.Substring(0, 512) ' Only 512 chars are allowed for comment Shutdown_Command.Arguments = PowerState_Action & " -T " & TimeOut & " /C " & COMMENT Else Shutdown_Command.Arguments = PowerState_Action & " -T " & TimeOut End If Shutdown_Command.WindowStyle = ProcessWindowStyle.Hidden Process.Start(Shutdown_Command) Return True End If Catch ex As Exception Return ex.Message End Try Return Nothing ' Invalid argument End Function #End Region
Día local:Dim Today as string = My.Computer.Clock.LocalTime.DayOfWeek ' In English language Dim Today as string = System.Globalization.DateTimeFormatInfo.CurrentInfo.GetDayName(Date.Today.DayOfWeek) ' In system language
String is URL? ' USAGE: ' ' If String_Is_URL("http://google.com") Then MsgBox("Valid url!") Else MsgBox("Invalid url!") #Region " String Is URL Function " Private Function String_Is_URL(ByVal STR As String) Dim URL_Pattern As String = "^(http|https):/{2}[a-zA-Z./&\d_-]+" Dim URL_RegEx As New System.Text.RegularExpressions.Regex(URL_Pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.ExplicitCapture) If URL_RegEx.IsMatch(STR) Then Return True Else Return False End Function #End Region
G-Mail Sender (Envía emails) ' USAGE: ' ' GMail_Sender("Your_Email@Gmail.com", "Your_Password", "Email Subject", "Message Body", "Destiny@Email.com") #Region " GMail Sender function " Private Function GMail_Sender(ByVal Gmail_Username As String, ByVal Gmail_Password As String, ByVal Email_Subject As String, ByVal Email_Body As String, ByVal Email_Destiny As String) Try Dim MailSetup As New System.Net.Mail.MailMessage MailSetup.Subject = Email_Subject MailSetup.To.Add(Email_Destiny) MailSetup.From = New System.Net.Mail.MailAddress(Gmail_Username) MailSetup.Body = Email_Body Dim SMTP As New System.Net.Mail.SmtpClient("smtp.gmail.com") SMTP.Port = 587 SMTP.EnableSsl = True SMTP.Credentials = New Net.NetworkCredential(Gmail_Username, Gmail_Password) SMTP.Send(MailSetup) Return True ' Email is sended OK Catch ex As Exception Return ex.Message ' Email can't be sended End Try End Function #End Region
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Get OS Version Dim OS_Version As String = System.Environment.OSVersion.ToString MsgBox(OS_Version)
String Is Email ' // By Elektro H@cker ' ' USAGE: ' ' MsgBox(String_Is_Email("User@Email.com")) #Region " String Is Email Function " Private Function String_Is_Email(ByVal Email_String As String) Dim Emaill_RegEx As New System.Text.RegularExpressions.Regex("^[A-Za-z0-9][A-Za-z0-9]+\@[A-Za-z0-9]+\.[A-Za-z0-9][A-Za-z0-9]+$") If Emaill_RegEx.IsMatch(Email_String) Then Return True Else Return False End Function #End Region
Get Random Password ' USAGE: ' ' MsgBox(Get_Random_Password(8)) ' MsgBox(Get_Random_Password(36)) #Region " Get Random Password Function " Public Function Get_Random_Password(ByVal Password_Length As Double) As String Dim New_Password As String = System.Guid.NewGuid.ToString If Password_Length <= 0 OrElse Password_Length > New_Password.Length Then Throw New ArgumentException("Length must be between 1 and " & New_Password.Length) End If Return New_Password.Substring(0, Password_Length) End Function #End Region
Get Printers ' // By Elektro H@cker ' ' USAGE: ' ' For Each Printer_Name In Get_Printers() : MsgBox(Printer_Name) : Next Private Function Get_Printers() Dim Printer_Array As New List(Of String) Try For Each Printer_Name As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters : Printer_Array.Add(Printer_Name) : Next Catch ex As Exception If ex.Message.Contains("RPC") Then Return "RPC Service is not avaliable" End Try Return Printer_Array End Function
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Pues yo tengo una colección de funciones para crear, cargar y superponer imágenes así como para escribir texto usando gdi+: cargar una imágen en una resolución determinada: Public Function read_image_at_res (ByRef file As String, ByRef force_sizex As Integer, ByRef force_sizey As Integer) As System. Drawing. Bitmap Dim img As New Bitmap (file) Dim b As New Bitmap(force_sizex, force_sizey) Dim bg As Graphics = Graphics.FromImage(b) Try bg.DrawImage(img, New Rectangle(New Point(0, 0), New Size(force_sizex, force_sizey)), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel) Catch ex As Exception End Try bg.Dispose() Return b End Function
redimensionar una imágen: Public Function resize_bmp(ByRef img As Bitmap, ByRef sizex As Integer, ByRef sizey As Integer) As Bitmap Dim b As New Bitmap(sizex, sizey) Dim bg As Graphics = Graphics.FromImage(b) bg.DrawImage(img, New Rectangle(New Point(0, 0), New Size(sizex, sizey)), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel) bg.Dispose() Return b End Function
superponer dos imágenes sobre un lienzo: Public Function layer_sum(ByRef layer1 As Bitmap, ByRef layer2 As Bitmap) As Bitmap Dim bg As Graphics = Graphics.FromImage(layer1) bg.DrawImage(layer2, New Point(0, 0)) bg.Dispose() Return layer1 End Function
escribir texto plano(con sombreado rudimentario) en un fondo transparente: Public Function get_text_layer(ByRef size As System.Drawing.Size, ByRef text As String) As System.Drawing.Bitmap Dim img As New Bitmap(size.Width, size.Height) Dim bg As Graphics = Graphics.FromImage(img) bg.DrawString(text, New Font("Lucida Console", 12, FontStyle.Bold), Brushes.Gray, New Point(1, -1)) bg.DrawString(text, New Font("Lucida Console", 12, FontStyle.Bold), Brushes.White, New Point(0, 0)) bg.Dispose() Return img End Function
dividir la imagen en sectores y devolver el indicado por "index": Public Function get_portion(ByRef image As System.Drawing.Bitmap, ByRef cuadriculax As Short, ByRef cuadriculay As Short, ByRef index As Integer) As System.Drawing.Bitmap Dim img As New Bitmap(CInt(image.Size.Width / cuadriculax), CInt(image.Size.Height / cuadriculay)) 'Dim b As New Bitmap(CInt(image.Size.Width / cuadriculax), CInt(image.Size.Height / cuadriculay)) Dim bg As Graphics = Graphics.FromImage(img) Dim xcount = 0 Dim ycount = 0 Do While index >= cuadriculax index = index - cuadriculax ycount = ycount + 1 Loop xcount = index Dim tmpx As Integer = CInt((image.Size.Width / cuadriculax) * xcount) Dim tmpy As Integer = CInt((image.Size.Height / cuadriculay) * ycount) Dim port As New Rectangle(New System.Drawing.Point(0, 0), New Size(New Point(CInt(image.Size.Width / cuadriculax), CInt(image.Size.Height / cuadriculay)))) bg.DrawImage(image, port, tmpx, tmpy, CInt(port.Size.Width), CInt(port.Size.Height), GraphicsUnit.Pixel) bg.Dispose() Return img End Function
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
@ABDERRAMAH
Muy buenos, el primero y el segundo me gustaron mucho, siempre tengo problemas para redimensionar imagenes y me viene bien.
El último también, es una idea muy dinámica lo de dividir la imagen en una cuadrícula y tomar un sector, no sé si eres el autor de las funciones pero a pocos se le habría ocurrido hacer algo así xD
Saludos!
|
|
|
En línea
|
|
|
|
ABDERRAMAH
Desconectado
Mensajes: 431
en ocasiones uso goto ¬¬
|
Soy autor, si, aunque la idea de crear el objeto graphics y después destruirlo, en lugar de tener uno fijo para todo la vi en unos códigos de msdn.
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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.
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?
Private Function Attrib (ByVal File As String, ByVal Attributes As List (Of System. IO. FileAttributes)) As Boolean Try FileSystem. SetAttr(File, Attributes. Select(Function(a ) DirectCast (a, Integer)). Sum()) Return True ' File was modified OK Catch ex As Exception ' MsgBox(ex.Message) Return False ' File can't be modified maybe because User Permissions End Try Else Return Nothing ' File doesn't exist End If 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;
#Region " Convert To Disc Size function" Private Function ConvertToDiscSize(ByVal fileSize As Double, ByVal fileKindSize As MagnitudeType, ByVal to_DiscKindCapacity As DiscType) As Double Dim size As Double = GetSize(to_DiscKindCapacity) If (size < 0) Then Throw New ArgumentException("Tamaño de disco no localizado") Return fileSize * DirectCast(fileKindSize, Integer) / size End Function Enum MagnitudeType Bytes = 1 KB = 1024 MB = 1048576 GB = 1073741824 End Enum Enum DiscType CD CD800 CD900 DVD DVD_DL BR BR_DL BR_3L BR_4L BR_MD BR_MD_DL End Enum Private Function GetSize(ByVal discType As DiscType) As Double Select Case discType Case DiscType.CD Return 737280000 ' CD Standard Case DiscType.CD800 Return 829440393.216 ' CD 800 MB Case DiscType.CD900 Return 912383803.392 ' CD 900 MB Case DiscType.DVD Return 4700000000 ' DVD Standard (DVD5 Case DiscType.DVD_DL Return 8500000000 ' DVD Double Layer (DVD9) Case DiscType.BR Return 25025314816 ' BluRay Standard Case DiscType.BR_DL Return 50050629632 ' BluRay Double Layer Case DiscType.BR_3L Return 100103356416 ' BluRay x3 Layers Case DiscType.BR_4L Return 128001769472 ' BluRay x4 Layers Case DiscType.BR_MD Return 7791181824 ' BluRay MiniDisc Standard Case DiscType.BR_MD_DL Return 15582363648 ' BluRay MiniDisc Double Layer Case Else Return -1 ' Por si se declara un nuevo valor en el enumerador sin especificar tamaño End Select End Function #End Region
Creo que por el momento es todo lo que se me ocurre, en otro momento vuelvo a mirar Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
@ NovluckerQue grande, antes de nada debo decir que para mi tus críticas o sugerencias (O ataques personales si se da el caos xD) son más que bien recibidas, y segundo, gracias por colocarle chincheta al tema (Quien haya sido xD), a ver si la gente se anima a compartir funciones/snippets. Voy por partes:
1. Sincéramente yo no le daba nada de importancia a definir el tipo de retorno de una función, ¿Porque?, pues no sé, quizás séa porque como muchas funciones las he hecho yo pues sé perfectamente que tipo de valor devuelven y no debo fijarme en esos detalles que comentas, o simplemente no le he dado importancia sin razón alguna, pero me lo has hecho ver de una manera en la que no me habia fijado, y te aseguro que estoy editando los 124 snippets definiendo el tipo de retorno de cada uno xD. Lo malo de esto, es que si declaro el tipo en boolean (Por ejemplo), entonces ya no puedo retornar el mensaje de la excepción (Return ex.message), ¿O si?.
2. Con tu modificación que le has hecho a la función de los atributos me has dejado loco! Diréctamente no la entiendo... Attributes.Select(Function(a) DirectCast(a, Integer)).Sum() De ahí lo único que entiendo es que modificas el valor "a" a tipo entero (no se lo que significa esa "a"), lo de "Select", "Function", y "Sum, ni idea XD Bueno, el método "Sum" ya he visto que crea una sequencia parecida a esto: Lo que equivale a los valores para cambiar los atributos, vale, pero el proceso que haces para llegar a generar esa secuencia... ni idea . Lo peor de todo es que no sé usar tu modificación de la función de atributos, es muy avanzada '¬¬ Así que mientras no me muestres un ejemplo de como usar tu función, la dejo así, que está mejor que la versión original y se asemeja al comando ATTRIB de la CMD, lo que me facilita un poco más su uso: #Region " Change File Attributes Function " ' [ Change File Attributes Function ] ' ' // By Elektro H@cker ' ' Examples : ' Change_File_Attributes("C:\File.txt", H + R) ' Change_File_Attributes("C:\File.txt", Hidden + Read_Only) Const Archive As Integer = 32, A As Integer = 32 Const Directory As Integer = 16, D As Integer = 16 Const Hidden As Integer = 2, H As Integer = 2 Const Normal As Integer = 0, N As Integer = 0 Const Read_Only As Integer = 1, R As Integer = 1 Const System As Integer = 4, S As Integer = 4 Const Volume As Integer = 8, V As Integer = 8 Private Function Change_File_Attributes (ByVal File As String, ByVal Attributes As System. IO. FileAttributes) As Boolean Try FileSystem. SetAttr(File, Attributes ) Return True ' File was modified OK Catch Return False ' File can't be modified maybe because User Permissions End Try Else Return Nothing ' File doesn't exist End If End Function #End Region
3. Tu modificación de la función de las capacidades de discos es inmejorable, Me doy cuenta que tengo que usar más las constantes y las enumeraciones si quiero perfeccionar y simplificar las cosas (Si te digo la verdad pensé que esa función no se podía simplificar más, hasta que he visto tu modificación xDDD, me kawen tó) Gracias por los consejos y un saludo
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Librería de Snippets en C/C++
« 1 2 3 4 »
Programación C/C++
|
z3nth10n
|
31
|
25,890
|
2 Agosto 2013, 17:13 pm
por 0xDani
|
|
|
[APORTE] [VBS] Snippets para manipular reglas de bloqueo del firewall de Windows
Scripting
|
Eleкtro
|
1
|
4,084
|
3 Febrero 2014, 20:19 pm
por Eleкtro
|
|
|
Librería de Snippets para Delphi
« 1 2 »
Programación General
|
crack81
|
15
|
21,166
|
25 Marzo 2016, 18:39 pm
por crack81
|
|
|
Una organización en Github para subir, proyectos, snippets y otros?
Sugerencias y dudas sobre el Foro
|
z3nth10n
|
0
|
3,074
|
21 Febrero 2017, 10:47 am
por z3nth10n
|
|
|
índice de la Librería de Snippets para VB.NET !!
.NET (C#, VB.NET, ASP)
|
Eleкtro
|
7
|
6,545
|
4 Julio 2018, 21:35 pm
por Eleкtro
|
|