Ir al contenido


Foto

Copiar valor DBRichEdit en archivo texto para compartir datos


  • Por favor identifícate para responder
7 respuestas en este tema

#1 jacapu

jacapu

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 mayo 2016 - 06:01

Hola, tengo una tabla con filas que almacenan texto formateado en un dbrichedit y quería guardar las filas en un archivo de texto para poder importarlas desde otro ordenador, (compartir los datos de la tabla a nivel de registros).

En los campos normales ningun problema, pero el campo blob se me guarda en código de formato, un ejemplo:

 

{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Verdana;}{\f1\fnil Verdana;}}

 

y lo que quiero es que al importar el registro de la tablaen otro ordenador vayan los datos del archivo de texto al campo blob manteniendo el formato que tenía al exportarlo.

¿Puede hacerse?. ¿Cómo?.

Gracias de antemano y saludos.


  • 0

#2 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 12 mayo 2016 - 08:18

Eh, no entiendo

 

Grabas el registro en un blob con el formato

 

Lees el registro y ya no tiene el formato?

 

No entiendo esta parte, podrias explicarlo mas claramente?

 

y lo que quiero es que al importar el registro de la tablaen otro ordenador vayan los datos del archivo de texto al campo blob manteniendo el formato que tenía al exportarlo.

 

 


  • 0

#3 jacapu

jacapu

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 mayo 2016 - 11:17

Hola Agustín,

Yo guardo el valor de cada campo de la fila en una línea del archivo de texto, ( Writeln(f,datocampo)  ), para el campo que contiene el valor del richedit igual.

Lo que se me guarda en la línea del archivo de texto es algo parecido al texto que muestro en el anterior mensaje en negrita, no el texto formateado tal como lo guarde en la tabla.

Lo que deseo es poder guardar el valor de los campos y el texto formateado en un archivo de texto para poder enviarlo vía internet, usb, etc. , como un archivo normal adjunto a un mensaje y importarlo posteriormente con el mismo texto formateado en la misma tabla, pero en otro ordenador que ya tiene la base de datos, ya que la aplicación debe permitir compartir registros de esta tabla vía internet.

Saludos.


  • 0

#4 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 12 mayo 2016 - 12:55

Ok ahora entiendo. Queres que al grabarlo en un archivo se vea con el formato de negrita, color, etc

 

En que tipo de archivo estas grabando?  Podes poner el codigo de grabado?


  • 0

#5 jacapu

jacapu

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 12 mayo 2016 - 02:38

Hola, lo que me interesa es que al importar el registro en otro ordenador el texto conserve el formato en el que estaba al guardarlo, negrita, color, etc.).

He hecho una prueba con un richedit en un proyecto a parte y al guardarlo si lo abro con WordPad el formato se mantiene y abriéndolo con el Bloc de Notas se ve el texto sin formato.

He probado pasando el texto a un dbrichedit, (invsiible en la aplicacion), y luego a un tmemorystream para asignarlo a un richedit, (tambien invisible), pero el texto del richedit se ve plano, se pierde el formato.


delphi
  1. procedure TFCompartir.BExpEClick(Sender: TObject);
  2. var
  3. n,elemento:integer;
  4. //contenido:TMemoryStream;
  5. begin
  6. //contenido:=TMemoryStream.Create;
  7. SaveDialog1.Title:='Seleccionar la ruta del archivo del elemento a exportar';
  8. SaveDialog1.FileName:=ComboEl.Text;
  9. if SaveDialog1.Execute then
  10. begin
  11. Screen.Cursor:=crHourGlass;
  12. //archivo datos
  13. fichero:=SaveDialog1.FileName;
  14. AssignFile(f,fichero);
  15. //try
  16. ReWrite(f);
  17. WriteLn(f,' ');//linea en blanco
  18. WriteLn(f,'Versión 1.1.0.4');//programa
  19. WriteLn(f,' ');//linea en blanco
  20. WriteLn(f,DateToStr(Now));
  21. WriteLn(f,' ');//linea en blanco
  22. WriteLn(f,'DATOS');//datos elemento
  23. WriteLn(f,' ');//linea en blanco
  24. //datos elemento
  25. TElementos.First;
  26. if TElementos.FindKey([ComboAl.Text]) then
  27. begin
  28. WriteLn(f,IntToStr(TElementosCodigo.Value));
  29.  
  30. .....
  31. .....
  32.  
  33. WriteLn(f,FloatToStr(TElementosAZ2.Value));
  34. WriteLn(f,' ');//linea en blanco
  35. //medidas elemento
  36. QMedidas.Close;
  37. QMedidas.ParamByName('elemento').AsInteger:=TElementosCodigo.Value;
  38. QMedidas.Open;
  39. WriteLn(f,IntToStr(QMedidas.RecordCount));
  40. WriteLn(f,' ');//linea en blanco
  41. DM1.TMedidas.First;
  42. if QMedidas.RecordCount>0 then
  43. begin
  44. for n:=1 to QMedidas.RecordCount do
  45. begin
  46. //el valor del registro se calculara al importar
  47. WriteLn(f,IntToStr(QMedidasElemento.Value));
  48.  
  49. ......
  50. ......
  51.  
  52. WriteLn(f,IntToStr(QMedidasRef.Value));
  53. QMedidas.Next;
  54. end;//n
  55. end;//si QMedidas.RecordCount>0
  56. WriteLn(f,' ');//linea en blanco
  57. WriteLn(f,'FIN FICHERO');
  58. WriteLn(f,' ');//linea en blanco
  59. CloseFile(f);
  60. //gravar contenino dbrichedit prop en un archivo con el mismo nombre y extension prop
  61. try
  62. //DBRichEdit1.Lines.SaveToStream(contenido);
  63. //RichEdit1.Lines.LoadFromStream(contenido);
  64. //RichEdit1.Lines:=DBRichEdit1.Lines;
  65. fichero1:=ExtractFilePath(fichero)+ComboEl.Text+'_prop.txt';
  66. DBRichEdit1.Lines.SaveToFile(fichero1);//RichEdit1.Lines.SaveToFile(fichero1);
  67. finally
  68. end;
  69. Screen.Cursor:=crDefault;
  70. end//si findkey elemento
  71. else
  72. ShowMessage('ERROR: No se ha encontrado el elemento seleccionado.');
  73. end;//savedialog1
  74. end;

Te adjunto el código de guardado:

 

Archivos adjuntos


  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 12 mayo 2016 - 03:14

Por lógica si lo abres en un notepad normal y corriente no te mostrará el formato, porque la misma es un editor sin formato, o sea, no es RTF como wordpad, office, openoffice, libreoffice y otros.


  • 0

#7 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 12 mayo 2016 - 05:37

No logro reproducirlo


delphi
  1. {\rtf1\ansi\ansicpg1252\deff0\deflang11274{\fonttbl{\f0\fnil\fcharset0 Tahoma;}}
  2. \viewkind4\uc1\pard\i\f0\fs16 RichEdit1\i0\par
  3. \par
  4. \strike RichEdit1\strike0\par
  5. \par
  6. \ul RichEdit1\ulnone\par
  7. \par
  8. }

Copia eso en un archivo .rtf y cargarlo en tu RichEdit a ver que pasa

El codigo que utilizo es 


delphi
  1. procedure TForm1.FileOpen1Accept(Sender: TObject);
  2. begin
  3. RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);
  4. end;
  5.  
  6. procedure TForm1.FileSaveAs1Accept(Sender: TObject);
  7. begin
  8. RichEdit1.Lines.SaveToFile(FileSaveAs1.Dialog.FileName);
  9. end;

Puse un TRichEdit en el Form, un TActionList, cargo el TActionList con todas las acciones predefinidas para RichEdit (negrita, subrayado, etc)

 

Luego simplemente con invocar a RichEdit.Lines.Save/LoadFromFile el RichEdit siempre muestra con el formato correcto


  • 0

#8 jacapu

jacapu

    Advanced Member

  • Miembros
  • PipPipPip
  • 56 mensajes

Escrito 13 mayo 2016 - 05:01

Hola Agustín, ya lo he solucionado.

Copié el texto que me indicaste en un RichEdit y salió tal como se muestra en tu mensaje.

He pasado de Streams y funciones de archivos y lo he resuelto con el método Assign de la propiedad Lines del RichEdit.

Parece ser que el DBRichEdit no pasa el formato al pasarlo a un RichEdit o a un archivo de texto.

Podría ser cosa de la base de datos, estoy usando AbsoluteDataBase y Delphi7. Tampoco me soporta el acceso al campo blob mediante la propiedad Value.

Básicamente lo que he hecho ha sido pasar el valor del campo blob a un RichEdit, (invisible al usuario), mediante el método Assign de su propiedad Lines y entonces lo he guardado en un archivo de texto mediante el método SavetoFile del RichEdit. Así he podido guardar el texto con el formato que tiene en la base origen.

Para importarlo simplemente cargar el archivo de texto en el mismo RichEdit mediante su método LoadFromFile y pasarlo al campo blob mediante el método Assign de su propiedad Lines. Ha ido perfecto y me ahorro contar las líneas del texto origen, que pueden variar según la fila y provocar error al leer el archivo origen en la importación.

No es muy técnico pero funciona.

De todos modos gracias por la ayuda.

Saludos.

 


  • 0




IP.Board spam blocked by CleanTalk.