Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#4451
Cita de: MCKSys Argentina en 23 Septiembre 2015, 17:52 PMcon el plugin Multiline Ultimate Assembler puedes pegar todo el ASM  y sólo debes guardar la 1er dirección de la 1er columna

Perfecto, esto me ahorra mucho más tiempo y me conformo, gracias.

Cita de: MCKSys Argentina en 23 Septiembre 2015, 17:52 PMNo sé si esos "SHORT" y esos "Exporter." los va a reconocer (aunque lo uso siempre, no tengo el plugin a mano ahora) pero es algo trivial.

En realidad el ejemplo de arriba es ficticcio, solo era por mostrar un ejemplo aleatorio que tenia a mano (gracias a ti :)).

Me di cuenta que no aceptata el nombre del módulo en mi Olly, te iba a preguntar que plugin u opción usabas para poder escribir eso y que te lo tomase, pero no me corre ninguna prisa por averiguarlo xD.

Saludos
#4452
Cita de: #Aitor en 23 Septiembre 2015, 18:53 PM
Siento haberte hecho modificar parte de tu código, pero mi nivel de programación es pésimo y no entiendo nada...

Estoy en shock (?)

La class TimeMeasurer que compartí, solo tienes que copiarla y pegarla en un nuevo archivo.vb, el archivo lo creas desde Visual Studio, Add Item -> Class, y ahí pegas todo el código tal cual lo puse.

La class expone varios eventos, los que te interesan son TimeMeasurer.RemainingTimeUpdated y TimeMeasurer.RemainingTimeFinished, el primer evento se dispara al mismo tiempo que el Timer interno de la class tickea (el intervalo de actualización lo puedes modificar usando la propiedad TimeMeasurer.UpdateInterval), y el otro evento se dispara cuando la cuenta atrás llega a cero.

Arriba te mostré un ejemplo de lo que acabo de mencionar respecto a cómo suscribirte a esos eventos y cómo usar la class en general, ¿hay algo que sigas sin entender?.

Saludos!
#4453
tincopasan, creo que pide un modo de capturar y guardar (o procesar en tiempo real) el audio que emite el dispositivo, vaya, por donde se escuchan los sonidos del juego y, comparar ese audio capturado con un sample.wav local para determinar si el audio es similar.

A mi ese tipo de comparación me parece algo complejo por los posibles sonidos de fondo (ambientales, u otros sonidos) que habrá en el juego,
busca algo que tenga algoritmos de similitud de ondas... cómo una especie de algoritmo ImageDiff, pues un WaveDiff xD.

Saludos
#4454
Cita de: #Aitor en 23 Septiembre 2015, 16:26 PM¿Cómo solucionar eso? O en su defecto alguna forma mejor de hacerlo.

Estás siguiendo el camino equivocado.

Usa un TimeSpan.




Tenia un viejo código que desarrollé el año pasado para medir el tiempo de forma amistosa, para usar un cronómetro o un temporizador/cuenta atrás de forma sencilla. He refactorizado un poco el código (por eso he tardado en responderte).

Para tus necesidades, podrías utilizarlo de la siguiente manera:
Código (vbnet) [Seleccionar]
Public NotInheritable Class Form1 : Inherits Form

   ''' <summary>
   ''' The <see cref="TimeMeasurer"/> instance that measure time intervals.
   ''' </summary>
   Private WithEvents countDown As New TimeMeasurer With {.UpdateInterval = 100}

   Private Shadows Sub Load() Handles MyBase.Load

       ' Medir el lapso de 1 mes desde la fecha y hora actual.
       Me.countDown.Start(DateTime.Now, DateTime.Now.AddMonths(1))

   End Sub

   ''' <summary>
   ''' Handles the TimeUpdated event of the countdown instance.
   ''' </summary>
   ''' <param name="sender">The source of the event.</param>
   ''' <param name="e">The <see cref="TimeMeasurer.TimeUpdatedEventArgs"/> instance containing the event data.</param>
   Private Sub Countdown_TimeUpdated(ByVal sender As Object, ByVal e As TimeMeasurer.TimeUpdatedEventArgs) _
   Handles countDown.TimeUpdated

       Me.lblCountDown.Text = String.Format("Days:{0:00} Hours:{1:00} Minutes:{2:00} Seconds:{3:00}",
                                           e.Remaining.Days, e.Remaining.Hours, e.Remaining.Minutes, e.Remaining.Seconds)

   End Sub

End Class



