Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-05-2025
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Poder: 3
navbuoy Va por buen camino
Conversor de Monedas Online

Me dio por trastear un poco con otra API web y decidí hacer este conversor de Moneda
Utilizo los alpha components para temas del Skin

os paso el codigo (obviamente faltaria el API Key claro, la modalidad gratuita de la web de Currencies creo que permite 100 consultas por mes)

utilizo el componente NetHttpClient para la consulta al API

Unit1.h

Código:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include <System.Net.HttpClient.hpp>
#include <System.Net.HttpClientComponent.hpp>
#include <System.Net.URLClient.hpp>
#include "sSkinManager.hpp"
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Imaging.jpeg.hpp>
#include "sComboBox.hpp"
#include "sCustomComboEdit.hpp"
#include "sEdit.hpp"
#include "sMaskEdit.hpp"
#include <Vcl.Mask.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
	TLabel *Label1;
	TButton *Button1;
	TNetHTTPClient *NetHTTPClient1;
	TMemo *Memo1;
	TImage *Image1;
	TsSkinManager *sSkinManager1;
	TsEdit *Edit1;
	TsComboBox *ComboBox1;
	TsComboBox *ComboBox2;
	void __fastcall Button1Click(TObject *Sender);
	void __fastcall FormCreate(TObject *Sender);
private:	// User declarations
public:		// User declarations
	__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <System.JSON.hpp>
#include <System.Net.HttpClient.hpp>
#include <System.Net.URLClient.hpp>
#include <System.Net.HttpClientComponent.hpp>

#include <System.SysUtils.hpp> // Asegúrate de incluir esto


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "sSkinManager"
#pragma link "sComboBox"
#pragma link "sCustomComboEdit"
#pragma link "sEdit"
#pragma link "sMaskEdit"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------

String getSimboloMoneda(String codigo) {
    if (codigo == "USD") return "$";
    if (codigo == "EUR") return "€";
    if (codigo == "GBP") return "£";
    if (codigo == "JPY") return "¥";
    if (codigo == "COP") return "$"; // Peso colombiano también usa $
    if (codigo == "ARS") return "$"; // Peso argentino
    if (codigo == "BRL") return "R$";
    return codigo; // Por defecto, muestra el código
}

  // Conversor de Divisas usando C++ Builder y ExchangeRate-API
// Este ejemplo asume que usas un Form con:
// - ComboBox1: moneda origen
// - ComboBox2: moneda destino
// - Edit1: cantidad a convertir
// - Button1: botón "Convertir"
// - Label1: resultado
// Asegúrate de agregar TNetHTTPClient desde la Tool Palette


void __fastcall TForm1::Button1Click(TObject *Sender)
{

	String fromCurrency = ComboBox1->Text;
	String toCurrency = ComboBox2->Text;
	double cantidad = StrToFloatDef(Edit1->Text, -1);

TFormatSettings formato;
GetLocaleFormatSettings(0, formato); // Carga valores predeterminados

// Ahora forzamos los europeos
formato.DecimalSeparator = ',';
formato.ThousandSeparator = '.';
formato.CurrencyString = "€"; // Opcional si vas a mostrar moneda
formato.CurrencyFormat = 3;   // Simbolito después del número


	if (cantidad < 0) {
		ShowMessage("Cantidad no válida");
		return;
	}

   String url = "https://api.apilayer.com/currency_data/convert?to=" + toCurrency + "&from=" + fromCurrency + "&amount=" + FloatToStr(cantidad);

			 TNetHeaders headers;
			 headers.set_length(1);
			 headers[0].Name = "apikey";
			 headers[0].Value = " ";  //Aqui tu clave de API



	try {
		  String respuesta = NetHTTPClient1->Get(url, NULL, headers)->ContentAsString();
		//ShowMessage(respuesta);  // Aquí puedes hacer parseo del JSON
		Memo1->Text = respuesta;

		TJSONValue *json = TJSONObject::ParseJSONValue(respuesta);
		TJSONObject *root = dynamic_cast<TJSONObject*>(json);

	   if (root && root->GetValue("result"))
	   {
			TJSONValue *valor = root->GetValue("result");
			TJSONNumber *num = dynamic_cast<TJSONNumber*>(valor);

		if (num)
		{
			double resultado = num->AsDouble;
			String simbolo = getSimboloMoneda(toCurrency);

			Label1->Caption = FloatToStr(cantidad) + " " + fromCurrency + " is: " + FormatFloat("#,##0.00", resultado, formato) + " " + toCurrency + simbolo;
		} else {
				 ShowMessage("Error: 'result' no es numérico");
				 }
	   } else {
			   ShowMessage("No se encontró el campo 'result'");
				}

delete json;
	}
	catch (Exception &e) {
		ShowMessage("Error al obtener datos: " + e.Message);
	}
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
	ComboBox1->Items->Add("USD");
	ComboBox1->Items->Add("EUR");
	ComboBox1->Items->Add("ARS");
	ComboBox1->Items->Add("BRL");
	ComboBox1->Items->Add("COP");
	ComboBox1->Items->Add("GBP");
	ComboBox1->Items->Add("JPY");
	ComboBox1->Items->Add("MXN");

	ComboBox2->Items->Add("USD");
	ComboBox2->Items->Add("EUR");
	ComboBox2->Items->Add("ARS");
	ComboBox2->Items->Add("BRL");
	ComboBox2->Items->Add("COP");
	ComboBox2->Items->Add("GBP");
	ComboBox2->Items->Add("JPY");
	ComboBox2->Items->Add("MXN");

	ComboBox1->ItemIndex = 0;
	ComboBox2->ItemIndex = 2; // Por ejemplo ARS
}
//---------------------------------------------------------------------------




Última edición por navbuoy fecha: 16-05-2025 a las 18:01:46.
Responder Con Cita
  #2  
Antiguo 16-05-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Responder Con Cita
  #3  
Antiguo 19-05-2025
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.435
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Gracias por el código.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Samsung paga multa en monedas de 5 ctv Chris Noticias 149 08-09-2012 18:24:23
Encuentran 17 toneladas de monedas de oro y plata Robert01 La Taberna 13 20-05-2007 07:15:23
RFID espía en monedas canadienses jhonny Noticias 1 26-01-2007 11:46:21
Abrir caja monedas com samsung spr - 350 jaime cotino Varios 3 28-11-2006 08:50:47
fechas y monedas NuncaMas Varios 1 13-10-2003 20:06:21


La franja horaria es GMT +2. Ahora son las 05:24:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi