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


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 ... 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 [906] 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 ... 1254
9051  Programación / .NET (C#, VB.NET, ASP) / Re: Scroll de Imagenes? en: 11 Junio 2013, 18:47 pm
Citar

Si no recuerdo mal creo que ese efecto se denomina "Bubble Fish" o "Eye Fish" (Ojo de péz),
lo puedes hacer como te ha dicho syntax error.

Solo tienes que averiguar el índice de la que es la imágen "central", porque si no la identificas primero, no puedes hacer nada, y entonces ya con esa imágen haces lo que prefieras, o bien usar eventos (mouse hover) para agrandar la imágen cuando se pase el ratón por la imágen, o bien mantenerla agrandada permanéntemente.

Saludos
9052  Programación / .NET (C#, VB.NET, ASP) / Re: Librería de Snippets !! (Posteen aquí sus snippets) en: 11 Junio 2013, 11:56 am
Otro código de ORO:

Devuelve de la manera más eficaz y sencilla una lista de tipo FileInfo con todos los archivos de un directorio,
Le hice dos overloads para poder usar la función de varias maneras y evitar posibles errores en el "SearchPattern",
La función es "IgnoreCase", devuelve la extensión en uppercase y lowercase y todas las variantes posibles, en fin, esto es la perfección:

Código
  1. #Region " Get Files "
  2.  
  3.    ' [ Get Files Function ]
  4.    '
  5.    ' // By Elektro H@cker
  6.    '
  7.    ' Examples :
  8.    '
  9.    ' For Each file In Get_Files("C:\Windows", False) : MsgBox(file.Name) : Next
  10.    '
  11.    ' For Each file In Get_Files("C:\Windows", True, "dll")   : MsgBox(file.Name) : Next
  12.    ' For Each file In Get_Files("C:\Windows", True, ".dll")  : MsgBox(file.Name) : Next
  13.    ' For Each file In Get_Files("C:\Windows", True, "*.dll") : MsgBox(file.Name) : Next
  14.    '
  15.    ' For Each file In Get_Files("C:\Windows", False, {"dll", "ini"})     : MsgBox(file.Name) : Next
  16.    ' For Each file In Get_Files("C:\Windows", False, {".dll", ".ini"})   : MsgBox(file.Name) : Next
  17.    ' For Each file In Get_Files("C:\Windows", False, {"*.dll", "*.ini"}) : MsgBox(file.Name) : Next
  18.  
  19.    ' Get Files {directory} {recursive}
  20.    Private Function Get_Files(ByVal directory As String, ByVal recursive As Boolean) As List(Of IO.FileInfo)
  21.        Dim searchOpt As IO.SearchOption = If(recursive, IO.SearchOption.AllDirectories, IO.SearchOption.TopDirectoryOnly)
  22.        Return IO.Directory.GetFiles(directory, "*", searchOpt).Select(Function(p) New IO.FileInfo(p)).ToList
  23.    End Function
  24.  
  25.    ' Get Files {directory} {recursive} {ext}
  26.    Private Function Get_Files(ByVal directory As String, ByVal recursive As Boolean, ext As String) As List(Of IO.FileInfo)
  27.  
  28.        If ext.StartsWith("*") Then
  29.            ext = ext.Substring(1, ext.Length - 1)
  30.        ElseIf Not ext = "*" AndAlso Not ext.StartsWith(".") Then
  31.            ext = ("." & ext)
  32.        ElseIf ext = "*" Then
  33.            ext = Nothing
  34.        End If
  35.  
  36.        Dim searchOpt As IO.SearchOption = If(recursive, IO.SearchOption.AllDirectories, IO.SearchOption.TopDirectoryOnly)
  37.        Return IO.Directory.GetFiles(directory, "*" & ext, searchOpt).Select(Function(p) New IO.FileInfo(p)).ToList
  38.  
  39.    End Function
  40.  
  41.    ' Get Files {directory} {recursive} {exts()}
  42.    Private Function Get_Files(ByVal directory As String, ByVal recursive As Boolean, ParamArray exts() As String) As List(Of IO.FileInfo)
  43.  
  44.        Dim FileExts(exts.Count) As String
  45.        Dim ExtCount As Int32 = 0
  46.  
  47.        For Each ext In exts
  48.            If ext.StartsWith("*") Then
  49.                FileExts(ExtCount) = ext.Substring(1, ext.Length - 1)
  50.            ElseIf Not ext = "*" AndAlso Not ext.StartsWith(".") Then
  51.                FileExts(ExtCount) = ("." & ext)
  52.            ElseIf Not ext = "*" AndAlso ext.StartsWith(".") Then
  53.                FileExts(ExtCount) = ext
  54.            ElseIf ext = "*" Then
  55.                FileExts(ExtCount) = Nothing
  56.            End If
  57.            ExtCount += 1
  58.        Next
  59.  
  60.        Dim searchOpt As IO.SearchOption = If(recursive, IO.SearchOption.AllDirectories, IO.SearchOption.TopDirectoryOnly)
  61.        Dim filenameExtComparer As New FilenameExtensionComparer
  62.        Return IO.Directory.GetFiles(directory, "*", searchOpt).Where(Function(o) FileExts.Contains(IO.Path.GetExtension(o), filenameExtComparer)).Select(Function(p) New IO.FileInfo(p)).ToList
  63.  
  64.    End Function
  65.  
  66.    ' FilenameExtensionComparer
  67.    Public Class FilenameExtensionComparer : Implements IEqualityComparer(Of String)
  68.  
  69.        Public Function Equals1(s As String, t As String) As Boolean Implements IEqualityComparer(Of String).Equals
  70.            Return String.Compare(s, t, StringComparison.OrdinalIgnoreCase) = 0
  71.        End Function
  72.  
  73.        Public Function GetHashCode1(s As String) As Integer Implements IEqualityComparer(Of String).GetHashCode
  74.            Return s.GetHashCode()
  75.        End Function
  76.  
  77.    End Class
  78.  
  79. #End Region
9053  Programación / Scripting / Re: Transformar nombre de los archivos a 001,002,003.png,etc? en: 11 Junio 2013, 09:57 am
perdón, lo escribí al vuelo y cometí un misstype, símplemente añade un SET /A aquí:
Código:
set /A num+=1

PD: La costumbre de no usar keywords a la izquierda de las variables en otros lenguajes cada vez se apodera más de mi xD.

Error:

Código
  1. Ya existe un archivo con el mismo nombre
  2. o no se ha encontrado el archivo.

Ese error que comentas es "normal", si ya tienes un archivo que se llama "1.png" no se puede renombrar al mismo nombre y el bat fallará con ese archivo, pero nada grave.

Saludos
9054  Programación / Scripting / Re: Transformar nombre de los archivos a 001,002,003.png,etc? en: 10 Junio 2013, 22:58 pm
Bueno, de todas formas ya he codeado la función para hacerlo añadiendo los Ceros xD.
http://foro.elhacker.net/net/pequena_duda_con_un_string-t392198.0.html;msg1860018#msg1860018

Si lo quieres hacer en Batch (sin incrementar por "ceros") entonces el código no requiere esfuerzo:

Código:
@Echo off
setlocal enabledelayedexpansion

For %%# in ("X:\carpeta\*.png") Do (
    set /A num+=1
    Ren "%%#" "!num!.%%~x#"
)

Saludos
9055  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda con un String en: 10 Junio 2013, 22:42 pm
@Seazoux:

Código
  1. #Region " Rename Files (Increment method) "
  2.  
  3.    ' [ Rename Files (Increment method) ]
  4.    '
  5.    ' // By Elektro H@cker
  6.    '
  7.    ' Examples :
  8.    ' Rename_Files_By_Increment("C:\", "jpg") ' Result: 001.jpg, 002.jpg
  9.    ' Rename_Files_By_Increment("C:\")        ' Result: 001.jpg, 002.dll
  10.  
  11.    Private Sub Rename_Files_By_Increment(ByVal Dir As String, Optional ByVal FileExt As String = "*")
  12.  
  13.        Dim FileList As List(Of IO.FileInfo)
  14.  
  15.        If Not FileExt = "*" _
  16.        AndAlso Not FileExt.StartsWith(".") _
  17.        Then FileExt = ("." & FileExt)
  18.  
  19.        Select Case FileExt
  20.            Case "*" : FileList = IO.Directory.GetFiles(Dir, "*", IO.SearchOption.TopDirectoryOnly).Select(Function(p) New IO.FileInfo(p)).ToList
  21.            Case Else : FileList = IO.Directory.GetFiles(Dir, "*" & FileExt, IO.SearchOption.TopDirectoryOnly).Select(Function(p) New IO.FileInfo(p)).ToList
  22.        End Select
  23.  
  24.        Dim ZeroCount As Int64 = FileList.Count.ToString.Length
  25.  
  26.        Dim FileName As String = String.Empty
  27.        Dim Number As Int64 = 0
  28.  
  29.        Try
  30.  
  31.            For Each file In FileList
  32.  
  33.                Number += 1
  34.                FileName &= Number
  35.  
  36.                For zero As Int64 = 0 To ZeroCount
  37.                    If Not FileName.Length = ZeroCount Then
  38.                        FileName = "0" & FileName
  39.                    Else
  40.                        Select Case FileExt
  41.                            Case "*" : IO.File.Move(file.FullName, IO.Path.Combine(file.DirectoryName, FileName & file.Extension))
  42.                            Case Else : IO.File.Move(file.FullName, IO.Path.Combine(file.DirectoryName, FileName & FileExt))
  43.                        End Select
  44.                        FileName = String.Empty
  45.                        Exit For
  46.                    End If
  47.                Next
  48.  
  49.            Next
  50.  
  51.        Catch ex As Exception
  52.            MsgBox(ex.Message)
  53.        End Try
  54.  
  55.    End Sub
  56.  
  57. #End Region

 ;)
