Ver Mensaje Individual
  #9  
Antiguo 01-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 360
Reputación: 3
navbuoy Va por buen camino
sube la imagen aqui.... https://es.imgbb.com/

luego abres la pagina ahi donde sale la imagen en esa misma web y copias con el boton derecho el link (sobre la imagen) y lo pegas aqui dandole al icono de IMG de los iconos de arriba

para hacer lo contrario (Convertir de UTF-8 a AnsiString) aqui tienes codigo que lo hace:

Código:
#include <windows.h>

AnsiString UTF8ToAnsi(const AnsiString &utf8Str)
{
    // Paso 1: Calcular el tamaño necesario para la cadena WideChar (UTF-16)
    int wideLen = MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, NULL, 0);

    // Paso 2: Asignar un buffer para almacenar la cadena WideChar (UTF-16)
    wchar_t *wideStr = new wchar_t[wideLen];

    // Paso 3: Convertir de UTF-8 a WideChar (UTF-16)
    MultiByteToWideChar(CP_UTF8, 0, utf8Str.c_str(), -1, wideStr, wideLen);

    // Paso 4: Convertir la cadena WideChar (UTF-16) a AnsiString
    AnsiString result = WideString(wideStr);

    // Liberar el buffer temporal
    delete[] wideStr;

    return result;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    AnsiString utf8Text = "Hola, mundo! ñáéíóú en UTF-8";
    AnsiString ansiText = UTF8ToAnsi(utf8Text);
    ShowMessage(ansiText);  // Muestra la cadena convertida a AnsiString
}

El evento OnGetText de un TField es una excelente manera de convertir datos antes de que se muestren en el control visual. Aquí es donde puedes interceptar el texto en UTF-8, convertirlo a AnsiString, y luego mostrarlo en el DBGrid.

Código:
void __fastcall TForm1::Query1NombreGetText(TField *Sender, AnsiString &Text, bool DisplayText)
{
    // Obtener el valor original del campo como cadena UTF-8
    AnsiString utf8Str = Sender->AsString;

    // Convertir de UTF-8 a AnsiString
    Text = UTF8ToAnsi(utf8Str);
}

Última edición por navbuoy fecha: 01-10-2024 a las 23:50:38.
Responder Con Cita