Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ayuda con instrucciones para reparar bug en C++builder 6 (https://www.clubdelphi.com/foros/showthread.php?t=87796)

aguml 26-02-2015 08:41:58

Ayuda con instrucciones para reparar bug en C++builder 6
 
Hola amigos, investigando he visto que parte de los problemas que estoy teniendo al tratar el IPictureDisp pueden venir por un bug que trae el GetOlePicture en C++Builder 6.
Aqui está el enlace donde explican como repararlo: http://www.griaulebiometrics.com/en-...icture-bug-fix

He seguido esas instrucciones pero al llegar a esta línea:
Cita:

Move the compiled file (AXCtrls.dcu) to your project directory and put AXCtrls as the first unit in your projects uses-clause.
Lo que hago es mover el .dcu que se crea al directorio del proyecto pero la otra parte de la frase no la entiendo y no se que tengo que hacer. ¿Alguien puede ayudarme?

Neftali [Germán.Estévez] 26-02-2015 10:43:37

Se supone que el problema lo tienes porque no se encuentra esa unit (imagino).
Lo que dice ahí, es que la copies al directorio de proyecto y la pongas en la primera posición del uses. con eso debería encontrarla y compilar.

Otra cosa es que no sea ese el problema.

Ayudaría que colocaras el mensaje de error exacto.

aguml 26-02-2015 15:01:57

amigo no hay mensaje, simplemente se crea una imagen corrupta. Despues de investigar y hacer pruebas, he descubierto que lo que hace es añadir 8 bytes delante en el archivo de imagen que crea. Si uso un editor hexadecimal y me cargo esos 8 bytes ya se ve bien la imagen. ¿Por que añade 8 bytes delante? Ni idea, seguramente será un bug.

aguml 26-02-2015 21:00:00

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(afAllItemstruetrue); 
 
         
SetOlePicture(picpIPD); //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 
   





La franja horaria es GMT +2. Ahora son las 20:06:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi