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

#2751
Scripting / Re: Ayuda con batch
1 Marzo 2017, 23:19 PM
Cita de: MrDoggy en  1 Marzo 2017, 19:27 PMMe gustaría saber si hay algún tipo de variable o comando para especificar la ruta desde donde se abre el archivo por lotes que estoy ejecutando. No sé si me explico.
Agradecería cualquier ayuda.

Hola. El directorio de inicio del script se asigna en la variable especial o variable de argumento %0.

Ejemplo:
Código (dos) [Seleccionar]
@Echo OFF
Echo Startup directory: "%~dp0"
Echo Working directory: "%CD%\"
Pause&Exit


¡Saludos!
#2752
Cita de: idzen en  1 Marzo 2017, 14:46 PMcomo seria el codigo

Hola. Aquí no se hacen tareas. Esto es un foro de programación, no un servicio de códigos regalados. Muestra tus progresos y plantea una duda específica en base a ello.

Cita de: idzen en  1 Marzo 2017, 14:46 PMme explico en la duda?

Primero dijiste que solamente quieres crear controles en tiempo de ejecución, y luego dices que lo que quieres es crear controles de usuario personalizados, así que no queda claro lo que quieres, si lo primero, lo segundo, o ambos.

- ¿Cómo crear controles estándar en tiempo de ejecución?.

- ¿Cómo crear controles de usuario personalizados?.

¡Saludos!
#2753
Hola. Si el problema es que quieres serializar varios elementos del mismo tipo y en un mismo archivo, entonces serializa una colección de elementos, por ejemplo la colección genérica y serializable List(Of T).

Ejemplo con un tipo personalizado:

Código (vbnet) [Seleccionar]
<Serializable>
<XmlRoot("PacketInfo")>
Public Class PacketInfo ' : Implements IXmlSerializable

   <XmlElement("Value")>
   Public Property Value As String

   Public Sub New()
   End Sub

   Public Sub New(ByVal value As String)
       Me.Value = value
   End Sub

End Class


+

Código (vbnet) [Seleccionar]
Dim piList As New List(Of PacketInfo)
Dim pi1 As New PacketInfo("value1")
Dim pi2 As New PacketInfo("value2")
piList.AddRange({pi1, pi2})

' Serialize
Dim sr As New XmlSerializer(GetType(List(Of PacketInfo)), {GetType(PacketInfo)})
Using fs As New FileStream("Packets.xml", FileMode.Create)
   sr.Serialize(fs, piList)
End Using

' Deserialize
piList.Clear()
Using fs As New FileStream("Packets.xml", FileMode.Open)
   piList = DirectCast(sr.Deserialize(fs), List(Of PacketInfo))
End Using

sr.Serialize(Console.Out, piList)


¡Saludos!
#2754
Scripting / Re: Duda linea de python
1 Marzo 2017, 06:39 AM
Si estás en Windows y tienes pensado utilizar/asignar caracteres del idioma Español dentro del código fuente y/o representar dichos caracteres en la consola, entonces primero guarda tu documento .py usando la codificación ANSI adecuada, y luego especifica el código de página/codificación respectivamente dentro del código fuente (CP1252 / Windows-1252 / Latin-1).

Código (python) [Seleccionar]
# -*- coding: Windows-1252 -*-

print 'áéíóú àèìòù äëïöü ñ ç'.decode('Windows-1252')


¡Saludos!
#2755
Si te refieres a eliminar el código interno, el Html, para dejar solamente el texto asignado en los atributos, campos o tags, tan solo tienes que utilizar la propiedad InnerText del tipo HtmlElement.

Tomando este documento html de ejemplo:
Código (html4strict) [Seleccionar]
<!DOCTYPE html>
<HTML>
   <HEAD>
       <TITLE>My Title</TITLE>
   </HEAD>
   <BODY>
       <h1>My Heading</h1>
       <p>My Paragraph</p>
  </BODY>
</HTML>


Lo cargamos en una nueva instancia del tipo WebBrowser y...
Código (csharp) [Seleccionar]
string html = File.ReadAllText("C:\\Document.htm");

using (WebBrowser wb = new WebBrowser()) {
   wb.ScriptErrorsSuppressed = true;
   wb.DocumentText = html;
   wb.Document.OpenNew(replaceInHistory: true);
   wb.Document.Write(html);
   wb.Refresh();

   Console.Write(wb.Document.GetElementsByTagName("HTML")[0].InnerText);
}


Resultado de ejecución:
Cita de: Visual Studio's Debug ConsoleMy Title
My Heading
My paragraph

PD: Este ejemplo es con un archivo local, pero puedes hacer lo mismo descargando una página online, por supuesto.

