Cita:
Iniciado por eferion También puedes "trampear" tu código para que solucione ese problema y evitas tener que recompilar esa librería... pero en ese caso tendrás que estar pendiente cuando cambies de versión de borland para eliminar esa trampa si resulta que el error ya está corregido.
Amigo ya he conseguido obtener la imagen desde el componente pero sigo con el problema de los 8 bytes de mas y ni siquiera pasa por la funcion que indican en la funcion que habia que parchear. El problema tiene que estar en otro lugar y no tengo ni idea. Te pongo como queda el codigo para guardar la imagen en un archivo a espensas de poder solucionar lo de los 8 bytes:
Código PHP:
void __fastcall TFormMain::ButtonSaveImageClick(TObject *Sender)
{
//ShowMessage("Esta opcion no es funcional por ahora.");
TPicture *pic;
_di_IPictureDisp pIPD;
bool error = false;
try
{
pic = new TPicture; //Solicito memoria para el TPicture
}catch(std::bad_alloc&){
error = true;
}
if(error == true){
ShowMessage("No hay memoria suficiente para realizar esta acción.");
}else{
try
{
//ExportPicture devuelve un IPictureDisp** y quiero pasarlo a un _di_IPictureDisp
pIPD = (IPictureDisp*)AddFlow1->ExportPicture(afAllItems, true, true);
SetOlePicture(pic, pIPD); //Paso la imagen del IPictureDisp al TPicture
SaveDialog1->Filter = "Enhanced Metafile Format|*.emf";
if(SaveDialog1->Execute()){
SaveDialog1->FileName = ChangeFileExt(SaveDialog1->FileName, ".emf");
pic->SaveToFile(SaveDialog1->FileName);
}
}catch(...){
ShowMessage("Fallo al copiar la imagen al portapapeles.");
}
delete pic; //Libero la memoria del TPicture
}
}