9056  Programación / Scripting / Re: Transformar nombre de los archivos a 001,002,003.png,etc? en: 10 Junio 2013, 21:27 pm
Lo primero de nada es que lo que quieres hacer se denomina Renombrabiento (Renombrar archivos), Y se puede hacer con el comando "Ren" (o "Rename", es lo mismo):
Código
  1. Ren "Imágen.png" "001.png"

Lo que requieres se puede hacer, pero esto es Batch, requiere usar un poco de lógica, no es dificil pero llevaría bastante tiempo, ya que por cada X cantidad de archivos deberás usar X cantidad de ceros, por ejemplo:

menos de 10 archivos > 0.png
más de 10 archivos pero menos de 100 > 00.png
más de 100 archivos pero menos de 1000 > 000.png

Así que hay que escribir muchas condicionales en el código, y requiere su tiempo,
sincéramente, lo haría si fuese necesario, para algo soy moderador y sé Batch, pero en este caso no es necesario, lo considero perder el tiempo, ya que te recuerdo que estás en .NET, y con un "interop increment" y un par de select cases se hace bien rápido comparado con todo lo que hay que escribir en Batch.

EDITO: De hecho yo ya hice un Bat con ese tipo de renombrado, donde se detectaba la cantidad de ceros que habia que añadir a la izquierda de cada archivo a rneombrar según la cantidad total de archivos, pero no sé donde publiqué el código ni con que nombre, fue hace más de un año como mínimo xD.

