“Cuando trabajamos con Velneo y necesitamos hacer una llamada a una dll que retorna una cadena (string) nos encontramos con la tesitura de como liberar el espacio de memoria alojada para la cadena en cuestión en la dll.”
Etiquetas: Dll, espacio memoria, programacion facil, string







Mayo 3, 2008 - 11:40 #
Podemos “jugar” utilizando la clase AnsiString de C++
char* __stdcall Fichero2Cadena(const char* rutaFichero){
int iFileHandle;
int iFileLength;
char *buffer;
AnsiString strTemp;
try{
iFileHandle = FileOpen(rutaFichero, fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
buffer = (char*)malloc((iFileLength+1)*sizeof(char));
FileRead(iFileHandle, buffer, iFileLength);
FileClose(iFileHandle);
// *************************************************************
// Asignamos a un AnsiString el buffer para asà poder liberarlo.
// *************************************************************
strTemp = buffer;
free(buffer);
return (char*)strTemp.c_str();
}
catch(Exception &e){
free(buffer);
return (char*)e.Message.c_str();
}
}