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

#4381
Engel lex, compañero, corrígeme si me equivoco, pero en Venezuela te matan por 10€ (eso está clarísimo, es la realidad, te matan sin remordimientos en cualquier esquina), entonces un "ladrón" que sospeche que tienes 100€ podría contratar a 5 sicarios para buscarte y repartirse esos 100€, y les saldría hasta rentable hacerlo, por lo que viajar a Venezuela con 100€ es muy, muy peligroso, y cuanto mas dinero tenga un viajero y más dinero sospechen que tengas será peor claro está, el riesgo aumentará.

Los españoles políticos que viven en Venezuela (y hablo de politicos de "poco rango"), viven en pisos con mucha seguridad, hay guardias de seguridad en la entrada, y los ascensores tienen llave, y eso que viven en calles de poca violencia digamos, pero aun así viven con miedo a psar de esa pseudo-seguridad, asi que...

En mi humilde y un poco ignorante opinión (al no haber pisado nunca Venezuela, pero si que he visto mucho...), pienso que es mejor vivir siendo porbre allá, que vivir siendo rico, ya que si eres rico, y por rico digo tener 1.000€, llamarás la atención de todos los que están dispuestos a matarte por sacarte 1€.

"Un mes de p**a madre" dice e artículo... ja! xD.

Saludos
#4382
Muchas gracias WHK, probaré esa expresión.

De todas formas la solución actual que tengo ahora mismo es con esta expresión, en la cual me ayudaron a construirla:
^(.+)\s+-\s+(.+?)\s+[fF](t|eat(uring)?)?\.?([^([\])\n]+)(.+)?$

Pero hay un problema, según parece es imposible construir una expresión regular que sea 100% eficiente debido a la cantidad de guiones y espacios que pueden contener los nombres de archivos (como yo decía al principio), al menos eso es lo que me dijo el que me ayudó con esa expresión, entonces yo mismo desarrollé el siguiente script en pascal-script para ignorar los nombres de archivos que contengan más de un " - " ya que la eficiencia para estos renombramientos de archivo necesito que sea perfecta, prefiero omitir reemplazamientos y revisar manualmente los nombres que se omitieron.

Estoy convencido que si alguien suele descargar archivos de audio, entonces esta expresión, o la de @Explorer y la de @WHK les podrá servir de mucha ayuda!.

(este script se utiliza con la aplicación Renamer Pro: http://www.den4b.com/?x=products )
Código (pascal) [Seleccionar]
// Formats an audio filename that has the "...featuring artist" part at the end of filename.
//------------------------------------------------------------------------------------------


// Pseudo-Example:
//
// From: [0]ARTIST_NAME  [1]DASH  [2]TRACK_TITLE  [3]FEAT_ARTIST  [4]POSSIBLE_ADDITIONAL_INFO_INSIDE:()[]{}
// To:   [0]ARTIST_NAME  [3]FEAT_ARTIST  [1]DASH  [2]TRACK_TITLE  [4]POSSIBLE_ADDITIONAL_INFO_INSIDE:()[]{}

// Real-Example:
//
// From: Carbin & Sirmark - Sorry Feat. Sevener.mp3
// To:   Carbin & Sirmark Feat. Sevener - Sorry.mp3

// Known limitations:
//
// • If [0]ARTIST_NAME or [2]TRACK_TITLE parts contains any " - " the script will not work properlly.
//   By default the script prevents any replacement on that kind of filenames, so don't worry.


var
 rgxPattern: string;
 rgxReplace: string;
 dashCount: integer;
 baseName: string;
 extension: WideString;

begin

 baseName  := WideExtractBaseName(FileName)
 extension := WideExtractFileExt(FileName);

 // The regular expression that matches the filename parts.
 // http://stackoverflow.com/questions/32807698/regex-pattern-to-limit-dashes-in-these-circumstances
 rgxPattern := '^(.+)\s+-\s+(.+?)\s+[fF](t|eat(uring)?)?\.?([^([\])\n]+)(.+)?$'
 rgxReplace := '$1 Feat.$5 - $2$6'

 // The amount of " - " that contains the filename.
 dashCount := high(MatchesRegEx(baseName, '\s-\s' , false));

 // If only one " - " is found then...
 If (dashCount = 0) Then
   begin // Do the replacement.
     baseName := ReplaceRegEx(baseName, rgxPattern, rgxReplace, false, true)
     FileName := baseName + extension;
   end;

end.


Saludos!
#4383
Lo tienes perfecto tal y como está, es más productivo así.

Creo que solo necesitas un ejemplo de cómo usar el índice (no deberías necesitar un ejemplo a estas alturasss), como el siguiente, por que yo no le veo ninguna dificultad de accesibilidad adicional entre hacer esto:
Código (vbnet,2) [Seleccionar]
' Dim pairs As IEnumerable(Of KeyValuePair(Of Integer, IEnumerable(Of Integer))) = ...
MsgBox(String.Join(", ", pairs(0).Value))


...o hacer esto otro:
Código (vbnet,2) [Seleccionar]
' Dim col As IEnumerable(Of IEnumerable(Of Integer)) = ...
MsgBox(String.Join(", ", col(0)))


Para hacer lo segundo, cosa que repito ...es innecesario, pero bueno, tendrías que modificar el tipo de objeto que maneja la función, para devolver un IEnumerable(Of IEnumerable(Of Integer)) claro está...

Saludos!
#4385
Cita de: d91 en  5 Octubre 2015, 13:43 PM
la razon de hacer una funcion que devuelva un entero es porque al hacer el excuteNonQuery me devuelve un 1 y entonces lo retorno hasta la pagina aspx para dar un mensaje de "Operacion exitosa", y segun la orientacion que me han dado esta funcion  hare  que retorne la cadena de  mensaje exitoso desde aqui para que tambien pueda devolver una cadena de error.

Entonces, ¿no sería más apropiado hacer una función que devuelva un string, para cambiar el "1" por un "Operacion exitosa"?.

Código (vbnet) [Seleccionar]
public function ejecutasql() as string

try
'todo bien en la consulta
return "Operación exitosa"

catch ex As OracleException
Return ("Error al generar Consulta: " & ex.Message)

end try

End Try


...De esa manera estarías haciendo las cosas mejor que devolver un integer y string.

Si necesitas rehutilizar ese código de error personalizado (1), entonces también podrías hacerlo de la siguiente manera:
Código (vbnet) [Seleccionar]
public function ejecutasql() as keyvaluepair(of integer, string)

try
'todo bien en la consulta
return new keyvaluepair(of integer, string)(1, "Operación exitosa")

catch ex As OracleException
return new keyvaluepair(of integer, string)(0, ("Error al generar Consulta: " & ex.Message))

end try

End Try


Saludos
#4386
Siento llegar tarde a este tema.

Si no te permite modificar el destino ni practicamente nada es por que no es un acceso directo como tal, más bien parece ser un hardlink aka vínculo simbólico.

¿Cómo puedes reproducir ese tipo de archivo?, pues por ejemplo con la herramienta mklink aka make-link de Microsoft.

Ejemplo:



Saludos!
#4387
Cita de: MCKSys Argentina en  5 Octubre 2015, 13:18 PMEl único objetivo que tiene un post como éste, es promover la delincuencia. Creo que debería cerrase (voy a hacer una petición al mod).

Ya no solo por eso, sino que además este hilo al parecer ha sido revivido decenas y decenas de veces para hacer offtopics y formular preguntas distintas o parecidas, pero el hilo ha seguido abierto quien sabe por qué razón :xD.

...Traten de formular sus preguntas en nuevos temas, no reabran un tema de antiguedad, y recuerden, aquí no se promueven los actos delictivos de ningún tipo...

Tema cerrado.

Saludos!
#4388
Lekim, la función GetLastWin32Error es para el P/Invoking, solo se debe utilizar despues de llamar a una función no administrada (Windows API) y siempre que dicha función devuelva un código de error (no todas lo hacen por defecto), su propio nombre y la descripción lo indican por si mismo:

Cita de: https://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.getlastwin32error%28v=vs.110%29.aspxReturns the error code returned by the last unmanaged function that was called using platform invoke that has the DllImportAttribute.SetLastError flag set

Aparte de eso, en las funciones de la WinAPI que devuelvan un valor numérico, un valor de retorno tanto de "0" como distinto a "0" puede significar tanto un success como un tipo de error específico, es algo que depende de la función ya que no hay ningún estándar en ese sentido, cada función de la WinAPI es un mundo.

Aparte también, y solo por informar del siguiente dato, cabe mencionar que no existe una sincronización perfecta, como el nombre de la función explica por si mismo, esta se limita a devolver el último error Win32 conocido, ya sea el código de error devuelto por tu llamada, o sea el de otra llamada más reciente realizada por la aplicación.

Despues de esta pequeña aclaración, solo quiero aclarar que para controlar errores de miembros administrados (es decir, puro código .Net) se utiliza un bloque Try/Catch/Finally/End, nada más, por lo tanto el segundo código que has mostrado sería lo correcto :).

Saludos!
#4389
Cita de: d91 en  5 Octubre 2015, 05:06 AMquiero que me orienten de como capturar una excepcion que dispara oracle y que es una cadena, no las he podido controlar con el codigo de visual basic.net porque de la forma en que lo hago retornaria una cadena y la funcion donde tengo el try catch retorna un entero si la ejecucion es normal
Código (vbnet) [Seleccionar]


public function ejecutasql() as integer

...
return 1

Catch...
Return "Error al generar Consulta" & ex.ToString

End Function

Si tienes una función cuyo valor de retorno es Integer, entonces pretender devolver un datatype distinto (String) es un error de concepto por parte del programador, y la solución más eficiente es tan sencilla como evitar querer hacer eso.

Explica detalladamente por que sientes la necesidad de devolver un string y un integer en una misma función, y así podré(mos) ofrecerte una solución apropiada a tus necesidades.

De todas formas... siempre puedes especificar un valor de retorno de tipo Object en lugar de Integer y hacer los castings necesarios al llamar a la función, pero esto lo considero malos hábitos de programación, no te recomiendo hacerlo.

Por último, decirte que considero que eso no debería ser una función, sino un método, ya que no necesitas devolver nada para evaluar un success/fail.

Saludos!