El código fuente (version actualizada y mejor refactorizada):
Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author           : Elektro
' Last Modified On : 26-September-2015
' ***********************************************************************
' <copyright file="TimeMeasurer.vb" company="Elektro Studios">
'     Copyright (c) Elektro Studios. All rights reserved.
' </copyright>
' ***********************************************************************

#Region " Usage Examples "

#End Region

#Region " Option Statements "

Option Strict On
Option Explicit On
Option Infer Off

#End Region

#Region " Imports "

Imports System
Imports System.Diagnostics
Imports System.Linq
Imports System.Windows.Forms

#End Region

''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Measures the elapsed and/or remaining time of a time interval.
''' The time measurer can be used as a chronometer or a countdown.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
Public NotInheritable Class TimeMeasurer : Implements IDisposable

#Region " Objects "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' An <see cref="Stopwatch"/> instance to retrieve the elapsed time. (chronometer)
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private timeElapsed As Stopwatch

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' A <see cref="TimeSpan"/> instance to retrieve the remaining time. (countdown)
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private timeRemaining As TimeSpan

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' A <see cref="Timer"/> instance that updates the elapsed and remaining time, and also raise <see cref="TimeMeasurer"/> events.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private WithEvents measureTimer As Timer

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Flag that indicates wheter this <see cref="TimeMeasurer"/> instance has finished to measure time interval.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private isFinished As Boolean

#End Region

#Region " Properties "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the maximum time that the <see cref="TimeMeasurer"/> can measure, in milliseconds.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The maximum time that the <see cref="TimeMeasurer"/> can measure, in milliseconds.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public Shared ReadOnly Property MaxValue As Double
       Get
           Return (TimeSpan.MaxValue.TotalMilliseconds - 1001.0R)
       End Get
   End Property

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the current state of this <see cref="TimeMeasurer"/> instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The update interval.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   Public ReadOnly Property State As TimeMeasurerState
       Get
           If (Me.timeElapsed Is Nothing) OrElse (Me.isFinished) Then
               Return TimeMeasurerState.Disabled

           ElseIf Not Me.timeElapsed.IsRunning Then
               Return TimeMeasurerState.Paused

           Else
               Return TimeMeasurerState.Enabled

           End If
       End Get
   End Property

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets or sets the update interval.
   ''' Maximum value is 1000 (1 second).
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <value>
   ''' The update interval.
   ''' </value>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="ArgumentException">
   ''' A value smaller than 1000 is required.;value
   ''' </exception>
   Public Property UpdateInterval As Integer
       Get
           Return Me.updateIntervalB
       End Get
       <DebuggerHidden>
       <DebuggerStepThrough>
       Set(ByVal value As Integer)
           If (value > 1000) Then
               Throw New ArgumentException(message:="A value smaller than 1000 is required.", paramName:="value")
           Else
               Me.updateIntervalB = value
               If (Me.measureTimer IsNot Nothing) Then
                   Me.measureTimer.Interval = value
               End If
           End If
       End Set
   End Property
   ''' <summary>
   ''' The update interval.
   ''' </summary>
   Private updateIntervalB As Integer = 100I

#End Region

#Region " Enumerations "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Specifies the current state of a <see cref="TimeMeasurer"/> instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public Enum TimeMeasurerState As Integer

       ''' <summary>
       ''' The <see cref="TimeMeasurer"/> is running.
       ''' </summary>
       Enabled = &H0I

       ''' <summary>
       ''' The <see cref="TimeMeasurer"/> is paused.
       ''' </summary>
       Paused = &H1I

       ''' <summary>
       ''' The <see cref="TimeMeasurer"/> is fully stopped, it cannot be resumed.
       ''' </summary>
       Disabled = &H2I

   End Enum

#End Region

#Region " Events "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Occurs when the elapsed/remaining time updates.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public Event TimeUpdated(ByVal sender As Object, ByVal e As TimeUpdatedEventArgs)

#Region " Time Updated EventArgs "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Defines the <see cref="TimeUpdated"/> event arguments.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public NotInheritable Class TimeUpdatedEventArgs : Inherits EventArgs

#Region " Properties "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the elapsed time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The elapsed time.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public ReadOnly Property Elapsed As TimeSpan
           Get
               Return Me.elapsedB
           End Get
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Baking Field )
       ''' The elapsed time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Private ReadOnly elapsedB As TimeSpan

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the remaining time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The remaining time.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public ReadOnly Property Remaining As TimeSpan
           Get
               Return Me.remainingB
           End Get
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Baking Field )
       ''' The remaining time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Private ReadOnly remainingB As TimeSpan

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Gets the goal time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <value>
       ''' The goal time.
       ''' </value>
       ''' ----------------------------------------------------------------------------------------------------
       Public ReadOnly Property Goal As TimeSpan
           Get
               Return Me.goalB
           End Get
       End Property
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' ( Baking Field )
       ''' The goal time.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Private ReadOnly goalB As TimeSpan

