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

#1042
Has explicado lo que quieres conseguir hacer, ahora bien, ¿cual es la duda que tienes al respecto?.

De todas formas te digo: utiliza la función String.Split() pasándole como argumento el caracter de espacio, y entonces la función te devolverá un Array de palabras con el que ya puedes construir el contenido del ListBox.

Saludos!
#1043
Cita de: NEBIRE en 16 Abril 2018, 04:42 AMy como habrá carpetas con muchos ficheros, cada segundo (por ejemplo) actualizas la ruta el nombre del fichero actual en otro label...

Añado: a menos que estemos trabajando en un escenario asincrónico, donde el sabio consejo o advertencia de retrasar la frecuencia de actualización del texto del control en la UI en realidad no tendría sentido aplicarlo puesto que hacerlo no supondría ningún impacto positivo (tampoco supondría un impacto negativo, claro está, exceptuando la posible sensación de estar visualizando una actualización lenta del texto del control); el retraso intencionado no supondría ningún nebeficio en la respuesta de la UI ni la velocidad del algoritmo en segundo plano que estuviese procesando archivos/carpetas/lo que sea.

Saludos!
#1044
Cita de: Jeezy en 16 Abril 2018, 07:26 AM
Excepción no controlada del tipo 'System.DivideByZeroException' en Kuroi Crypter.exe

Información adicional: Attempted to divide by zero.

Añade una condicional para verificar que el argumento de longitud no sea Cero, ni tampoco mayor que la longitud del string...

Código (csharp) [Seleccionar]
public string[] SplitString(string TheString, int StringLen) {

   if (StringLen <= 0) {
       throw new ArgumentOutOfRangeException("StringLen", "Value bigger than 0 is required.");

   } else if (StringLen >= TheString.Length) {
       throw new ArgumentOutOfRangeException("StringLen", "Value smaller than the source string length is required.");

   } else {
       int Arrcount = new int();
       long I;
       string[] TempArray = new string[(TheString.Length - 1) / (StringLen) + 1];
       for (I = 1; I <= TheString.Length; I += StringLen)
       {
           TempArray[Arrcount] = Strings.Mid(TheString, Convert.ToInt32(I), StringLen);
           Arrcount++;
       }
       return TempArray;

   }

}


Aparte de eso, si estás en C# no deberías depender de los miembros exclusivos de VB; en lugar de la función Mid puedes utilizar la función string.Substring()

y por favor la próxima vez utiliza las etiquetas GeShi para isnertar insertar bloques de código, estamos en un foro de programamación donde se requiere aplicar unas reglas mínimas de formato.

Saludos.
#1045
Esta es mi primera gran contribuición del año al tema que concierne la privacidad de Facebook y los horribles secretos que esconde esta trama...

¿ Es Mark Zuckerberg un Esclavo Illuminati ?...

[youtube=640,360]https://www.youtube.com/watch?v=4g78TkolBYE&t=317s[/youtube]

PD: vale, en realidad el video solo es para echarnos unas risas con los magufos iluminados estos. :P

Saludos!
#1046
Suponiendo que el valor mínimo es cero, y el valor máximo que le quieres asignar debe ser la cantidad total de archivos de todos los directorios y subdirectorios (de lo contrario, acláralo), pues entonces debes hacer dos iteraciones principales, la primera para declarar una colección a la que le irás añadiendo la ruta absoluta de cada archivo encontrado con tu método de recursividad, y entonces el valor máximo (es decir, la cantidad total de archivos) lo puedes obtener de la propiedad IEnumerable.Count de dicha colección. La segunda iteración principal la harías sobre los elementos de la susodicha colección.

Cita de: **Aincrad** en 15 Abril 2018, 20:36 PMsi puedes ayudarme un poco con un ejemplo de como lo harias tu  XD .

Es que hay varias formas de hacer practicamente lo mismo, al final depende de como quieras tú representar la información/progreso en la interfaz de usuario. La forma "estándar" (del mismo modo que lo hace Windows, en el diálogo de progreso que aparece cuando mueves o eliminas directorios por ejemplo) sería la que te he mencionado. En varios de los aportes que he compartido en el foro puedes encontrar un algoritmo de progreso, como por ejemplo aquí: https://foro.elhacker.net/net/source_mastermusik_manager_v20-t426379.0.html;msg1983807#msg1983807

