 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
MarioMarieti Cmdr

Registrado: 28 Dic 2004Mensajes: 144Ubicación: Murcia (España)
|
Publicado: Mie 14 Oct, 2020 7:39 pm Asunto: Error al llamar la funció CreateZip de ZipUtils |
|
|
Hola Buenas tardes.
Estoy migrando una aplicación que tenía con C++Builder4 a C++Rad Studio Rio 10.3.
En builder4 tenía esta función para comprimir y me funcionaba perfectmente:
void __fastcall ComprimeArchivo(AnsiString sArchivoAcomprimir, AnsiString sNomArchivoZip)
{
AnsiString sArchivo, sArchivoZip;
//sArchivoSinExtension= ChangeFileExt(sArchivoAcomprimir,"");
sArchivo= ExtractFileName(sArchivoAcomprimir);
sArchivoZip = sArchivo + ".zip";
if(sNomArchivoZip.Length() >0)
sArchivoZip=sNomArchivoZip;
// Crea el fichero zip
HZIP hz;
hz = CreateZip(sArchivoZip.c_str(), 0);//,ZIP_FILENAME);
ZipAdd(hz,sArchivo.c_str(),sArchivo.c_str());//,ZIP_FILENAME);
CloseZip(hz);
}
//---------------------------------------------------------------------------
Y ahora al compilarla en C++Rad Studio Rio me da el siguiente error:
[bcc32c Error] fteFunciones.cpp(350): no matching function for call to 'CreateZip'
zip.h(33): candidate function not viable: no known conversion from 'char *' to 'const TCHAR *' (aka 'const wchar_t *') for 1st argument
y sí se lo estoy pasando como wchar_t --> sArchivo.c_str()
Alguien me puede ayudar. Gracias. |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
|
| Volver arriba |
|
 |
MarioMarieti Cmdr

Registrado: 28 Dic 2004Mensajes: 144Ubicación: Murcia (España)
|
Publicado: Jue 15 Oct, 2020 4:13 pm Asunto: |
|
|
Muchas Gracias Leo. Impeclable como siempre.
También le echaré un vista a la calse TZipFile.
He cambiado todas las referencias de AnsiString por String y además utilizar PChar. La función ha quedado así:
//---------------------------------------------------------------------------
void __fastcall ComprimeArchivo(String sArchivoAcomprimir, String sNomArchivoZip)
{
String sArchivo, sArchivoZip;
//sArchivoSinExtension= ChangeFileExt(sArchivoAcomprimir,"");
sArchivo= ExtractFileName(sArchivoAcomprimir);
sArchivoZip = sArchivo + ".zip";
if(sNomArchivoZip.Length() >0)
sArchivoZip=sNomArchivoZip;
// Crea el fichero zip
HZIP hz;
hz = CreateZip( PChar( sArchivoZip.c_str() ), 0);
ZipAdd( hz, PChar(sArchivo.c_str()), PChar(sArchivo.c_str()) ,0);//,ZIP_FILENAME);
CloseZip(hz);
}
//--------------------------------------------------------------------------- |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 15 Oct, 2020 5:29 pm Asunto: |
|
|
No debería ser necesario usar PChar, ya que cuando tienes en las propiedades del proyecto (C++ Shared Options > _TCHAR maps to) con "wchar_t", String se convierte en UnicodeString y cuando lo tienes como "char" se convierte en AnsiString (es un typedef condicional), y su miembro "c_str()" a wchar_t* o char* según corresponda.
Si es la librería de terceros que supongo, tiene versión Unicode de las funciones, están declaradas como TCHAR que usan una versión u otra automáticamente.. |
|
| Volver arriba |
|
 |
MarioMarieti Cmdr

Registrado: 28 Dic 2004Mensajes: 144Ubicación: Murcia (España)
|
Publicado: Jue 15 Oct, 2020 6:25 pm Asunto: |
|
|
Efectivamente Leo.
Así queda finalmente.
//---------------------------------------------------------------------------
void __fastcall ComprimeArchivo(String sArchivoAcomprimir, String sNomArchivoZip)
{
String sArchivo, sArchivoZip;
//sArchivoSinExtension= ChangeFileExt(sArchivoAcomprimir,"");
sArchivo= ExtractFileName(sArchivoAcomprimir);
sArchivoZip = sArchivo + ".zip";
if(sNomArchivoZip.Length() >0)
sArchivoZip=sNomArchivoZip;
// Crea el fichero zip
HZIP hz;
hz = CreateZip( sArchivoZip.t_str() , 0 );
ZipAdd( hz, sArchivo.t_str(), sArchivo.t_str() );
CloseZip(hz);
}
//--------------------------------------------------------------------------- |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|