#End Region

#Region " Constructors "

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Prevents a default instance of the <see cref="TimeUpdatedEventArgs"/> class from being created.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       Private Sub New()
       End Sub

       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Initializes a new instance of the <see cref="TimeUpdatedEventArgs"/> class.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <param name="elapsed">
       ''' The elapsed time.
       ''' </param>
       '''
       ''' <param name="remaining">
       ''' The remaining time.
       ''' </param>
       '''
       ''' <param name="goal">
       ''' The goal time.
       ''' </param>
       ''' ----------------------------------------------------------------------------------------------------
       Public Sub New(ByVal elapsed As TimeSpan,
                      ByVal remaining As TimeSpan,
                      ByVal goal As TimeSpan)

           Me.elapsedB = elapsed
           Me.remainingB = remaining
           Me.goalB = goal

       End Sub

#End Region

   End Class

#End Region

#End Region

#Region " Public Methods "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Starts the time interval measurement.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="milliseconds">
   ''' The time interval to measure, in milliseconds.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="ArgumentOutOfRangeException">
   ''' milliseconds;A value smaller than <see cref="TimeMeasurer.MaxValue"/> is required.
   ''' </exception>
   '''
   ''' <exception cref="ArgumentOutOfRangeException">
   ''' milliseconds;A value greater than 0 is required.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub Start(ByVal milliseconds As Double)

       If (milliseconds > TimeMeasurer.MaxValue) Then
           Throw New ArgumentOutOfRangeException(paramName:="milliseconds",
                                                 message:=String.Format("A value smaller than {0} is required.", TimeMeasurer.MaxValue))

       ElseIf (milliseconds <= 0) Then
           Throw New ArgumentOutOfRangeException(paramName:="milliseconds",
                                                 message:="A value greater than 0 is required.")

       Else
           Me.timeElapsed = New Stopwatch
           Me.timeRemaining = TimeSpan.FromMilliseconds(milliseconds)
           Me.measureTimer = New Timer With
              {
                .Tag = milliseconds,
                .Interval = Me.updateIntervalB,
                .Enabled = True
              }

           Me.isFinished = False
           Me.timeElapsed.Start()
           Me.measureTimer.Start()

       End If

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Starts a time interval measurement given a difference between two dates.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="startDate">
   ''' The starting date.
   ''' </param>
   '''
   ''' <param name="endDate">
   ''' The ending date.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub Start(ByVal startDate As Date,
                    ByVal endDate As Date)

       Me.Start(endDate.Subtract(startDate).TotalMilliseconds)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Starts a time interval measurement given a <see cref="TimeSpan"/>.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="time">
   ''' A <see cref="TimeSpan"/> instance that contains the time interval.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub Start(ByVal time As TimeSpan)

       Me.Start(time.TotalMilliseconds)

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Pauses the time interval measurement.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="Exception">
   ''' TimeMeasurer is not running.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub Pause()

       If (Me.State <> TimeMeasurerState.Enabled) Then
           Throw New Exception("TimeMeasurer is not running.")

       Else
           Me.measureTimer.Stop()
           Me.timeElapsed.Stop()

       End If

   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Resumes the time interval measurement.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="Exception">
   ''' TimeMeasurer is not paused.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub [Resume]()

       If (Me.State <> TimeMeasurerState.Paused) Then
           Throw New Exception("TimeMeasurer is not paused.")

       Else
           Me.measureTimer.Start()
           Me.timeElapsed.Start()

       End If

   End Sub

   ''' <summary>
   ''' Stops the time interval measurement.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="Exception">
   ''' TimeMeasurer is not running.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerHidden>
   <DebuggerStepThrough>
   Public Sub [Stop]()

       If (Me.State = TimeMeasurerState.Disabled) Then
           Throw New Exception("TimeMeasurer is not running.")

       Else
           Me.Reset()
           Me.isFinished = True

           Me.measureTimer.Stop()
           Me.timeElapsed.Stop()

       End If

   End Sub

#End Region