Otra opción de representación de la información de progreso sería mostrar dos barras de progreso, una para el progreso total de archivos, y otra para mostrar el progreso individual por carpeta, es decir la cantidad de archivos a procesar en la carpeta actual, y al terminar se suma a la barra de progreso actual, no se si me explico.

O puedes hacer el progreso solamente por cantidad de carpetas en lugar de cantidad de archivos total, aquí tienes un ejemplo: https://foro.elhacker.net/net/sourcecode_ddmm_dummy_drive_mirror_maker-t479871.0.html

O también puedes ahorrarte mayores esfuerzos y simplemente colocar tu barra de progreso en estado indeterminado.

Un saludo!
#1048
Habría ciertas cosas que mencionar sobre el modo de ejecución, pero no quiero sobrepasarme con críticas constructivas. Sin embargo, veo necesario mencionar un fallo de diseño en concreto que considero grave... es aquí:

Código (vbnet) [Seleccionar]
IO.File.SetAttributes(Filename, IO.FileAttributes.Normal)
...
IO.File.SetAttributes(DirectoryName, IO.FileAttributes.Normal)


No si lo haces así intencionadamente o simplemente no te diste cuenta, pero te explico de todas formas: al llamar al método File.SetAttributes() estás reemplazando (o mejor dicho en este caso: eliminando) cualquier atributo anterior que tuviese el archivo o carpeta, como por ejemplo atributo de sistema, de solo lectura, o de archivo indizado. Deberías asegurarte de conservar los atributos anteriores, y añadirle el nuevo atributo o eliminarle el que quieras eliminarle (y solo ese). Ya expliqué como hacerlo en mi anterior comentario, aquí tienes un ejemplo:

Código (vbnet) [Seleccionar]
Dim fi As New FileInfo("C:\file.txt")
Dim flag As FileAttributes = FileAttributes.Hidden

If fi.Attributes.HasFlag(flag) Then
   ' Elimino el atributo de archivo oculto peservando el resto de atributos.
   fi.Attributes = (fi.Attributes And Not flag)
End If

Debug.WriteLine(fi.Attributes.ToString())


Con la función File.GetAttributes() y el método File.SetAttributes() la metodología sería idéntica a la que acabo de demostrar, solo que usando dichos miembros en lugar del tipo FileInfo y su propiedad FileInfo.Attributes.

Saludos!
#1049
Cita de: rigorvzla en 15 Abril 2018, 15:37 PMel codigo para ver el progreso de conversion de  los archivos, esto tambien eh buscado como loco sin exito

Para ello debes leer la salida estándar (o stdout por su acrónimo en Inglés) del proceso.

Si buscas encontrarás miles de ejemplos genéricos para C#. Te hago un resumen: en la referencia de tu objeto de tipo Process debes activar la propiedad ProcessStartInfo.RedirectStandardOutput para poder redirigir la salida estándar del proceso, y con ello debes elaborar tu propio algoritmo de análisis de datos (o data parsing) para calcular un porcentaje de progreso con los datos que puedas extraer/obtener de la salida del proceso (algo facil puesto que la salida de FFMPEG muestra un porcentaje). Opcionálmente también te convendría activar la propiedad ProcessStartInfo.RedirectStandardError para redirigir la salida de error y elaborar otro análisis de datos con el que capturar (y luego controlar) posibles errores que aparezcan en la salida de FFMPEG.

Teniendo esos dos conceptos claros, deberás elegir como quieres implementar el controlador de la salida stdout y stderr: de forma sincrónica, o asincrónica. Eso ya depende de tus necesidades y cuanto tiempo quieras invertir en hacerlo más sofisticado y estable.
Ten en cuenta que la frecuencia de actualización de la salida estándar de FFMPEG tiene intervalos cortos de tiempo, y por eso una implementación sincrónica (una llamada bloqueante) de la lectura del stdout podría resultar en un ligero aumento del tiempo total de ejecución de FFMPEG que ralentizaría en menor o mayor medida el tiempo necesario para finalizar la operación de conversión / lo que sea.
Para una implementación asincrónica primero debes activar la propiedad Process.EnableRaisingEvents y luego suscribirte a los eventos Process.OutputDataReceived y Process.ErrorDataReceived en función de si quieres controlar la salida stdout o stderr, o ambas (que sería lo eficiente). No debes tener en cuenta la salida de entrada (stdin) en este caso.

