Hola foro mi pregunta es la siguiente, estoy creando una aplicación un pequeñó editor y ahora quiero que soltando un documento .txt ó un documento .doc automáticamente lo abra, con el documento .txt no hay ningún problema, pero cuando suelto uno con extensión .doc a parte del texto, me salen algunos símbolo extraños supongo que debido a que ciertas palabras están en negrita, etc.Pero no entiendo el porqué, ya que estoy utilizando un RichEdit. Si voy al Word copia todo el documento al portapales y luego voy a mi editor y lo pego lo copia bien, pero si lo suelto encima de mi editor, no lo abre correctamente.
Memo1 es un componente de tipo TRichEdit lo que pasa es que cómo había empezado a realizar esta aplicación con un Memo por no tener que cambiar el nombre lo he llamado Memo1 al componente RichEdit1.
//---------------------------------------------------------------------------
#ifndef Unit9H
#define Unit9H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Menus.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm9 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TButton *Button3;
TButton *Button4;
TButton *Button5;
TButton *Button6;
TButton *Button7;
TButton *Button8;
TMainMenu *MainMenu1;
TMenuItem *Fichero1;
TMenuItem *Guardar1;
TMenuItem *N1;
TMenuItem *Edit1;
TMenuItem *Copiar1;
TMenuItem *Pegar1;
TMenuItem *Cortar1;
TButton *Button9;
TButton *Button10;
TRichEdit *Memo1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Button4Click(TObject *Sender);
void __fastcall Button5Click(TObject *Sender);
void __fastcall Button6Click(TObject *Sender);
void __fastcall Button7Click(TObject *Sender);
void __fastcall Button8Click(TObject *Sender);
void __fastcall Copiar1Click(TObject *Sender);
void __fastcall Pegar1Click(TObject *Sender);
void __fastcall Cortar1Click(TObject *Sender);
void __fastcall N1Click(TObject *Sender);
void __fastcall Guardar1Click(TObject *Sender);
void __fastcall FormShow(TObject *Sender);
void __fastcall Button9Click(TObject *Sender);
void __fastcall Button10Click(TObject *Sender);
private: // User declarations
void WMDropFiles(TMessage Mensaje);
public: // User declarations
__fastcall TForm9(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_DROPFILES, TMessage, WMDropFiles)
END_MESSAGE_MAP(TComponent)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm9 *Form9;
//---------------------------------------------------------------------------
#endif
__fastcall TForm9::TForm9(TComponent* Owner)
: TForm(Owner)
{
// indicar que aceptamos archivos del Explorador
DragAcceptFiles(Handle, true);
}
//---------------------------------------------------------------------------
void TForm9::WMDropFiles(TMessage Mensaje)
{
char NombreArchivo[256];
AnsiString Extension;
// Obtenemos el nombre del primer archivo
DragQueryFile((HANDLE)Mensaje.WParam, 0, NombreArchivo, 255);
DragFinish((HANDLE)Mensaje.WParam); // liberamos el bloque de datos
// Espacio para la extensión y el terminador NULL
Extension.SetLength(5);
// obtenemos la extensión
fnsplit(NombreArchivo, NULL, NULL, NULL, Extension.c_str());
Extension.SetLength(4); // Eliminamos el NULL
Extension = Extension.LowerCase(); // Convertir a minúsculas
if (Extension == ".txt") { // Se trata de un archivo de texto
Memo1->Lines->LoadFromFile(NombreArchivo); // Cargar el archivo
} else if (Extension == ".doc")Memo1->Lines->LoadFromFile(NombreArchivo); // Cargar el archivo
else ShowMessage("Sólo se admiten ficheros con extensión .txt");// Si no es ninguna de las extensiones anteriores
}
Gracias por leer el mensaje