#Region " Private Methods "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Stops Time intervals and resets the elapsed and remaining time to zero.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private Sub Reset()

       Me.measureTimer.Stop()
       Me.timeElapsed.Reset()

   End Sub

#End Region

#Region " Event Handlers "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Handles the <see cref="Timer.Tick"/> event of the <see cref="MeasureTimer"/> timer.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="sender">
   ''' The source of the event.
   ''' </param>
   '''
   ''' <param name="e">
   ''' The <see cref="EventArgs"/> instance containing the event data.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   Private Sub MeasureTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) _
   Handles measureTimer.Tick

       Dim timeDiff As TimeSpan = (Me.timeRemaining - Me.timeElapsed.Elapsed)

       ' If finished...
       If (timeDiff.TotalMilliseconds <= 0.0R) _
       OrElse (Me.timeElapsed.ElapsedMilliseconds > DirectCast(Me.measureTimer.Tag, Double)) Then

           Me.Reset()
           Me.isFinished = True

           If (Me.TimeUpdatedEvent IsNot Nothing) Then
               Dim goal As TimeSpan = TimeSpan.FromMilliseconds(DirectCast(Me.measureTimer.Tag, Double))
               RaiseEvent TimeUpdated(sender, New TimeUpdatedEventArgs(goal, TimeSpan.FromMilliseconds(0.0R), goal))
           End If

       Else ' If not finished...
           If (Me.TimeUpdatedEvent IsNot Nothing) Then
               RaiseEvent TimeUpdated(sender, New TimeUpdatedEventArgs(Me.timeElapsed.Elapsed,
                                                                       timeDiff,
                                                                       TimeSpan.FromMilliseconds(DirectCast(Me.measureTimer.Tag, Double))))
           End If

       End If

   End Sub

#End Region

#Region " IDisposable Support "

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' To detect redundant calls when disposing.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private isDisposed As Boolean = False

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Releases all the resources used by this instance.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Sub Dispose() Implements IDisposable.Dispose
       Me.Dispose(isDisposing:=True)
       GC.SuppressFinalize(obj:=Me)
   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
   ''' Releases unmanaged and - optionally - managed resources.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="isDisposing">
   ''' <see langword="True"/> to release both managed and unmanaged resources;
   ''' <see langword="False"/> to release only unmanaged resources.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Private Sub Dispose(ByVal isDisposing As Boolean)

       If (Not Me.isDisposed) AndAlso (isDisposing) Then

           If (Me.measureTimer IsNot Nothing) Then
               Me.measureTimer.Stop()
               Me.measureTimer.Dispose()
           End If

           If (Me.TimeUpdatedEvent IsNot Nothing) Then
               RemoveHandler Me.TimeUpdated, Me.TimeUpdatedEvent
           End If

       End If

       Me.isDisposed = True

   End Sub

#End Region

End Class

#4455
Cita de: Lekim en 23 Septiembre 2015, 15:54 PMY lo del canvas es lo que buscaba, creía que el equivalente en WPF era el stackpanel  :P

Esto te podría servir de ayuda para futuras dudas respecto a otros controles...

Windows Forms Controls and Equivalent WPF Controls - MSDN

Saludos!
#4456
Software / Donde descargar temporadas de Águila Roja?
23 Septiembre 2015, 15:21 PM
Buenas

Estoy tratando de econtrar la serie española 'Águila Roja', desde la temporada 1, pero no la encuentro, ¿alguien sabe donde descargarla a calidad decente por favor?.

en newpct.com están algunas temporadas, pero a parte de estar incompletas, la mayoría de torrents de la primera temporada sin semillas, así lleva dias, no es descargable.

EDITO:
La encontré, no he podido revisar que todos los torrents de las 8 temporadas esten online, pero me imagino que si:
http://www.mejortorrent.com/secciones.php?sec=buscador&valor=%C1guila+Roja

Es impresionante que los torrents de la primera temporada ...tan antigua, vayan a +1mb/s. Y se ve bien, en un HD de palo (fotogramas recortados).

Saludos!
#4457
Tengo una expresión regular que me está volviendo loco, la utilizo en Pascalscript en combinación con otras expresiones, y ya no se cómo tratar de mejorar más este RegEx, no hace lo que yo quiero en ciertas circunstancias.

¡A ver si alguien me puede echar una mano!.

La expresión:
\A([^\-]*?)\s*\-\s*(.*?)\s*([\(\[])?((ft[\.\s]|feat[\.\s]|featuring[\.\s])[^\(\)\{\}\[\]]*)([\)\]])?(.+)?\Z