PD: No te dejo "tirado",  voy a hacer un snippet para VBNET para hacer este tipo de renombrado.

Saludos!
9057  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda con un String en: 10 Junio 2013, 21:04 pm
@ElSevi

Lo cierto es que tenía pensado como idea trasladar ese Batch a código .NET para el concurso "EHN-DEV" de este año ya que dispongo de un método rapidísimo y el más eficiente para permutar caracteres, pero la verdad es que no me motiva mucho hacerlo porque a mi ya no me sirve ese tipo de aplicaciones de brute force para generar diccionarios y cosas parecidas, así que creo que para un concurso no lo voy a hacer, solo lo haría para los demás, en ratos libres, y de momento no es que tenga muchas ganas d ehacerlo...

No sé si lo haré, la verdad, pero de momento no tengo los suficientes motivos para hacerlo, a menos que me paguen por ello xD.

Saludos!
9058  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda con un String en: 10 Junio 2013, 20:46 pm
La verdad, la que estás liando en tu array de controles para hacer esto:

Código
  1.        Dim pcb_(2) As PictureBox
  2.  
  3.        For pcb_num = 0 To pcb_.Length - 1
  4.            pcb_(pcb_num) = New PictureBox
  5.            pcb_(pcb_num).BackColor = Color.FromArgb(255, pcb_num * 3, pcb_num * 2, pcb_num)
  6.            pcb_(pcb_num).Size = New Point(Panel1.Size.Width, Panel1.Size.Height \ 4)
  7.            pcb_(pcb_num).Top = 90 * pcb_num
  8.            pcb_(pcb_num).BackgroundImage = Image.FromFile(".\Art\im\image00" & pcb_num & ".png")
  9.            Me.Panel1.Controls.Add(pcb_(pcb_num))
  10.        Next