¡Saludos!
#2756
Cita de: Hason en 28 Febrero 2017, 17:45 PM¿Será cancer, o que no me sienta bien algo?

Ve a que te examine un médico, alguien cualificado para poder darte un análisis...

saludos!
#2757
¿En serio creeis en esa tontería del horóscopo?. Todo el mundo sabe (como el sarcástico de #drvy) que son pronósticos construidos por frases conjugadas de una forma en la que siempre van a "acertar" en algo, tanto si ese pronóstico va dirigido a un astro zodíaco u otro, se llama manipulación, por que las frases están manipuladas y generalizadas para adivinar algún detalle de tu vida o tu comportamiento si o si, y solo hay que leer el ejemplo que puso @drvy para entender esto que estoy diciendo...

Cita de: #!drvy en  1 Marzo 2017, 03:41 AMA veces eres extrovertida, afable, y sociable, mientras que otras veces eres introvertida, precavida y reservada.

PD: Por cierto, yo soy Virgo :xD

¡Saludos!
#2758
Cita de: 7emiliosk8 en 28 Febrero 2017, 20:20 PMel programa que menciono, en base a que codigo esta hecho ? o con que programa... como puedo saber eso, esa es mi duda

Puedes cargar el archivo executable en un visor hexadecimal para analizar la estructura de datos del formato PE de dicho executable, en concreto su firma o número mágico, y así tratar de identificar (en base a un porcentaje de probabilidades) que lenguaje se utilizó para su desarrollo.

Hay aplicaciones dedicadas a este tipo de análisis en donde solo tienes que cargar el archivo y te muestra los resultados del análisis, como por ejemplo PEiD o TridNet.


Otra forma sería mediante la intuición, pues en muchos casos no es nada dificil averiguar que lenguaje de programación han usado para desarrollar una aplicación, basándose en el tipo y el aspecto de los controles de la interfáz gráfica (es muy facil identificar a ojo algunas tecnologías como WPF) y en las dependencias del programa, si por ejemplo usa ensamblados de .NET o archivos específicos de otros lenguajes. O simplemente analizando las librerías de Windows que se cargan y cuales runtimes, al iniciar el executable.




Cita de: 7emiliosk8 en 28 Febrero 2017, 18:56 PMvi que algunos se hacian con visual studio, pero por ejemplo los programas como "Megadownloader" que es para descargar desde megashare tambien esta hecho asi ?

Visual Studio es una IDE (un entorno de programación) no un lenguaje. El lenguaje C# pertenece a la plataforma .NET Framework, la cual soporta otros varios lenguajes, y no puedes averiguar si un programa ha sido desarrollado específicamente en un lenguaje en concreto de .NET Framework (como C#, VB.NET, o VC++ managed) ya que a pesar de ser lenguajes diferentes son en esencia lo mismo por que todos compilan el mismo set de instrucciones bajo el CLR de Microsoft (y una vez descompilado un executable d e.NET, se pueden representar las instrucciones en cualquiera de los lenguajes soportados por .NET), así que en todo caso lo que puedes identificar (sin disponer del código fuente o de información oficial sobre como se desarrolló) es saber si se trata o no de un ensamblado .NET, pero no saber si fue escrito en C#, F#, VB.NET, o etc...




Cita de: Orubatosu en 28 Febrero 2017, 21:48 PMSegún he mirado por ahi, parecer ser que está escrito en C#

Una forma unicamente específica y segura al 100% para comprobar si un executable ha sido desarrollado bajo alguno de los lenguajes soportados por .NET Framework (C#, VB.NET, etc) sin necesidad de trabajar con aplicaciones externas a Visual Studio para la identificación, sería mediante la tecnología Reflection, intentando cargar el executable mediante ciertos miembros disponibles en la librería de clases de .NET Framework para ese fin, ya que estos solo soportan la carga de ensamblados .NET.

(También podemos utilizar otras aplicaciones especializadas con el mismo fin, descompiladores como .NET Reflector de RedGate)

Mediante esta metodología, podemos comprobar que la aplicación "MegaDownloader", que supongo te refieres a esta de aquí: http://megadownloaderapp.blogspot.com.es/2013/01/enlaces-de-descarga-castellano.html -efectivmente ha sido desarrollada bajo .NET Framework, concretamente bajo la versión 4.0.

Para concluir si la aplicación ha sido desarrollada concretamente en el lenguaje C#, lo podriamos intentar mediante el descarte, comprobando las referencias del executable. En este caso el tal "MegaDownloader" no incluye una referencia directa a la librería Microsoft.VisualBasic.dll la cual sí que se incluye por defecto como referencia en un executable escrito bajo el lenguaje VB.NET, pero lo cierto es que esto es una conclusión inconcluyente. También podriamos analizar/monitorear en profundidad las dependencias que se cargan por el executable con aplicaciones como Dependency Walker, pero esto sería igual de inconcluyente... .NET es .NET, no solamente C#, ni VB.NET.

¡Saludos!
#2759
Scripting / Re: duda comandos batch
1 Marzo 2017, 03:47 AM
Citarsetlocal enabledelayedexpansion

Sirve para habilitar la expansión de variables en tiempo de ejecución.





Citarset cadena1=%1

A la variable "cadena1" se le asigna como valor el argumento nº1 que se le haya enviado al script por linea de comandos.

Ejemplo:
Start /B "" "Script.cmd" "Argumento 1" "Argumento 2"





Citarif "!cadena:~%contador%,1!" neq "" set /a "contador+=1" & call :CreaLetra !cadena:~%contador%,1! & goto ciclo

La sintaxis de esa condicional es penosa, no la tomes como un buen ejemplo a seguir. Debes asegurarte de utilizar los símbolos de apertura y de cierre de grupos de comandos ( ).


Código (bash) [Seleccionar]
If "!cadena:~%contador%,1!" NEQ "" (
set /a "contador+=1"
call :CreaLetra !cadena:~%contador%,1!
goto ciclo
)


Si tu le pasas el argumento "vaca" al script, la variable "%contador%" se usa para realizar un substring en la cadena de texto "vaca" con el que iterar cada caracterer por individual {"v", "a", "c", "a"} y seguidamente llama a la subrutina "CreaLetra" para construir la letra ASCII del caracter correspondiente.




Citarset palabra1=
se supone que set es para declarar una varaible, pero ahi a palabra1 no se le asigna nada

En ciertos lenguajes de programación, el programador puede decidir si desea declarar en la "cabecera" del código todas las variables que se vayan a usar en su código, de esta manera estará siguiendo una guía de diseño para denotar la existencia de esas variables, y eso hará que el código sea más comprensible a la hora de analizarlo. La asignación vacía de variables en Batch se suele utilizar para el mismo fin. No se si me he explicado del todo bien. En otras palabras: simplemente es una forma de organizar el código.

También sirve para eliminar un valor que se haya asignado previamente a esa variable, pero este no es el caso.




Citarset palabra1=%palabra1% ^ ######

Las palabras se forman mediante 6 variables (%palabra1% a %palabra6%) cada una de ellas corresponden a los caracteres que se mostrarán en cada linea por invididual para construir el código ASCII. La variable "palabra1" contiene el código ASCII de la primera linea de los caracteres que se hallan procesado.

Si por ejemplo le pasas el argumento "ba" al script, esto sería el valor de la variable %palabra1% en la primera asignación de la letra "A":

:Letra_a  
set palabra1=  #####    ^   ##


Y con respecto al operador "^" pues sencillamente es algo innecesario para el funcionamiento del algoritmo, no realiza ninguna función en ese código, literálmente no hace nada... ya que no está escapando ningún caracter. Quizás lo ha puesto ahí simplemente para denotar el inicio de cada conjunto de caracteres de almohadillas (#), por que queda "bonito" y ya.

¡Saludos!
#2760
Hola. En Batch sencillamente no puedes tratar de trasladar la sofisticación de un algritmo de un lenguaje orientado a objetos. Batch es una herramienta básica para automatizar tareas cotidianas del sistema, no un lenguaje de programación como tal. De hecho no tiene la capacidad para escribir whiles/untils. Como mucho puedes escribir un búcle que realize una iteración basándose en un rango numérico (For /L) de nMin a nMax.

Puedes usar las etiquetas junto a la sentencia GoTo para tratar de imitar el procedimiento que has mostrado de Java, pero un uso excesivo de (miles de saltos de) GoTo desembocará en un desbordamiento de la pila...

Código (dos) [Seleccionar]
@Echo Off

Set /A "value=5"
Set /A "sum=0"
Set /A "count=%value%"

:Loop
Set /A "sum+=%count%"
Set /A "count-=1"
If %count% NEQ 0 (GoTo :Loop)
:: Loop End

Echo:El sumatorio de %value% es %sum%
Pause & Exit


Resultado de ejecución:
El sumatorio de 5 es 15

PD: No manejo Java, pero analizando la sintaxis por encima deduzco que eso es lo que debería hacer el código de Java que pusiste. Si hubieras puesto el resultado que da el código de Java entonces habria sido más facil de entender para todos.

¡Saludos!