Reemplazamiento por:
$1 $4 - $2$7

Nombres de archivo de prueba:

  • kill the noise - all in my head feat. awolnation (batou mix)
  • artist - track name feat. Mister 漢字仮----名交じり文 [usa remix]
  • kill th-e noise - all in my head (feat awolnation)

La supuesta finalidad de esta expresión que diseñé, cómo ya habreis supuesto, debería servir para extraer la parte "feat..." del nombre del archivo, y colocarlo al principio del string junto al nombre del artista.

Por ejemplo:

De:
kill the noise - all in my head feat. awolnation (batou mix)
A:
kill the noise feat. awolnation - all in my head (batou mix)


De:
artist - track name feat. Mister 漢字仮--名交じり文 [usa remix]
A:
artist feat. Mister 漢字仮--名交じり文 - track name [usa remix]


La expresión funciona bien, excepto cuando en el nombre del archivo existe algún guión de más antes del string "feat..."

Por ejemplo, esto:
kill th-e noise - all in my head (feat awolnation)
Me lo reemplaza por esto otro:
Kill Th Feat. Awolnation-E Noise - All In My Head
Cuando realmente debería reemplazarlo así:
Kill Th-E Noise Feat. Awolnation - All In My Head


Los nombres de los archivos se puede desglosar así:
NOMBRE_ARTISTA - NOMBRE_CANCION FEATURING_ARTISTA (POSIBLE_TEXTO_EN_PARENTESIS)


Me está siendo muy complicado idear la lógica, ya que "NOMBRE_ARTISTA" puede contener un nombre con uno o varios guiones, al igual que "NOMBRE_CANCION", "FEATURING_ARTISTA" o "POSIBLE_TEXTO_EN_PARENTESIS" pueden tener nombres con guión, por ejemplo:
Dj E-nergy C-21 - My Super-hero track! (feat Dj Ass-hole)

Eso ya es dificil ...he?.

Lo realmente complicado es que "NOMBRE_ARTISTA" - "NOMBRE_CANCION" se separa por otro guión, y entonces no se cuando parar de capturar.

¿A alguien se le ocurre algo?, no importa que la expresión sea perfecta ...creo que no existe el modo de que sea perfecta debido a los guiones (imposible predecir cuando hay que separar  "NOMBRE_ARTISTA" de "NOMBRE_CANCION"), pero si que busco ayuda para mejorar lo que tengo, que no trabaja del todo bien.

Puedo aplicar varias expresiones distintas para ir formateando el string  que as´uedcnado para usar una e siguiente RegEx ...si eso ayuda, ya que en una sola expresión dudo que pueda hacerlo todo bien.

Saludos!
#4458
Cita de: Pablo Videla en 23 Septiembre 2015, 14:23 PMElektro, a mi me entró bien y soy Chileno, en tu país tienen algún bloqueo?

Ahora si que me deja entrar bien, que extraño. No se que habrá pasado ayer.

Saludos!
#4459
Buenas, me gustaría saber si puedo instruir al OllyDBG de alguna manera para que, teniendo un texto cómo este copiado en el portapapeles o en un archivo local, sea capaz de automatizar las modificaciones en esas direcciones, en vez de tener que ir modificando una por una de forma manual en el Olly.

0043C1E8    E8 83FFFFFF           CALL Exporter.0043C170
0043C1ED    EB 64                 JMP SHORT Exporter.0043C253
0043C1EF    90                    NOP
0043C1F0    C745 F8 00000000      MOV DWORD PTR SS:[EBP-8],0
0043C1F7    EB 11                 JMP SHORT Exporter.0043C20A
0043C1F9    8B45 F8               MOV EAX,DWORD PTR SS:[EBP-8]
0043C255  ^ EB 99                 JMP SHORT Exporter.0043C1F0


¿Se podría hacer?.

Hace poco descubrí el plugin OllyScript (ODBGScript), pero no me aclaro para usarlo correctamente, de todas formas intuyo que requiere bastante más trabajo que un simple copy&paste xD, y yo pregunto por algo más directo ...más simple.

Saludos
#4460
Cita de: AlbertoPerez en 23 Septiembre 2015, 05:24 AMHe estado buscando y buscando

"El que busca y no encuentra, es que no pregunta a Wikipedia."

©2015 Elektro. All fuckin' rights reserved.




Aquí tienes cientos:

List of operating systems - Wikipedia
+
List of Linux distributions - Wikipedia

...Para PC, Smartphone, PDA, de todo mezclado.

Saludos!