Por último, aquí te dejo un wrapper que desarrollé de FFMPEG hace tiempo, está escrito en VB.NET (para ver cosas hechas en C# ya tienes a Google) y no tiene la funcionalidad de capturar video, está enfocado a demuxear streams de video y audio, y convertir audio, pero quizás te pueda servir de algún modo aunque sea por analizar el código fuente y ver como extraigo los datos de la salida stdout y stdrr (de forma sincrónica) y como implementé la notificación de progreso de la operación de FFMPEG, la cual está orientada al uso de eventos...


nota: hace siglos que no uso ni actualizo ese código. en el caso de que no funcione probablemente pueda ser causa de que hayan modificado algún string en la salida de FFMPEG y haya que renovar el algoritmo de captura de datos del búfer stdout.

Saludos.
#1050
Foro Libre / Re: Privacidad de pCloud
15 Abril 2018, 14:01 PM
Cita de: victorsnk en 15 Abril 2018, 12:31 PM
Según se presentan y opiniones, es de los más respetuosos con la privacidad.

¿de donde sacaste esa opinión?, a mi me parece que de "los más respetuosos" tiene bien poco:


CitarRecopilamos información que lo identifica personalmente, como su correo electrónico y otra información de identificación personal que usted elige proporcionarnos o que elige incluir en su perfil o cuenta de pCloud.

La decisión de proporcionar esta información es opcional. Sin embargo, si elige no proporcionar la información solicitada, es posible que no pueda usar algunas o todas las funciones del Sitio o de los Servicios..

Recopilamos automáticamente información sobre las acciones que realiza en el Sitio ("Datos de uso"). Por ejemplo, cada vez que utiliza el Sitio, recopilamos automáticamente el tipo de navegador que utiliza, su sistema operativo, su Proveedor de servicios de Internet, su dirección IP, las páginas que visita y el tiempo y la duración de sus visitas al Sitio.

Nos reservamos el derecho de divulgar esta información agregada, a terceros para cualquier propósito a nuestra entera discreción. Dichos terceros incluyen pero no se limitan a socios estratégicos, subcontratistas, etc.

Podemos utilizar su dirección de correo electrónico para fines comerciales, enviándole boletines u otras comunicaciones por correo electrónico.

su dirección de correo electrónico estará visible cuando comparta un archivo o una carpeta con otro usuario del Sitio o de los Servicios

podemos contratar proveedores de servicios para proporcionar ciertos servicios, como alojamiento y mantenimiento, almacenamiento y gestión de datos, procesamiento de transacciones y marketing y promociones.

proporcionamos a nuestros proveedores de servicios la información necesaria para que puedan realizar estos servicios en nuestro nombre.

Podemos compartir información personal y datos de uso con empresas que controlan, controlado por o bajo control común con pCloud

Si pCloud se fusiona, adquiere o vende o en el caso de una transferencia de algunos o todos nuestros activos, podemos divulgar o transferir información personal y datos de uso en relación con dicha transacción

pCloud coopera con el gobierno y los funcionarios encargados de hacer cumplir la ley (y las partes privadas, fuera de la Unión Europea) para hacer cumplir y cumplir con la ley. Podemos divulgar información personal y cualquier otra información sobre usted al gobierno o funcionarios encargados de hacer cumplir la ley (y partes privadas, fuera de la Unión Europea) si, a nuestro criterio, creemos que es necesario o apropiado para responder a solicitudes legales.

Tenga en cuenta que cada vez que comparta información en una página de perfil disponible públicamente o en cualquier otro foro público en el Sitio, otros podrán acceder a esa información. Además, recuerde que cuando comparte información en cualquier otra comunicación con terceros, esa información puede ser transmitida o hecha pública por otros. Esto significa que cualquier persona con acceso a dicha información puede potencialmente utilizarla para cualquier fin, incluido el envío de comunicaciones no solicitadas.

antenemos medidas de seguridad físicas, electrónicas y de procedimiento para proteger la confidencialidad y seguridad de la información que se nos transmite. Sin embargo, no se puede garantizar que la transmisión de datos a través de Internet u otras redes sea 100% segura. Como resultado, aunque nos esforzamos por proteger la información transmitida en oa través del Sitio o los Servicios, no podemos garantizar ni garantizamos la seguridad de la información que usted transmite en oa través del Sitio o los Servicios, y lo hace bajo su propio riesgo.

Nuestro Sitio y nuestros Servicios pueden contener enlaces a otros sitios web o permitir que otros le envíen dichos enlaces.

Tenga en cuenta que su información personal y comunicaciones pueden ser transferidas y mantenidas en servidores o bases de datos ubicadas fuera de su estado, provincia o país. Tenga en cuenta que procesamos y almacenamos toda la información en servidores seguros en los Estados Unidos y / o la Unión Europea. Esto es necesario para procesar su información personal. Las leyes en los Estados Unidos o en la Unión Europea pueden no proteger su privacidad como las que se encuentran en su ubicación. Al usar nuestro Sitio o Servicios y enviar Información personal a través del Sitio, usted acepta esta recopilación, uso, transferencia y divulgación de su Información personal y que dicha recopilación, uso, transferencia y divulgación se regirá por las leyes aplicables en los Estados Unidos. Estados y la Unión Europea.

Si reside en la Unión Europea, tiene el derecho legal de obtener una copia de toda la información personal sobre usted en poder de nosotros. Si lo solicita, le proporcionaremos una copia de esta información sujeta a una tarifa que no excederá £10.

(tócate los cojones con esa última sentencia, tener que pagarles para que te enseñen toda la información personal que han recopilado de tu persona y de tus archivos)

Esto tiene su gracia y todo, si eres menor de 13 años, y solo si lo eres, te puedes librar (en teoría) de estar sujeto a estas políicas abusivas de mierd@:
CitarNo recopilamos a sabiendas información personal de niños menores de 13 años. Si nos damos cuenta de que hemos recibido inadvertidamente información personal de un niño menor de 13 años, eliminaremos dicha información de nuestros registros.

CitarDe vez en cuando, podemos cambiar esta Política de privacidad. Si decidimos cambiar esta Política de privacidad

( ya te digo que si pueden y lo hacen, mejor no entrar a http://web.archive.org para descubrir antiguas políticas de privacidad, por que nos puede dar un cáncer de ojos. )




He usado Google Translate para la traducción de las políticas de privacidad. No traduje todo el texto, solo lo más relevante.

Luego está esto otro:


CitarCon pCloud, sus archivos se almacenan en al menos tres ubicaciones de servidor en un área de almacenamiento de datos altamente segura. Opcionalmente, puede suscribirse a pCloud Crypto y tener sus archivos más importantes cifrados y protegidos con contraseña. Proporcionamos el llamado cifrado del lado del cliente, que, a diferencia del cifrado del lado del servidor, significa que nadie, excepto usted, tendrá las claves para el descifrado de archivos.

Vamos, que tus archivos van a estar alojados en al menos 3 servidores distintos sin cifrar, a menos que pagues por ese servicio en particular (el cual cuesta 5€ mensuales o 47€ anuales, adicionálmente al precio inicial que cueste tu plan de datos), lo cual no es muy respetuoso con la privacidad de tus archivos, ni honesto que digamos... pero bueno, en parte es comprensible ya que algo deben vendernos, ¿no?, me refiero, de algo tienen que vivir, son una empresa, y eso de "pCloud Crypto" seguramente hayan hecho una patente y todo xD. Al menos en el manifiesto de sus políticas de privacidad parecen ser sinceros y no ocultar las intenciones y practicas que están dispuestos a llevar a cabo con tus archivos y la información personal que te identifica como individuo.

En resumen, este servicio no ofrece nada nuevo, ni tampoco nada mejor de lo que ofrecen los demás, ni en privacidad ni en absolutamente nada, de hecho tienes que pagar por la privacidad de tus archivos si realmente quieres que respeten tu privacidad en ese sentido, y solo en ese sentido, por que con la información tuya personal harán lo que les salga de los cojones con terceras compañías de marketing, gobiernos, afiliados y etcétera... como hacen todas las compañías hoy en día, vaya.

Conclusión final: pCloud es exactamente el mismo tipo de servicio que ya hemos visto en tantas otras ocasiones, pero con distinto nombre.

Saludos!