He visto tu pregunta Batchera... si el problema es que te acabas de dar cuenta que el array empieza por CERO en lugar de UNO y si símplemente quieres empezar desde el número "1" porque tus archivos empiezan con "001" pues modifica el "0" en el For por un "1" para saltar el primer item del array, y listo.

¿Es eso lo que pasa?

Saludos
9059  Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda con un String en: 10 Junio 2013, 20:23 pm
Pues en teoría lo has concatenado corréctamente, ¿has probado a añadir un msgbox para comprobar que el archivo existe?...

Código
  1. If Not IO.File.Exists(".\Art\im\image00" & pcb_num & ".png") then msgbox(""".\Art\im\image00" & pcb_num & ".png""" & " no existe") else msgbox ("si que existe")
  2. pcb_(pcb_num).Image = Image.FromFile(".\Art\im\image00" & pcb_num & ".png")

PD: ¿Seguro que quieres usar la propiedad image en lugar de backgroundimage?

EDITO: el .parent los desubica dentro del panel, quita el .parent y añade los picboxes al panel diréctamente en lugar de añadirlos al form.

Saludos
9060  Programación / .NET (C#, VB.NET, ASP) / Re: [SOLUCIONADO] Una pregunta sobre IO.Directory.GetFiles en: 10 Junio 2013, 20:13 pm
Ahora sí, mejor imposible!, aquí tienen la forma más eficiente:

Código
  1.    Private Function Get_Files(ByVal rootDirectory As String, ByVal recursive As Boolean, ParamArray exts() As String) As List(Of IO.FileInfo)
  2.        Dim searchOpt As IO.SearchOption = If(recursive, IO.SearchOption.AllDirectories, IO.SearchOption.TopDirectoryOnly)
  3.        Return IO.Directory.GetFiles(rootDirectory, "*.*", searchOpt).Where(Function(o) exts.Contains(IO.Path.GetExtension(o))).Select(Function(p) New IO.FileInfo(p)).ToList
  4.    End Function

Ejemplo de uso:

Código
  1.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.        For Each file In Get_Files("C:\Windows", True, {".dll", "DLL"}) : MsgBox(file.Name) : Next
  3.    End Sub

EDITO: Lo único imperfecto es que no es Ignore case, así que habría que usar la función así:
Código
  1. For Each file In Get_Files("C:\Windows", True, {".dll", "DLL"}) : MsgBox(file.Name) : Next

 ;D
Páginas: 1 ... 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 [906] 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines