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

#1391
.NET (C#, VB.NET, ASP) / Re: Consulta 1
28 Diciembre 2017, 16:22 PM
Cita de: rigorvzla en 28 Diciembre 2017, 03:26 AMa esto le asigno un setting (no se como se le dice o se llama espero me enteindan((hagan el esfuerzo))) .

"Propiedad" sería el término, aunque no es una traducción literal, pero tecnicamente estás declarando propiedades para una configuración de aplicación y/o de usuario.

Cita de: rigorvzla en 28 Diciembre 2017, 03:26 AMEn una setting string, puedo guardar mas de un valor string?

Eso es exactamente lo mismo que preguntar "¿en un valor de tipo string, puedo asignar más de un string?" o "¿si declaro solamente una variable de tipo string, obtendré varias variables de tipo string?"... supongo que visto así te podrás dar cuenta de que ese tipo de pregunta carece completamente de sentido (aunque por otro lado puedes especificar un string delimitado por comas y luego parsearlo, todo sea dicho, pero esa no es la cuestión). Esto es lo que ocurre cuando uno se propone "aprender a programar" empezando a construir la casa por el tejado, copiando códigos de Internet para crear aplicaciones que compriman archivos, o que reproduzcan archivos multimedia, y al final sin llegar a aprender nada con respecto al uso básico del lenguaje, por que no has iniciado todavía (ni te da la gana iniciar) la etapa del estudio o aprendizaje de los fundamentos de la programación .NET/lenguaje C#, empezando por los datatypes, sintaxis, operadores, búcles y otros miembros característicos de C#. Las cosas se hacen en un orden, ya estamos hartos de ver siempre esto.

Pregúntate que tipo de estructura de datos tiene el propósito de asignar/almacenar y representar más de un elemento... ya sea elementos de tipo string, u otro. Si no sabes la respuesta, vuelve a leer el comentario del compañero @NEBIRE y sigue sus indicaciones/consejos.

¿Al menos has mirado los demás types por defecto disponibles que se te muestran?, en serio, ¿te has interesado lo más mínimo en hacer el "gran esfuerzo" de mover el dedo para hacer click y desplegar la lista de tipos para analizar que más tipos disponibles hay?... ¿y no ves uno en particular que por su nombre te llame especiálmente la atención?:



...ni tan siquiera eso has querido hacer por ti mismo.

Aparte, siempre puedes crear una propiedad del type que quieras... siempre y cuando esta sea serializable. Ya te dije que leyeras sobre el tema, luego no vengas diciendo que la propiedad no se te guarda o que te da un error de serialización y "no sabes lo que es eso", por que ya se te dije lo que debes leer para saber lo que es (y como solucionarlo, aunque eso siempre puedes preguntarlo si no sabes).

De todas formas, no entiendo el objetivo del concepto que has planteado al pretender utilizar un array de strings para almacenar valores que hagan referencia a 20 propiedades de 20 controles distintos, por lo general deberías administrar una propiedad de tipo string distinta por y para cada propiedad de cada control/botón; si la intención de mover la declaración de 20 strings a un Array de 20 strings es simplificar código, entonces yo creo que más bien empezaría por reevaluar la curiosa necesidad por la que tienes que crear 20 botones, me refiero, evaluar si realmente son necesarios 20 botones o puedes refactorizar el código para hacerlo de otra forma más simple, sencilla y eficiente.

Saludos.
#1392
Te diría lo que ya te dijo el compañero @NEBIRE en aquél post de "Consulta 1"... pero no creo que valga la pena, tampoco quiero torturar a nadie más de la cuenta, si no quieres buscar y leer la documentación oficial cada vez que tengas este tipo de dudas para aprender, que le vamos a hacer.

Te explico, "{n}" es el índice de los argumentos especificados a la derecha del formato de texto.

Esto es una demostración y un simple juego de palabras... por llamarlo de alguna forma:
Código (vbnet) [Seleccionar]
String.Format("Yo soy {1}, tú eres {0}, él es {2}, todos somos {0}, {1} y {2}.", "cero", "uno", "dos")

#1393
Cita de: rigorvzla en 27 Diciembre 2017, 04:51 AMno se, como hacer uso de lo que se muestra en el Listbox
(...)
quiero de alguna forma seleccionarlos
(...)
que deberia hacer o como debo plantear el asunto?


Analiza los ejemplos. saludos!
#1394
CitarConfigurar una pantalla rectangular para que sea quadrada

Más bien lo que deberías configurar (suponiendo que haya entendido bien el problema que tienes) es el programa que uses para visualizar imágenes, busca la opción para que no estire/ajuste la imagen a los laterales de la pantalla.

Saludos.
#1395
No uses esa función, lo que quieres obtener es un array o colección con las lineas de texto, no un string con todo el contenido de texto. Usa la función System.IO.File.ReadLines para devolver una colección de evaluación vaga ( IEnumerable ) con las lineas de texto, o en su defecto puedes usar la función System.IO.File.ReadAllLines para devolver un Array, pero si no vas a leer todas las lineas de principio a fin entonces preferiblemente usa la función ReadLines antes que ReadAllLines para evitar un consumo de memoria innecesario al cargar todas las lineas del archivo de golpe.

Para resolver cualquier otra pregunta que tengas, como por ejemplo "¿cómo borrar la última linea?", solo tienes que estudiar un poquito sobre como manipular Arrays y/o Colecciones de tipo Genérico. Puedes usar LINQ-to-Objects, por ejemplo, o convertir la colección IEnumerable devuelta a una colección de tipo List y usar el método List.RemoveAt().

Saludos.
#1396
Cita de: rigorvzla en 24 Diciembre 2017, 17:17 PM
que se debe hacer?

Esto es una regla básica de toda la programación en general: al llamar a un programa command-line, los argumentos con espacios en blanco debes encerrarlos entre comillas dobles. ej. "C:\Ruta con espacios".

A todo esto, te he mostrado decenas de veces como evitar fallos tontos por el abuso del operador "+" en concatenaciones engorrosas de string, usando en su lugar la función string.Format(). Revísate los comentarios, por que te lo he mostrado varias veces y en varias preguntas distintas.

De hecho, te lo he estado mostrando desde el primer día de tus preguntas en el foro con mi primera respuesta:
Cita de: Elektro
Código (csharp) [Seleccionar]
Arguments = string.Format("a -t7z -mx=9 -mmt=on -ms=on \"{0}\" \"{1}\"", dstFilePath, srcFilePath),

Intenta tomar los ejemplos que se te dan.

Saludos!
#1397
Foro Libre / Re: Feliz Navidad a todos
24 Diciembre 2017, 04:26 AM
 



#1398
Al final descubrí la solución gracias a una persona. Tuve que hacer lo que indica este artículo:


En resumen, solicité una API key en mi cuenta Business de Paypal, e introduje los datos de la API key en el formulario de configuración de WooCommerce PayPal Express Checkout Gateway.

Solucionado.
#1399
Tengo un sitio web hecho con WordPress, y estoy utilizando los plugins WoooCommerce y WooCommerce PayPal Express Checkout Gateway


Yo ya no sé que hacer ni que intentar, estoy desesperado. He creado una cuenta Paypal de tipo "Bussiness", la he enlazado al plugin (mediante la opción que sale en la página de configuración del plugin para hacer eso), creo que he colocado todos los datos necesarios, lo he hecho todo bien... o eso creo, pero al momento de darle al botón de Paypal Express, me sale este error (del cual no he encontrado información alguna en Internet):



Y aquí me sale un mensaje de aviso diciéndome que debo enlazar mi cuenta d ePaypal, pero es que eso ya lo he hecho mil veces... y sigue diciéndome lo mismo.







¿Alguien me puede decir que más se supone que debo hacer para que las compras de mi sitio web funcionen mediante mi cuenta de Paypal?.

Gracias...




Así es como lo tengo configurado todo:

 
#1400
CÓMO OBTENER EL PRECIO DEL BITCOIN DE UNA CANTIDAD DE CUALQUIER CRIPTOMONEDA EN LA MONEDA QUE QUIERAS

Con el fin de ahorrar la escritura de código, reutilizaremos la enumeración que ya publiqué en este otro post:


( deben copiar y pegar la enumeración "Currencies" junto al código que mostraré a continuación para que funcione. )

En esta ocasión, la API que utilizaremos será: https://coinmarketcap.com/api/, la cual soporta muchas criptomonedas, aunque no muchas divisas.

Primero definiremos una interfáz con nombre ICryptoCurrency, que nos servirá para representar criptomonedas (Bitcoin, Ethereum, Litecoin, etcétera) y sus funcionalidades.

Código (vbnet) [Seleccionar]
Public Interface ICryptoCurrency

   ''' <summary>
   ''' Gets the canonical name of this <see cref="ICryptoCurrency"/>.
   ''' </summary>
   ReadOnly Property Name As String

   ''' <summary>
   ''' Gets the symbol of this <see cref="ICryptoCurrency"/>.
   ''' </summary>
   ReadOnly Property Symbol As String

   ''' <summary>
   ''' Gets the price equivalency for 1 amount of this <see cref="ICryptoCurrency"/> converted to the specified currency.
   ''' </summary>
   Function GetPrice(ByVal currency As Currencies) As Double

   ''' <summary>
   ''' Gets the price equivalency for the specified amount of this <see cref="ICryptoCurrency"/> converted to the specified currency.
   ''' </summary>
   Function GetPrice(ByVal amount As Double, ByVal currency As Currencies) As Double

   ''' <summary>
   ''' Asunchronously gets the price equivalency for 1 amount of this <see cref="ICryptoCurrency"/> converted to the specified currency.
   ''' </summary>
   Function GetPriceAsync(ByVal currency As Currencies) As Task(Of Double)

   ''' <summary>
   ''' Asynchronously gets the price equivalency for the specified amount of this <see cref="ICryptoCurrency"/> converted to the specified currency.
   ''' </summary>
   Function GetPriceAsync(ByVal amount As Double, ByVal currency As Currencies) As Task(Of Double)

End Interface


Seguidamente implementamos las criptomodas que queramos, en este caso el Bitcoin y Ethereum:

( para implementar más criptomonedas solo tienen que copiar y pegar la clase del Bitcoin o del Ethereum, modificar el nombre y el símbolo para la nueva criptomoneda, y lo demás dejarlo todo exactamente igual... )

Código (vbnet) [Seleccionar]
''' <summary>
''' Represents the Bitcoin (symbol: BTC) cryptocurrency.
''' </summary>
Public Class Bitcoin : Implements ICryptoCurrency

   Public Sub New()
   End Sub

   Public ReadOnly Property Name As String = "Bitcoin" Implements ICryptoCurrency.Name

   Public ReadOnly Property Symbol As String = "BTC" Implements ICryptoCurrency.Symbol

   ''' <summary>
   ''' Gets the price for 1 Bitcoins converted to the specified currency.
   ''' </summary>
   Public Overridable Function GetPrice(ByVal currency As Currencies) As Double Implements ICryptoCurrency.GetPrice
       Return CryptoCurrencyUtil.GetCryptoCurrencyPrice(Me, 1, currency)
   End Function

   ''' <summary>
   ''' Gets the price for the specified amount of Bitcoins converted to the specified currency.
   ''' </summary>
   Public Overridable Function GetPrice(ByVal amount As Double, ByVal currency As Currencies) As Double Implements ICryptoCurrency.GetPrice
       Return CryptoCurrencyUtil.GetCryptoCurrencyPrice(Me, amount, currency)
   End Function

   ''' <summary>
   ''' Asynchronously gets the price for 1 Bitcoins converted to the specified currency.
   ''' </summary>
   Public Overridable Async Function GetPriceAsync(ByVal currency As Currencies) As Task(Of Double) Implements ICryptoCurrency.GetPriceAsync
       Return Await CryptoCurrencyUtil.GetCryptoCurrencyPriceAsync(Me, 1, currency)
   End Function

   ''' <summary>
   ''' Asynchronously gets the price for the specified amount of Bitcoins converted to the specified currency.
   ''' </summary>
   Public Overridable Async Function GetPriceAsync(ByVal amount As Double, ByVal currency As Currencies) As Task(Of Double) Implements ICryptoCurrency.GetPriceAsync
       Return Await CryptoCurrencyUtil.GetCryptoCurrencyPriceAsync(Me, amount, currency)
   End Function

End Class


Código (vbnet) [Seleccionar]

''' <summary>
''' Represents the Ethereum (symbol: ETH) cryptocurrency.
''' </summary>
Public Class Ethereum : Implements ICryptoCurrency

   Public Sub New()
   End Sub

   Public ReadOnly Property Name As String = "Ethereum" Implements ICryptoCurrency.Name

   Public ReadOnly Property Symbol As String = "ETH" Implements ICryptoCurrency.Symbol

   ''' <summary>
   ''' Gets the price for 1 Ethereums converted to the specified currency.
   ''' </summary>
   Public Overridable Function GetPrice(ByVal currency As Currencies) As Double Implements ICryptoCurrency.GetPrice
       Return CryptoCurrencyUtil.GetCryptoCurrencyPrice(Me, 1, currency)
   End Function

   ''' <summary>
   ''' Gets the price for the specified amount of Ethereums converted to the specified currency.
   ''' </summary>
   Public Overridable Function GetPrice(ByVal amount As Double, ByVal currency As Currencies) As Double Implements ICryptoCurrency.GetPrice
       Return CryptoCurrencyUtil.GetCryptoCurrencyPrice(Me, amount, currency)
   End Function

   ''' <summary>
   ''' Asynchronously gets the price for 1 Ethereums converted to the specified currency.
   ''' </summary>
   Public Overridable Async Function GetPriceAsync(ByVal currency As Currencies) As Task(Of Double) Implements ICryptoCurrency.GetPriceAsync
       Return Await CryptoCurrencyUtil.GetCryptoCurrencyPriceAsync(Me, 1, currency)
   End Function

   ''' <summary>
   ''' Asynchronously gets the price for the specified amount of Ethereums converted to the specified currency.
   ''' </summary>
   Public Overridable Async Function GetPriceAsync(ByVal amount As Double, ByVal currency As Currencies) As Task(Of Double) Implements ICryptoCurrency.GetPriceAsync
       Return Await CryptoCurrencyUtil.GetCryptoCurrencyPriceAsync(Me, amount, currency)
   End Function

End Class


Por último, creamos una clase con nombre CryptoCurrencyUtil en la que declararemos las funciones GetCryptoCurrencyPrice y GetCryptoCurrencyPriceAsync:

Código (vbnet) [Seleccionar]
Public NotInheritable Class CryptoCurrencyUtil

   Private Sub New()
   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Gets the price of the specified cryptocurrency converted to the target currency.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="cryptoCurrency">
   ''' The source <see cref="ICryptoCurrency"/>.
   ''' </param>
   '''
   ''' <param name="amount">
   ''' The amount value of the source cryptocurrency.
   ''' </param>
   '''
   ''' <param name="currency">
   ''' The target currency.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' The resulting price.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="NotImplementedException">
   ''' The specified currency is not supported by this API.
   ''' </exception>
   '''
   ''' <exception cref="HttpListenerException">
   ''' The requested cryptocurrency rate info is empty due to an unknown error.
   ''' </exception>
   '''
   ''' <exception cref="FormatException">
   ''' Element name '{0}' not found. Unknown error reason.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Function GetCryptoCurrencyPrice(ByVal cryptoCurrency As ICryptoCurrency, ByVal amount As Double, ByVal currency As Currencies) As Double

       Dim t As New Task(Of Double)(
           Function() As Double
               Return CryptoCurrencyUtil.GetCryptoCurrencyPriceAsync(cryptoCurrency, amount, currency).Result
           End Function)

       t.Start()
       t.Wait()

       Return t.Result

   End Function

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Asynchronously gets the price of the specified cryptocurrency converted to the target currency.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="cryptoCurrency">
   ''' The source <see cref="ICryptoCurrency"/>.
   ''' </param>
   '''
   ''' <param name="amount">
   ''' The amount value of the source cryptocurrency.
   ''' </param>
   '''
   ''' <param name="currency">
   ''' The target currency.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <returns>
   ''' The resulting price.
   ''' </returns>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <exception cref="NotImplementedException">
   ''' The specified currency is not supported by this API.
   ''' </exception>
   '''
   ''' <exception cref="HttpListenerException">
   ''' The requested cryptocurrency rate info is empty due to an unknown error.
   ''' </exception>
   '''
   ''' <exception cref="FormatException">
   ''' Element name '{0}' not found. Unknown error reason.
   ''' </exception>
   ''' ----------------------------------------------------------------------------------------------------
   <DebuggerStepThrough>
   Public Shared Async Function GetCryptoCurrencyPriceAsync(ByVal cryptoCurrency As ICryptoCurrency, ByVal amount As Double, ByVal currency As Currencies) As Task(Of Double)

       Dim validCurrencies As String() =
       {
           "AUD", "BRL", "CAD", "CHF", "CLP", "CNY", "CZK", "DKK",
           "EUR", "GBP", "HKD", "HUF", "IDR", "ILS", "INR", "JPY",
           "KRW", "MXN", "MYR", "NOK", "NZD", "PHP", "PKR", "PLN",
           "RUB", "SEK", "SGD", "THB", "TRY", "TWD", "USD", "ZAR"
       }

       If Not validCurrencies.Contains(currency.ToString().ToUpper()) Then
           Throw New NotImplementedException("The specified currency is not supported by this API.",
                                             New ArgumentException("", paramName:="currency"))
       End If

       Dim uri As New Uri(String.Format("https://api.coinmarketcap.com/v1/ticker/{0}/?convert={1}",
                                        cryptoCurrency.Name, currency.ToString()))

       Dim req As WebRequest = WebRequest.Create(uri)
       Using res As WebResponse = Await req.GetResponseAsync(),
                 SR As New StreamReader(res.GetResponseStream()),
                 XmlReader As XmlDictionaryReader =
                     JsonReaderWriterFactory.CreateJsonReader(SR.BaseStream, Encoding.UTF8, New XmlDictionaryReaderQuotas, Nothing)

           Dim xml As XElement = XElement.Load(XmlReader)
           If (xml.IsEmpty) Then
               Dim errMsg As String = String.Format("The requested cryptocurrency rate info is empty due to an unknown error. ""{0}""", uri.ToString())
               Throw New HttpListenerException(HttpStatusCode.NotFound, errMsg)
           End If

           Dim elementName As String = String.Format("price_{0}", currency.ToString().ToLower())
           Dim element As XElement = xml.Element("item").Element(elementName)
           If (element Is Nothing) Then
               Throw New FormatException(String.Format("Element name '{0}' not found. Unknown error reason.", elementName))
           End If

           Dim price As Double = Double.Parse(element.Value, NumberStyles.Currency, New NumberFormatInfo With {.CurrencyDecimalSeparator = "."})
           Select Case amount
               Case Is = 1
                   Return price
               Case Is < 1
                   Return (price / (1 / amount))
               Case Else ' > 1
                   Return (price * amount)
           End Select

       End Using

   End Function

End Class


LISTO.

Modo de empleo para obtener la equivalencia de 1 bitcoins a dólares:
Código (vbnet) [Seleccionar]
Dim btc As New Bitcoin()
Dim price As Double = btc.GetPrice(Currencies.USD)
Debug.WriteLine(String.Format("{0:C}", price, CultureInfo.CurrentCulture))


O tambien:
Código (vbnet) [Seleccionar]
Dim cryptoCurrency As ICryptoCurrency = New Bitcoin()
Dim price As Double = CryptoCurrencyUtil.GetCryptoCurrencyPrice(cryptoCurrency, 1, Currencies.USD)
Debug.WriteLine(String.Format("{0:C}", price, CultureInfo.CurrentCulture))


Modo de empleo para obtener la equivalencia de 5.86 ethereums a dólares:
Código (vbnet) [Seleccionar]
Dim eth As New Ethereum()
Dim price As Double = eth.GetPrice(5.86, Currencies.USD)
Debug.WriteLine(String.Format("{0:C}", price, CultureInfo.CurrentCulture))


O tambien:
Código (vbnet) [Seleccionar]
Dim cryptoCurrency As ICryptoCurrency = New Ethereum()
Dim price As Double = CryptoCurrencyUtil.GetCryptoCurrencyPrice(cryptoCurrency, 5.86, Currencies.USD)
Debug.WriteLine(String.Format("{0:C}", price, CultureInfo.CurrentCulture))






EDITO:
Se me olvidaba comentar... que por supuesto el nombre de la criptomoneda debe ser soportado por la API en cuestión... o mejor dicho el identificador, el campo "id" (no el campo "name"), así que quizás quieran adaptar las representaciones de criptomonedas para añadirle una propiedad con nombre "id" para ese propósito...

Aquí pueden ver todos los campos que devuelve el documento JSON:

Nótese que en el caso de Bitcoin y Ethereum el nombre es igual que el identificador para la API, por eso lo he simplificado y no he implimentado el campo "Id", pero no todos los nombres son iguales que los identificadores, véase un ejemplo:
Cita de: https://api.coinmarketcap.com/v1/ticker/...
id   "bitcoin-cash"
name   "Bitcoin Cash"
...

Saludos.