Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-06-2007
nugame nugame is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nugame Va por buen camino
Unhappy Cargar archivos RTF o DOC en un DBERichEdit

Hola:

Quisiera mover un fichero .rtf o .dot a un dberichedit pero al copiarlos me mete caracteres extraños y no hay manera.

¿Alguien sabe como podría mover al dberichedit esos tipos de ficheros?

Gracias


Perdon en el anterior tema puse rtl en vez de rtf...
Responder Con Cita
  #2  
Antiguo 13-06-2007
loxod loxod is offline
Miembro
 
Registrado: feb 2007
Ubicación: Mexico
Posts: 45
Poder: 0
loxod Va por buen camino
yo he usado el siguiente codigo, pero uso un richediten vez de un dbrichedit

Código Delphi [-]

unit rtf2blob_u;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, DBCtrls, Db, DBTables, StdCtrls, ComCtrls,
  richedit;  

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    DataSource1: TDataSource;
    Table1: TTable;
    DBNavigator1: TDBNavigator;
    procedure Button1Click(Sender: TObject);
    procedure Table1AfterScroll(DataSet: TDataSet);
    procedure Table1BeforePost(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


var
  EditStream : TEditStream;  
  bs : TBlobStream;  
  L : Longint;  


//solo para cargar un archivo rtf
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (table1.state = dsInsert) or
     (table1.state = dsEdit) then
  begin
    If opendialog1.execute then
      Richedit1.Lines.LoadfromFile(opendialog1.FileName);
  end
  else
    Showmessage('El Dataset debe estar en modo de Edicion');
end;


Function MyEditStreamCallBackOut(dwCookie: Longint; pbBuff: PByte;
                              cb: Longint; var pcb: Longint): Longint; stdCall;
Begin
  bs.WriteBuffer(pbbuff^,cb);
  pcb := DWord(@L);
  result := cb;
end;


Function MyEditStreamCallBackIn(dwCookie: Longint; pbBuff: PByte;
                                cb: Longint; var pcb: Pointer): Longint; stdcall;
var
  dw : DWord;
Begin
  pcb := @cb;
  if cb > bs.Size - bs.position then
    dw := bs.Size - bs.position
  else
    dw := cb;
  if dw <> 0 then
    bs.ReadBuffer(pbbuff^,dw);
  result := 0;
  dw := bs.position;
  move(dw,pcb,sizeof(dw));
end;


//Obtiene el contenido del archivo rtf desde el campo BlobField
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
  bs := TBlobStream.Create(TBlobField(table1.FieldByName('rtfBlob')),bmRead);
  try
    bs.Position := 0;
    editStream.dwCookie := SF_RTF;
    editStream.dwError := 0;
    editStream.pfnCallback := @MyEditStreamCallBackIn;
    Richedit1.Perform(EM_StreamIn,SF_RTF,DWord(@EditStream));
  finally
    bs.free;
  end;
end;

//almacena el rft en el blobfield
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
  bs := TBlobStream.Create(TBlobField(table1.FieldByName('rtfBlob')),bmWrite);
  try
    editStream.dwCookie := SF_RTF;
    editStream.dwError := 0;
    editStream.pfnCallback := @MyEditStreamCallBackOut;
    Richedit1.Perform(EM_StreamOut,SF_RTF,DWord(@EditStream));
  finally
    bs.free;
  end;
end;

end.

espero que te sirva
Responder Con Cita
  #3  
Antiguo 02-10-2007
nugame nugame is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 21
nugame Va por buen camino
Sobre los rtf

Hola:

Antes de nada gracias por tu ayuda.
El ejemplo que me enviaste me procude el error 'Invalid class typecast' en la línea...
bs := TBlobStream.Create(TBlobField(table1.FieldByName('rtfBlob')),bmWrite);

El campo en la tabla de la base de datos en un blob creado asi..:

rftBlob BLOB SUB_TYPE 2 SEGMENT SIZE 1

Es decir Tamaño de segmento 1, Subtipo 2

¿Estoy creando mal el campo blob?

Gracias por todo y disculpa
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
MD5 y Ficheros bastardo10 Varios 1 24-05-2007 18:15:18
Una de ficheros... armadillo Varios 4 01-03-2007 19:01:23
Ficheros EML ral Internet 4 27-07-2006 15:43:00
Ficheros XML Tecnic2 Internet 6 31-05-2005 12:50:09
Ficheros .dat & .idx maro Conexión con bases de datos 4 10-02-2004 19:35:35


La franja horaria es GMT +2. Ahora son las 16:45:34.


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
Copyright 1996-2007 Club Delphi