|
571
|
Programación / .NET (C#, VB.NET, ASP) / ¿ Como preservar los cambios de un ArrayList en My.Settings ?
|
en: 30 Julio 2014, 17:08 pm
|
Buenas He acudido a varias personas del planeta para intentar resolver este problema de la manera idonea, pero por desgracia nadie ha podido aportarme algo de lúz a este misterio... Me gustaría usar la interface de My.Settings para poder implementar una MRU algo avanzada en una aplicación, cada entrada de la MRU debería contener una imagen (Bitmap), un índice (Int32), y una cadena (String), pero la interface My.Settings es incompatible con Types genéricos (Ej: Tuple(of Bitmap, Integer, String) ) así que el type que mejor se adapta a mis necesidades es un ArrayList, porque antes que ponerme a escribir una pequeña Class serializable para almacenar estos 3 datos insignificantes prefiero usar un ArrayList que ya está implementado, sinceramente. El problema es que los cambios que se efectuen a la propiedad no se preservan en los siguientes inicios de la aplicación ...y eso es lo que nadie me ha sabido resolver, yo por mi parte he probado todo lo que se me ha ocurrido, incluso la serialización del ArrayList pero he acabado echo un lio con eso. Teniendo en cuenta que tenemos una propiedad como esta (con el ArrayList inicializado o sin inicializar, ¡no importa!): Este código que he escrito demuestra el problema: Public Class Test Private Sub Test_Handler() Handles MyBase.Shown ' Create a temporal predefined ArrayList. Dim tmpArrayList As New ArrayList(capacity:=10I) With tmpArrayList .Add({"Item0", 0.0F}) .Add({"Item1", 0.5F}) End With ' Check the setting status. If My.Settings.MRU Is Nothing Then Debug. WriteLine("MRU setting is null.") Debug. WriteLine("Initializing the Setting...") My.Settings.MRU = New ArrayList(capacity:=10I) ElseIf Not My.Settings.MRU.Count Then Debug. WriteLine("MRU is not null but the ArrayList is empty.") Debug. WriteLine("Adding some items...") My.Settings.MRU = tmpArrayList.Clone ElseIf My.Settings.MRU.Count Then Debug. WriteLine("MRU setting is OK.") Debug. WriteLine("Item Count: " & CStr(My. Settings. MRU. Count)) Threading.Thread.Sleep(Integer.MaxValue) End If Debug. WriteLine("Saving any changes") My.Settings.Save() Debug. WriteLine("Updating any changes") My.Settings.Reload() Debug. WriteLine(String. Empty) Debug. WriteLine("****************************************") Debug. WriteLine("Checking again the MRU setting status in...") For Count As Integer = 1 To 3 Debug. WriteLine(CStr(Count ) & New String("."c, Count )) Threading.Thread.Sleep(TimeSpan.FromSeconds(1)) Next Debug. WriteLine("****************************************") Debug. WriteLine(String. Empty) Me.Test_Handler() End Sub End Class
¿Alguien conoce el motivo de porque ocurre esto, porque los cambios no se preservan en el siguiente inicio de la aplicación, y como poder solucionarlo?PD: Me gustaría dejar bien claro que conozco varios métodos o mejor dicho alternativas para conseguir hacer lo mismo (es decir, guardar un archivo de configuración legible por la app), pero yo me he propuesto hacer esto usando My.Settings debido a las ventajas y comodidades que ofrece, quiero encarecidamente intentar resolver este problema unicamente usando my.settings y conocer con exactitud el motivo de porque el ArrayList no se preserva, no busco alternativas ...pues ya las conozco.Gracias.
|
|
|
572
|
Foros Generales / Foro Libre / Ofrezco mis servicios de programación. ¿necesitas algo?, ¡pues hablemos de ello!
|
en: 26 Julio 2014, 09:44 am
|
Buenas Antes de nada me gustaría explicar el motivo que me ha llevado a redactar este post. Bien, durante mi estancia en esta magnifica página (han sido muchos años, esta no ha sido mi única cuenta) he visto como ciertos usuarios (no daré nombres por si se molestan) llegaron a anunciarse (por asi decirlo) en esta sección del Foro Libre publicando mensajes como este, para dar a conocer al mundo sus habilidades e intentar sacar un beneficio económico de ello haciendo lo que mejor saben hacer (¿os acordais de nuestro amigo **** ofreciendo video-clases de hacking o programacion?, pues a eso me refiero por ejemplo ). Por ese motivo espero de corazón que este mensaje no siente mal a ningún lector, usuario, moderador, o miembro del Staff, ya que hemos visto con el tiempo como varios mensajes de este estilo han sido aceptados por la moderación en su momento, aunque recuerdo que alguno fue más polémico que otro pero siempre en el buen sentido de la palabra (al menos así lo vi yo, en mi opinión). Para aquellas personas que no me conozcan, podeis deducir que se me conoce con el apodo de Eleкtro, pero mi nombre real es Christian (obviamente no iba a ser Eleкtro xD), tengo 27 años, y desde que descubrí la programación es algo que no ha dejado de sorprenderme y apasionarme ...cuanta belleza, aunque no me dedico a esto de forma profesional (en algún trabajo), pues he tenido que llevar las riendas de mi vida por senderos incompatibles. Y por si no os habeis dado cuenta, otra afición que tengo (otra pasión) es la de ejercer de moderador en varias (dos) secciones del foro, ¿porque comento esto?, pues porque a pesar de la ayuda que yo pueda ofrecer como moderador (recuerden que los moderadores no somos Dioses del conocimiento ni tenemos el Don de la clarividencia, somos personas con ganas de ayudar y mantener el orden), o la ayuda que cualquier otro usuario del foro pueda ofrecerle a una persona en 'apuros' que tenga dudas, muchas veces se puede dar el caso (y se ha dado) en el que la ayuda proporcionada no es suficiente para esa persona, ya que ciertas personas requieren mucho más que un pequeño empujón o que les muestres un largo código o ejemplos/documentación de otras páginas, eso no es suficiente para ellos y necesitan ayuda "especial" para elaborar una tarea compleja (o simplemente "grande") la cual llevaría bastante tiempo (días, semanas o puede que meses), y eso implicaría una labor personal mucho más profunda y una inversión de tiempo mucho mayor que la obligación que pueda tener un moderador o cualquier otro usuario con esa persona en particular, y ahí es a donde quiero llegaros con mi mensaje, esa es la razón de todo esto. Si tienes cualquier duda en lo que se refiere a la programación, ¡no dudes en formular tu pregunta en el foro!, yo mismo o cualquier otra persona capacitada estará encantada de intentar ayudarte, pero si la ayuda que te propocionen no te satisface lo suficiente entonces escucha lo que tengo que decirte a continuación... · ¿Que servicios puedo ofrecerte?Ofrezco mis (humildes) conocimientos de programación para evitarte la frustración de llevar a cabo la investigación y el desarrollo de Scripts y/o aplicaciones de escritorio (para Windows), para poder realizar practicamente casi cualquier tipo de tarea, desde algo simple como pudiera ser un analizador de texto (un parser), hasta un complejo taller casero enfocado en la edición/manipulación de video, el límite solo lo impones tú y mis conocimientos, soy una persona honesta y si veo que tu petición está fuera de mi alcance, te lo diré al instante, al igual que si considero que no estoy del todo cualificado para desarrollar "X" tarea pero solo necesitase instruirme un poco más en el tema para poder cumplir tus necesidades, también te lo diré para esperar unos días y proseguir con el tema. Soy capaz de desarrollar tanto aplicaciones con interfaz gráfica ( GUI) como de consola ( CLI), a elección del cliente [1]. Nota: Las imágenes de arriba tienen el único fín de demostrar la diferencia entre interfaces, los proyectos no son de mi propiedad. [1]: En ciertas circunstancias podría depender unicamente de las necesidades de la aplicación, ya que por ejemplo sería imposible mostrar una imagen en la consola. · ¿En que lenguajes puedo hacerlo?Para el desarrollo de aplicaciones con interfaz gráfica usaré estríctamente VB.NET, para el desarrollo de aplicaciones con interfaz por linea de comandos, en caso de que no fuese un detalle que tuviera importancia para el cliente, también usaré VB.NET. Si necesitas elaborar trabajos en los otros lenguajes mencionados, podemos hablar de ello. Nota: Estoy acostumbaro al uso de HTML en ciertos aspectos y puedo desarrollar aplicaciones que intervengan/interactuen de forma general con 'la web' (navegación, edición, etc), pero son eso ...aplicaciones de escritorio, yo no manejo ningún lenguaje relacionado con la programación a nivel web, porfavor, abstenerse de pedirme cosas del tipo " necesito un código para implementarlo en mi web". [1]: No estoy cualificado para desarrollar códigos complejos en este lenguaje, pero forma parte de Microsoft.NET y esto quiere decir que se puede llevar a cabo y entregarte una traducción literal desde VB.NET, siempre que puedas estar conforme con este detalle. · ¿Que te ofrezco en la entrega del proyecto?- El código fuente junto a las librerías privadas (de pago) de terceros que haya utilizado (si alguna).
Además, de forma gratuita y adicional: - La aplicación compilada, junto a una versión protegida de la misma (ofuscada), una versión portátil (portable), y una versión instalable (de Inno Setup install-builder). [1]
- Un video-presentación demostrando las características de la aplicación.
- Documentación completa del código fuente, explicando el uso o la finalidad de todos los miembros existentes del código.
- Archivo de documentación de la aplicación, en formato CHM (Microsoft HTML Help 1). [2]
- Archivo de texto con unas breves instrucciones de uso (especialmente para aplicaciones de consola).
- Certificado digital casero (y sin caducidad) para autorizar el uso de la aplicación en un equipo. [2]
- Soporte gratis para solucionar posibles problemas (bugs) durante los 365 días del año, para siempre. [3]
Nota: Si no requieres la elaboración de alguna de las características adicionales y prefieres prescindir de alguna (o incluso todas), me harías un gran favor al comunicarmelo, ya que esto ayudaría a reducir el tiempo de entrega de tu proyecto.[1]: Si el trabajo trata sobre el desarrollo de un script, la compilación solo podrá ser una mera conversión a .exe realizada con el respectivo empaquetador, y no enviaré una versión protegida. [2]: Característica disponible solo para el desarrollo de aplicaciones de escritorio (No Scripting). [3]: Entiendase que añadir nuevas características o cambiar su función actual no se considera un Bug. · ¿Como va esto?No cobro por horas, ni tampoco tengo un precio fijo, pero el precio mínimo que pediré por la elaboración de proyectos simples serán 5€ (menos no puedo pedir, tengo que rentabilizar el tiempo invertido para comer), para todo lo demás llegariamos a un acuerdo (económico) dependiendo de la complejidad de la tarea a realizar y el tiempo de entrega a cumplir o el tiempo de elaboración que yo necesitase invertir en un principio para finalizar el proyecto. En elaboraciones complejas que requiriesen más de 2 días de desarrollo, yo mantendría al cliente informado del progreso mediante la información de contacto que éste me haya entregado, y si el tiempo me lo permitiese sería con algún video-demostrativo del progreso y por supuesto también enviaría imágenes del proyecto, ya que la desconfianza es algo que puede crear problemas y a mi no me cuesta nada enseñar el progreso para evitar posibles malas caras o miradas. Al finalizar el proyecto, el cliente depositaría la cantidad de dinero acordada en una cuenta de Paypal que previamente yo le habré proporcionado (el cliente puede abonar el dinero antes de la entrega si así lo prefiere), y entonces se le entregaría una url de descarga del proyecto junto a todas las características adicionales que he comentado anteriormente. · ¿Hay condiciones?Sí, las hay, malas experiencias en el pasado por alguna que otra persona aprovechada me han llevado a condicionar los servicios que ofrezco para evitar cualquier tipo de conflicto entre nosotros: - Por motivos que deberían ser evidentes, no tendré en cuenta peticiones de códigos/aplicaciones con fines delictivaos.
- Bajo ninguna circunstancia entregaré el proyecto finalizado antes de recibir la suma de dinero acordada.
- La forma de pago deberá ser mediante el servicio de Paypal, y la moneda de pago en Euros, no hago ningún tipo de rebajas por vivir en otros paises cuya economía sea pobre.
· ¿Como contactar conmigo?La publicación de información personal está phohibida en el foro, así que porfavor en caso de querer llegar a un acuero conmigo no publicar nada que pueda perjudicar su cuenta, hacer el favor de ponerse en contacto conmigo enviándome un mensaje privado por el foro. PD: De todas formas mi email está visible al público en mi perfil de usuario, leeré al mismo tiempo tanto los mensajes que puedan llegar a mi cuenta de correo personal, como a mi cuenta de @ElHacker.net. ¡Un saludo! Eleкtro
|
|
|
573
|
Informática / Hardware / ¿Que métodos hay para refrigerar un HDD Sata?
|
en: 22 Julio 2014, 19:21 pm
|
Hola Las temperaturas de mis hdd ahora en verano están entre 45º-49º (tanto los hdd activos como los inactivos) y me gustaría refrigerarlos en la medida de lo posible... Tengo 4 Hdd's, cada uno está "pegado" al otro, es decir hay 4 compartimentos, pues 4 hdd's con el espacio mínimo entre cada compartimento, y lo único que encuentro respecto a la ventilación de HDD es este artículo: http://www.pccomponentes.com/scythe_ita_kaze_slim_hard_disk_cooler.htmlSoy inexperto en el tema, nunca he comprado ese tipo de ventilador ni lo he visto en un PC. · ¿Pueden surgir complicaciones por no haber el suficiente hueco entre mis hdd's? · ¿Un ventilador de los normales se supone que también serviría de la misma manera? No se, espero cualquier tipo de consejo. un saludo!
|
|
|
574
|
Programación / .NET (C#, VB.NET, ASP) / [APORTE] FileDater (Preserva, establece, o restaura las fechas de un archivo)
|
en: 22 Julio 2014, 05:34 am
|
Esta Class sirve para preservar una o todas las fechas de un archivo para poder restaurarlas en cualquier otro momento, me parece muy útil para modificar archivos los cuales no quieres que sus fechas actuales se alteren después de la modificación... y con este " ayudante" ahorrarás tiempo y escritura de código. Esta Class también sirve para establecer fechas en un archivo (aunque esa característica simplemente está ahí para decorar, para extender un poco su funcionalidad). Nota: En la Class podrán notar que le añadí la implementación de la interface IDisposable, en un principio esto podría parecer innecesario, pero la añadí para evitar el poder crear instancias que usen el mismo archivo, ya que no le encuentro sentido alguno al permitir estar preservando/restaurando las fechas de un mismo archivo en distintas instancias y esto podría ocasionar confusiones además de un uso indebido, y además, de esta forma el uso de los bloques Using también pueden prevenir algún que otro descuido. Espero que a alguien le sirva .
Ejemplo de uso: 1. ' Instance the FileDater Class. Using fd As New FileDater (File: ="C:\Test File.txt") ' Preserve the current date-modified of the file. fd.Preserve(FileDater.DateType.Modified) ' Do some kind of operation that alters the current date-modified of the file. IO. File. AppendAllText(fd. File. FullName, New String("X"c, 10I )) ' Restore the previously preserved date-modified on the TestFile. fd.Restore(FileDater.DateType.Modified) End Using '/ fd
2. ' Instance a test FileInfo using an unique temp file. Dim TestFile As New IO.FileInfo(IO.Path.GetTempFileName) ' Instance the FileDater Class. Using fd As New FileDater (File: =TestFile ) ' Preserve the current dates of the TestFile. fd.Preserve(FileDater.DateType.Created Or FileDater.DateType.Accessed Or FileDater.DateType.Modified) ' Show the type of the current preserved dates. MessageBox.Show(fd.PreservedTypes.ToString) ' Show current preserved date-creation. MessageBox.Show(fd.PreservedCreationDate.ToString) ' Modify the current date-creation on the TestFile. fd.Set(FileDater.DateType.Created, Date.Parse("01/01/2015")) ' Restore the previously preserved date-creation on the TestFile. fd.Restore(FileDater.DateType.Created) ' Show the current Creation date of the TestFile. MessageBox.Show(TestFile.CreationTime) End Using
El código: ' *********************************************************************** ' Author : Elektro ' Modified : 07-22-2014 ' *********************************************************************** ' <copyright file="FileDater.vb" company="Elektro Studios"> ' Copyright (c) Elektro Studios. All rights reserved. ' </copyright> ' *********************************************************************** #Region " Usage Examples " #Region " Example 1 " '' Instance the FileDater Class. 'Using fd As New FileDater(File:="C:\Test File.txt") ' ' Preserve the current date-modified of the file. ' fd.Preserve(FileDater.DateType.Modified) ' ' Do some kind of operation that alters the current date-modified of the file. ' IO.File.AppendAllText(fd.File.FullName, New String("X"c, 10I)) ' ' Restore the previously preserved date-modified on the TestFile. ' fd.Restore(FileDater.DateType.Modified) 'End Using '/ fd #End Region #Region " Example 2 " '' Instance a test FileInfo using an unique temp file. 'Dim TestFile As New IO.FileInfo(IO.Path.GetTempFileName) '' Instance the FileDater Class. 'Using fd As New FileDater(File:=TestFile) ' ' Preserve the current dates of the TestFile. ' fd.Preserve(FileDater.DateType.Created Or FileDater.DateType.Accessed Or FileDater.DateType.Modified) ' ' Show the type of the current preserved dates. ' MessageBox.Show(fd.PreservedTypes.ToString) ' ' Show current preserved date-creation. ' MessageBox.Show(fd.PreservedCreationDate.ToString) ' ' Modify the current date-creation on the TestFile. ' fd.Set(FileDater.DateType.Created, Date.Parse("01/01/2015")) ' ' Restore the previously preserved date-creation on the TestFile. ' fd.Restore(FileDater.DateType.Created) ' ' Show the current Creation date of the TestFile. ' MessageBox.Show(TestFile.CreationTime) 'End Using #End Region #End Region #Region " Imports " Imports System.ComponentModel Imports System.IO #End Region #Region " FileDater " ''' <summary> ''' Contains methods to preserve, set, and restore the dates contained on file. ''' </summary> Public NotInheritable Class FileDater : Implements IDisposable #Region " Objects " ''' <summary> ''' Contains the files that are already used in the constructor to prevent a duplicated instance for the same file. ''' </summary> Private Shared InstancedFiles As New List(Of FileInfo) #End Region #Region " Properties " ''' <summary> ''' Gets the file. ''' </summary> ''' <value>The file.</value> Public ReadOnly Property [File] As FileInfo Get Return Me._File End Get End Property Private _File As FileInfo ''' <summary> ''' Gets the type of the current preserved dates. ''' </summary> Public ReadOnly Property PreservedTypes As DateType Get Return Me._PreservedTypes End Get End Property Private _PreservedTypes As DateType = Nothing ''' <summary> ''' Gets the preserved creation date. ''' </summary> ''' <value>The preserved creation date.</value> Public ReadOnly Property PreservedCreationDate As Date Get Return Me._PreservedCreationDate End Get End Property Private _PreservedCreationDate As Date ''' <summary> ''' Gets the preserved last-access date. ''' </summary> ''' <value>The preserved creation date.</value> Public ReadOnly Property PreservedLastAccessDate As Date Get Return Me._PreservedLastAccessDate End Get End Property Private _PreservedLastAccessDate As Date ''' <summary> ''' Gets the preserved last-modify date. ''' </summary> ''' <value>The preserved creation date.</value> Public ReadOnly Property PreservedLastModifyDate As Date Get Return Me._PreservedLastModifyDate End Get End Property Private _PreservedLastModifyDate As Date #End Region #Region " Enumerations " ''' <summary> ''' Contains a FileDate flag. ''' </summary> <FlagsAttribute> Public Enum DateType As Integer ''' <summary> ''' The date when the file was created. ''' </summary> Created = 1I ''' <summary> ''' The date when the file was accessed by last time. ''' </summary> Accessed = 2I ''' <summary> ''' The date when the file was modified by last time. ''' </summary> Modified = 4I End Enum #End Region #Region " Constructors " ''' <summary> ''' Initializes a new instance of the <see cref="FileDater"/> class. ''' </summary> ''' <param name="File">Indicates the <see cref="FileInfo"/> instance.</param> ''' <exception cref="System.Exception"></exception> Public Sub New(ByVal [File] As FileInfo ) If Not InstancedFiles. Contains([File]) Then InstancedFiles. Add([File]) Else Throw New Exception(String.Format("Another instance of the '{0}' class is using the same file.", MyBase.GetType.Name)) End If End Sub ''' <summary> ''' Initializes a new instance of the <see cref="FileDater"/> class. ''' </summary> ''' <param name="File">Indicates the file.</param> Public Sub New(ByVal [File] As String) Me. New(New FileInfo ([File])) End Sub ''' <summary> ''' Prevents a default instance of the <see cref="FileDater"/> class from being created. ''' </summary> Private Sub New() End Sub #End Region #Region " Hidden Methods " ''' <summary> ''' Serves as a hash function for a particular type. ''' </summary> <EditorBrowsable(EditorBrowsableState.Never)> Public Shadows Sub GetHashCode() End Sub ''' <summary> ''' Determines whether the specified System.Object instances are considered equal. ''' </summary> <EditorBrowsable(EditorBrowsableState.Never)> Public Shadows Sub Equals() End Sub ''' <summary> ''' Determines whether the specified System.Object instances are the same instance. ''' </summary> <EditorBrowsable(EditorBrowsableState.Never)> Private Shadows Sub ReferenceEquals() End Sub ''' <summary> ''' Returns a String that represents the current object. ''' </summary> <EditorBrowsable(EditorBrowsableState.Never)> Public Shadows Sub ToString() End Sub #End Region #Region " Public Methods " ''' <summary> ''' Preserves the specified dates of the file to restore them later at any time. ''' Note: Dates can be preserved again at any time. ''' </summary> ''' <param name="DateType">Indicates the type of dates to preserve.</param> Public Sub Preserve(ByVal DateType As DateType) Me.DisposedCheck() ' Creation If DateType.HasFlag(FileDater.DateType.Created) Then Me._PreservedCreationDate = Me._File.CreationTime End If ' Accessed If DateType.HasFlag(FileDater.DateType.Accessed) Then Me._PreservedLastAccessDate = Me._File.LastAccessTime End If ' Modified If DateType.HasFlag(FileDater.DateType.Modified) Then Me._PreservedLastModifyDate = Me._File.LastWriteTime End If Me._PreservedTypes = DateType End Sub ''' <summary> ''' Preserves at once all the dates of the file to restore them later at any time. ''' Note: Dates can be preserved again at any time. ''' </summary> Public Sub Preserve() Me.DisposedCheck() Me._PreservedCreationDate = Me._File.CreationTime Me._PreservedLastAccessDate = Me._File.LastAccessTime Me._PreservedLastModifyDate = Me._File.LastWriteTime Me._PreservedTypes = DateType.Created Or DateType.Accessed Or DateType.Modified End Sub ''' <summary> ''' Restores the specified preserved dates on the file. ''' Note: Calling this method does not cause the deletion of any preserved date. ''' </summary> ''' <param name="DateType">Indicates the type of dates to restore on the file.</param> ''' <exception cref="System.Exception">Any date was preserved.</exception> Public Sub Restore(ByVal DateType As DateType) Me.DisposedCheck() ' Creation If DateType.HasFlag(FileDater.DateType.Created) _ AndAlso Me._PreservedTypes.HasFlag(FileDater.DateType.Created) Then Me._File.CreationTime = Me._PreservedCreationDate ElseIf DateType.HasFlag(FileDater.DateType.Created) _ AndAlso Not Me._PreservedTypes.HasFlag(FileDater.DateType.Created) Then Throw New Exception(String.Format("The specified date was not preserved.")) With { .Source = FileDater.DateType.Created.ToString } End If ' Accessed If DateType.HasFlag(FileDater.DateType.Accessed) _ AndAlso Me._PreservedTypes.HasFlag(FileDater.DateType.Accessed) Then Me._File.LastAccessTime = Me._PreservedLastAccessDate ElseIf DateType.HasFlag(FileDater.DateType.Accessed) _ AndAlso Not Me._PreservedTypes.HasFlag(FileDater.DateType.Accessed) Then Throw New Exception(String.Format("The specified date was not preserved.")) With { .Source = FileDater.DateType.Accessed.ToString } End If ' Modified If DateType.HasFlag(FileDater.DateType.Modified) _ AndAlso Me._PreservedTypes.HasFlag(FileDater.DateType.Modified) Then Me._File.LastWriteTime = Me._PreservedLastModifyDate ElseIf DateType.HasFlag(FileDater.DateType.Modified) _ AndAlso Not Me._PreservedTypes.HasFlag(FileDater.DateType.Modified) Then Throw New Exception(String.Format("The specified date was not preserved.")) With { .Source = FileDater.DateType.Modified.ToString } End If End Sub ''' <summary> ''' Restores at once all the preserved dates on the file. ''' Note: Calling this method does not cause the deletion of any preserved date. ''' </summary> Public Sub Restore() Me.DisposedCheck() ' Creation If Me._PreservedTypes.HasFlag(FileDater.DateType.Created) Then Me._File.CreationTime = Me._PreservedCreationDate End If ' Accessed If Me._PreservedTypes.HasFlag(FileDater.DateType.Accessed) Then Me._File.LastAccessTime = Me._PreservedLastAccessDate End If ' Modified If Me._PreservedTypes.HasFlag(FileDater.DateType.Modified) Then Me._File.LastWriteTime = Me._PreservedLastModifyDate End If End Sub ''' <summary> ''' Sets the specified dates on the file. ''' Note: ''' Calling this method does not cause the deletion of any preserved date. ''' After setting a date, must call once the <see cref="Preserve"/> method if want to preserve any new date established. ''' </summary> ''' <param name="DateType">Indicates the type of dates to set on the file.</param> ''' <param name="Date">Indicates the date.</param> Public Sub [Set](ByVal DateType As DateType, ByVal [Date] As Date) Me.DisposedCheck() ' Creation If DateType.HasFlag(FileDater.DateType.Created) Then Me._File.CreationTime = [Date] End If ' Accessed If DateType.HasFlag(FileDater.DateType.Accessed) Then Me._File.LastAccessTime = [Date] End If ' Modified If DateType.HasFlag(FileDater.DateType.Modified) Then Me._File.LastWriteTime = [Date] End If End Sub ''' <summary> ''' Sets at once all the dates on the file. ''' Note: ''' Calling this method does not cause the deletion of any preserved date. ''' After setting a date, must call once the <see cref="Preserve"/> method if want to preserve any new date established. ''' </summary> ''' <param name="Date">Indicates the date.</param> Public Sub [Set](ByVal [Date] As Date) Me.DisposedCheck() Me._File.CreationTime = [Date] Me._File.LastAccessTime = [Date] Me._File.LastWriteTime = [Date] End Sub #End Region #Region " IDisposable " ''' <summary> ''' To detect redundant calls when disposing. ''' </summary> Private IsDisposed As Boolean = False ''' <summary> ''' Prevent calls to methods after disposing. ''' </summary> ''' <exception cref="System.ObjectDisposedException"></exception> Private Sub DisposedCheck() If Me.IsDisposed Then Throw New ObjectDisposedException(Me.GetType().FullName) End If End Sub ''' <summary> ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. ''' </summary> Public Sub Dispose() Implements IDisposable.Dispose Dispose(True) GC.SuppressFinalize(Me) End Sub ''' <summary> ''' Releases unmanaged and - optionally - managed resources. ''' </summary> ''' <param name="IsDisposing"> ''' <c>true</c> to release both managed and unmanaged resources; ''' <c>false</c> to release only unmanaged resources. ''' </param> Protected Sub Dispose(ByVal IsDisposing As Boolean) If Not Me.IsDisposed Then If IsDisposing Then InstancedFiles.Remove(Me._File) End If End If Me.IsDisposed = True End Sub #End Region End Class #End Region
|
|
|
575
|
Programación / .NET (C#, VB.NET, ASP) / [APORTE] Multimedia Playlist Editor (M3U y PLS)
|
en: 22 Julio 2014, 02:04 am
|
Hola Comparto esta Class cuya finalidad es la de administrar las pistas de una lista multimedia. Para quien no sepa lo que es una lista multimedia, son unos archivos de texto plano que utilizan los reproductores de archivos multimedia (Video/Audio) para crear listas de reproducción. Estas son ejemplos de los tipos de listas que soporta mi Class: M3U: #EXTM3U
#EXTINF:330,Track1 Title C:\Track1.avi
C:\Track2.mp4
#EXTINF:5720,Track3 Title C:\Track3.mp3 PLS: [playlist] NumberOfEntries=3 Version=2
File1=C:/Track1.avi
File2=C:/Track2.mp4 Title2=My Track2 Title! Length2=5720
File3=C:/Track3.mp3 Title3=My Track3 Title! Length3=330 Características del código:· Se puede trabajar con dos tipos de listas, M3U y PLS. · Se puede añadir entradas de pistas con o sin información extendida, así como editar una entrada, eliminar, determinar si existe, o buscar para obtener la información extendida de una pista. · La mayoría de los métodos que desarrollé tienen overloads para trabajar pasandole o bien la ruta de la pista, o el índice de la pista (primero hay que conocer el índice, claro). El código en general no creo que me haya quedado muy optimizado, de echo tengo que evitar la recursividad de algún que otro método, pero por el momento está bien y hace su función, aunque si encuentran cualquier fallo o cualquier sugerencia que quieran hacer entonces porfavor comenten. PD: No he añadido muchos controles de errores, ya que he supuesto que si se le da el uso correcto no debería dar errores (más hallá de los que sí están controlados). PD2: Al principio me propuse hacerlo todo mediante FileStreams y manteniendo el archivo abierto para denegar el acceso manual al archivo, pero el formato PLS me lo puso muy complicado porque hay que hacer operaciones constantes de búsqueda y modificar un valor tras cada operación así que para no comerme mucho más la cabeza decidí usar un StringBuilder y también listas de Strings, sin más, dejando un poco de lado los permisos de lectura/escritura del archivo del playlist y tambien el rendimiento en general ...los tiempos de ejecución, pero de todas formas recordemos que se trataría de un simple archivo de texto que no debería tener muchas lineas, aunque se optimizase el código no creo que se apreciase la diferencia (en milisegundos xD)...
Estos son algunos ejemplos de uso: ' ********************************** ' Instance the PlaylistEditor Class ' ********************************** Dim Playlist As New PlaylistEditor(PlaylistFile:="C:\Playlist.m3u", PlaylistType:=PlaylistEditor.PlaylistType.M3U, Append:=False, FileEncoding:=System.Text.Encoding.Default) ' ************************************ ' Retrieve the instanced object info ' ************************************ MessageBox.Show(Playlist.FilePath) MessageBox.Show(Playlist.Type.ToString) MessageBox.Show(CStr(Playlist.Append)) MessageBox.Show(String.Format("Encoding: {0}, CodePage: {1}", Playlist.FileEncoding.BodyName, Playlist.FileEncoding.CodePage)) ' *************************** ' Instance a TrackInfo Class ' *************************** Dim TInfo As New PlaylistEditor.TrackInfo With TInfo .Path = "C:\Track1.ext" .Title = "Track1 Title" .Length = TimeSpan.Parse("00:05:30") End With ' *************** ' Add a new track ' *************** Playlist.Add(TrackInfo:=TInfo) Playlist.Add(Path:="C:\Track2.ext", AllowDuplicate:=False) Playlist.Add(Path:="C:\Track3.ext", Title:="Track3 Title", Length:=TimeSpan.Parse("01:35:20")) ' ************************************************* ' Sets the extended track info of an existing track ' ************************************************* Dim OldTrackPath As String = "C:\Track3.ext" Dim TInfoSet As New PlaylistEditor.TrackInfo With TInfoSet .Path = "C:\Modified Track3.ext" .Title = "My modified Track3 title" .Length = Playlist.GetTrack(OldTrackPath).Length End With Playlist.Set(Path:=OldTrackPath, TrackInfo:=TInfoSet) ' ************************ ' Remove an existing track ' ************************ Playlist.Remove(Path:="C:\Track3.ext") Playlist.Remove(TrackIndex:=2I) ' ******************************** ' Determine whether a track exists ' ******************************** MessageBox.Show(Playlist.Exist(Path:="C:\Track3.ext")) MessageBox.Show(Playlist.Exist(TrackIndex:=3I)) ' ************************************************ ' Count the total amount of tracks in the playlist ' ************************************************ MessageBox.Show(Playlist.Count) ' ************************************ ' Get extended track info from a track ' ************************************ Dim TrackInfo1 As PlaylistEditor.TrackInfo = Playlist.GetTrack(Path:="C:\Track1.ext") Dim TrackInfo2 As PlaylistEditor.TrackInfo = Playlist.GetTrack(TrackIndex:=2I) ' ****************************************** ' Get all tracks and its extended track info ' ****************************************** Dim sb As New System.Text.StringBuilder Dim Tracks As List(Of PlaylistEditor.TrackInfo) = Playlist.GetTracks() For Each Track As PlaylistEditor.TrackInfo In Tracks With sb .Clear() .AppendLine(String.Format("Track Index : {0}", CStr(Track.Index))) .AppendLine(String.Format("Track Path : {0}", Track.Path)) .AppendLine(String.Format("Track Title : {0}", Track.Title)) .AppendLine(String.Format("Track Length: {0}", Convert.ToString(Track.Length))) End With MessageBox.Show(sb.ToString) Next Track
|
|
|
576
|
Informática / Hardware / Problemón con mi PC, ¿será el disipador o la ram? :(
|
en: 14 Julio 2014, 19:54 pm
|
Hola A ver, no se como iniciar este post... porque realmente no sé cual podrá ser el problema, así que simplemente contaré la anécdota tal cual sin dejarme ningún detalle. Hace unos pocos días realicé un pedido a una tienda, adquirí un disipador + cooler para mi AMD Socket AM3+ (porque el ruido del cooler de fábrica era INSOPORTABLE), y una memoria RAM (simplemente para llenar una ranura más), estos son los productos que compré: · Cooler Master Hyper 212 EVO· Kingston HyperX Genesis DDR3 1866 PC3-14900 4GB (1x4GB)CL10Y esta es la RAM que yo tenia antes de hacer la compra (tengo 2 tarjetas de estas): · Kingston HyperX Beast DDR3 1866 PC3-14900 8GB 2X4GB CL9 (Porfavor, mirar las especificaciones de las 2 tarjetas por si encontrais algún conflicto) Vale, hoy me puse a montar el disipa pero es GIGANTE así que la tarjeta RAM que habia en la primera ranura no me cabia y entonces de las dos tarjetas RAM que yo ya tenia tuve que moverlas una ranura a la derecha, y coloqué la nueva RAM a la derecha de estas, osea, así: Rojo: Disipador Verde: Ranuras RAM, las 3 de la derecha están ocupadas, la primera está vacía ...u ocupada por el disipador, según se mire xD. Terminé de colocar todo, encendí el PC y me empezó a pitar! El pitido era 1 solo, es decir 1 pitido corto, y no se veía el panel de la Bios ni nada, simplemente hacia 1 pitido y nada más ...hasta que lo volviese a encender. Pensé que pude haberla cagado al instalar el disipador, o la ram, o que me dejé algún cable suelto, yo que sé!, pero me puse a desconectar componentes hasta intentar hallar el problema, y al parecer, repito, AL PARECER se trata de la RAM, pero no la nueva, tocate los... sino la antigua!
La cosa está así según las pruebas que he realizado, lo explicaré con imágenes: Azul = Kingston HyperX Verde = Kingston HyperBeast Blanco = Ranura vacía o también o también o también Al encender el PC, después de unos pocos segundos se pone a hacer 1 pitido largo y 3 o 4 cortos, y lo repite 1 vez, luego no hace nada más, no me deja proseguir el Boot y tengo que apagarlo, eso si te deja apagarlo, porque a veces por más que mantenga pulsado el botón de apagado no se apaga xD. o también Al encender el PC me hace 1 pitido corto y la BIOS me lanza una pantalla extraña durante 1 segundo (no me da tiempo a leer lo que pone, pero nunca me habia salido dicha pantalla así que me parece que puede haber algún error), pero el Boot prosigue y puedo iniciar sesión (estoy escribiendo ahora mismo gracias a esa configuración de tarjetas). ¿Alguien tiene idea de lo que le ha podido pasar a mi PC?
¿En que página se podía mirar lo que significada "X" cantidad de Beeps al bootear?, ya que si no recuerdo mal, cada Beep corto y largo estaba relacionado con un problema específico.
¿Quizás hay algún conflicto entre la nueva y la vieja RAM?, ¿pero entonces porque si dejo solo la vieja RAM sigue sin funcionar?.
¿Es necesario que exista una tarjeta acoplada en la PRIMERA ranura para que bootee el PC?, ya que eso contestaría a lo de que el PC no me vaya con la antigua RAM (ya que no cabe en la primera ranura así que no la puedo poner ahí)PD: Eso si, estoy contentisimo con el nuevo disipador, apenas hace ruido. EDITO:Respecto a los beepcodes, me he estado informando y parece que para cada bios/uefi es diferente, mi placa base es una: Asus M5A97 LE R2.0 - 90-MIBJP0-G0EAY0MZ AMD Socket AM3EDITO 2:Temperaturas actuales: CPU: 26º Placa base: 41º Gráfica: 41º HDD's: entre 35º y 45º
|
|
|
577
|
Informática / Hardware / Duda pasta térmica
|
en: 9 Julio 2014, 12:37 pm
|
Hola
Tengo una duda muy básica, ¿la paste térmica, se pone encima de la pasta ya existente?, ¿sin más?.
Es decir, yo me he comprado un AMD que tiene su pasta térmica puesta ya de serie (como es obvio xD) con su ventilador y tal encima, bien, yo me he comprado un ventildor para reemplazar el de serie, que además trae pasta térmica, y yo sé desanclar y montar un ventilador de CPU, pero no se nada al respecto de la pasta térmica, osea de la capa blanca del disipador (porque pasta térmica / disipador es lo mismo no?), ¿es tan sencillo como echar una capa por encima de la pasta que ya trae puesta el chipset?, ¿y como cuanta cantidad de debe poner?, no la quiero cagar, vaya, ¿pasaría algo grave si pongo demasiada pasta sin querer?.
Necesito palabras textuales que me aclaren esta duda, pero además de esto me gustaria que alguien pudiera compartir un video donde enseñen el montaje correcto de la pasta térmica (fotos no, porfavor, que ya vi unas cuantas y sigo sin aclararme).
Gracias por leer, Esaludos!
|
|
|
578
|
Informática / Hardware / ¿ Cooler bueno, económico, y silencioso para CPU AMD Socket AM3+ ?
|
en: 7 Julio 2014, 10:36 am
|
Hola
Tengo una CPU AMD FX-8350 Socket AM3+ (942) y hace un ruido insoportable a la hora de reproducir video, o jugar a algún juego, a pesar de haber activado el modo "silencioso" en mi UEFI, hace demasiado ruido... como si fuese una X-Box frita (de las antiguas) xD.
Otro problema relacionado es que, ahora con la calor que hace, la CPU llega a cierta temperatura y se apaga el PC, supongo que la razón de que se apague por si solo sea porque la temp. llega al máximo permitido por el "detector" de fábrica de la CPU, ya que si no me equivoco, todas las CPU tienen un "detector" de temperaturas para apagar el PC si este llega al límite permitido y así prevenir fallos graves por altas temperaturas. (no sé exactamente la temp., ya que sucede cuando estoy inmerso en un juego así que no me da tiempo a comprobar la temp cuando se apaga el PC)
Lo de la temperatura no me resulta muy necesario arreglarlo porque juego poco así que puedo esperar a que llegue el invierno para que no de más fallos, además, a pesar de haber leido un tutorial con imagenes hace tiempo, no se cambiarle la pasta térmica ni tampoco se cuanto vale que te lo hagan en una tienda (me vendría bien conocer ese dato para no ir a preguntarles xD), así que me centraré en el ruido del ventilador, que eso si que es intolerable.
Tengo 3 ventiladores, el de la GPU, el de la CPU, y uno trasero, de todos he comprobado que el ventilador ruidoso es el de la CPU (es el que viene de fábrica).
Así que, ¿alguien me puede recomendar un buen ventilador para un Socker AM3+, que además de ser bueno sea económico y no llegue a los decibelios del sonido que hace una maldita motosierra?
Y otra duda que tengo, ¿cambiarle la pasta térmica tendría algún efecto positivo respecto al ruido del ventilador integrado?.
Y estoy abierto a otro tipo de sugerencias, por ejemplo... ¿necesito más ventiladores adicionales en la parte trasera del PC?, se que eso ayudaría a que se calentase menos pero... ¿haria mucho más ruido?.
¡Gracias!
Saludos. Elektro.
|
|
|
579
|
Foros Generales / Dudas Generales / ¿Se puede hacer una query a esta página para que me muestre el...?
|
en: 5 Julio 2014, 19:28 pm
|
Buenas En esta página, al pulsar el botón " Entrar", se carga aleatoriamente (o eso parece) 1 test de 4 posibles tests, bien, mi pregunta es: ¿alguien podría comprobar si se le puede especificar una query en la dirección para mostrar el test que yo quiera de los 4 que son?. He comprobado las peticiones de tipo GET con Firebug, pero no he encontrado nada, aunque mi ojo no es experto para estas cosas, por eso pido la ayuda de alguien con experiencia... También me he repasado el código fuente de la página, y me llama la atención el método " cargarExamen", pero ya intenté lo siguiente en vano xD: https://sedeapl.dgt.gob.es/WEB_EXAM_AUTO/examen/examen.jsp?cargarExamen=1PD: De paso no me vendría nada mal que alguien me explicase, en caso de poder realizar la query, que herramienta se puede usar para tracear de forma sencilla este tipo de querys o lo que se me ha pasado por alto mirar en Firebug. Gracias de antemano Saludos!
|
|
|
580
|
Programación / .NET (C#, VB.NET, ASP) / [SOURCE] Skype Persistence Changer
|
en: 28 Junio 2014, 23:50 pm
|
DESCRIPCIÓN:Una amiga me pidió que la ayudase a conseguir mantener la ventana del Skype siempre encima (por sus motivos personales), así que acabé desarrollando una pequeña utilidad con esa finalidad. NOTA: No llevaré a cabo ninguna sugerencia para esta aplicación, se le pueden añadir mejoras como un icono en el systray, o usar la WinAPI para un mejor método de tección (por el nombre de la Class de la ventana del Chat en lugar de monitorizar el proceso), pero no me resulta necesario. IMÁGENES: DESCARGA:http://www.mediafire.com/?6j129hf0t01i3ypIncluye el código fuente, y compilación
|
|
|
|
|
|
|