Amigos ya he conseguido obtener la imagen desde el componente a un archivo 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
}
}