Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Base64

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Base64 Responder citando

De nuevo a vueltas con CAPICOM estoy intentando ahora codificar un fichero para que me devuelva una cadena en base64.

La forma de hacerlo la tengo ya resuelta, la documentación de CAPICOM es bastante extensa. Lo que no se es como cargar un fichero para codificarlo a base64 para devolver un array ya codificado o volverlo a escribir en otro fichero con extensión .b64

Muchas gracias de antemano.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Creo que la parte que complica la tarea un poco es que hay que pasar los datos en un VARIANT SAFEARRAY, por tanto copiar el archivo en el mismo, ya que leerlo se puede hacer de muchas maneras.

A ver si te ayuda este pequeño ejemplo:

Código:
// Añadimos: #include<memory>
CoInitialize(0);

// Abrimos el archivo de entrada y creamos el de salida
std::auto_ptr<TFileStream> fsIn(new TFileStream("c:\\foto.jpg",
    fmOpenRead | fmShareDenyWrite));
std::auto_ptr<TFileStream> fsOut(new TFileStream("c:\\prueba.b64",
    fmOpenWrite | fmCreate | fmShareExclusive));

// Creamos un VarArray y copiamos en el todo el fichero de entrada
int bounds[2] = {1, fsIn->Size};
TVariant v(VarArrayCreate(bounds, 1, varByte));
PVOID buffer = VarArrayLock((Variant*)&v);
fsIn->Read(buffer, fsIn->Size);
VarArrayUnlock((Variant*)&v);

// Hacemos la conversion a Base64 y lo salvamos
TCOMIUtilities util = CoUtilities::Create();
TOleString strBin(util->ByteArrayToBinaryString(v));
TOleString strB64(util->Base64Encode(strBin));
String strOut(strB64);
fsOut->Write(strOut.c_str(), strOut.Length());
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias, se agradece la respuesta.

Un saludo. Roberto.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.