PDA

Ver la Versión Completa : Como guardar archivo desde código?


Jere_84
29-10-2012, 21:44:02
Hola club, Necesito guardar un archivo desde adentro de mi programa, tengo la ruta con la ubicación para guardarlo y el nombre del archivo con su extensión.
Donde puedo encontrar los comandos y la lógica para guardar archivos utilizando delphi?

Saludos y muchas gracias.

roman
29-10-2012, 22:01:32
Tienes la ruta y tienes el nombre, pero, ¿cuál sería el contenido del archivo? Digo, porque puede variar la forma de hcerlo dependiendo de cómo generas el contenido.

// Saludos

Jere_84
29-10-2012, 22:03:32
Hola Roman. El contenido del archivo es una informe (.rtm) .

roman
29-10-2012, 22:05:45
¿Un informe? ¿Qué tipo de informe? ¿Con qué herramienta lo generas?

// Saludos

Jere_84
29-10-2012, 22:07:25
Es un informe generado con RBuilder. El contendido es una tabla del clientes, nada raro...

roman
29-10-2012, 22:17:11
Bueno, pues eso ya dependerá específicamente de Report Builder. ¿Has buscado en los foros?

Por ejemplo, este hilo (http://clubdelphi.com/foros/showthread.php?t=78001&highlight=report+builder) puede darte una orientación inicial.

// Saludos

Jere_84
29-10-2012, 22:23:55
Lo que estoy haciendo es que el usuario pueda diseñar sus propios listados, partiendo de un modelo que yo le brindo. Cuando hace guardar en el RBuilder intervengo en un evento del componente ppDesigner para obtener el nombre con el que guarda el rtm. Al hacer esto, en la ayuda del RBuilder menciona que al intervenir este evento la logica y el guardado la debe hacer el programador. No menciona como, pero pensé que el guardado de archivos podía ser igual para todos las extensiones, veo que no... si es un txt se hace una cosa, si es un xls se hace otra. :confused:

Casimiro Notevi
29-10-2012, 22:31:17
El fichero rtm lo puedes dejar en un subdirectorio de tu programa y cargarlo desde allí.
Tienes varias alternativas, puedes tener dos directorios, en uno guardas los informes "originales" y en otro directorio guardas los que el usuario pueda usar y modificar. En caso de que los modifique y quiera volver al original o lo haya estropeado, etc. entonces sólo debes sobreescribirlo con el original que está en el otro directorio.
La otra opción es igual, con la diferencia que en lugar de almacenarlos en el disco, lo guardas en la BD, si quieres hacerlo así entonces haz una búsqueda por BLOB porque es el tipo de campo donde puedes almacenar cualquier tipo de fichero.

Jere_84
29-10-2012, 22:38:34
Muchas gracias Casimiro. Y sabes como puedo "guardar" el informe personalizado en la carpeta subdirectorio de mi programa?. Hay alguna función nativa de delphi para el grabado?.. tengo todo digamos, lo que necesito saber es como grabar, hay algo que nos brinde el delphi para los rtm?.
Saludos.

nlsgarcia
29-10-2012, 22:41:29
Jere_84,

Revisa estos links :

Procedimientos y funciones de archivos en Delphi:
http://www.delphibasics.co.uk/ByFunction.asp?Main=Files

Managing Ascii (Text) Files from Code in Delphi:
http://delphi.about.com/od/fileio/a/ascii_textfile.htm

5 métodos para copiar un archivo en Delphi:
http://www.clubdelphi.com/foros/showthread.php?p=448256#post448256

Revisa este código:

// Tomado de la página : http://www.delphibasics.co.uk/RTL.asp?Name=AssignFile
// Example code : Write to a text file, and then read back its contents
var
myFile : TextFile;
text : string;

begin
// Try to open the Test.txt file for writing to
AssignFile(myFile, 'Test.txt');
ReWrite(myFile);

// Write a couple of well known words to this file
WriteLn(myFile, 'Hello');
WriteLn(myFile, 'World');

// Close the file
CloseFile(myFile);

// Reopen the file for reading
Reset(myFile);

// Display the file contents
while not Eof(myFile) do
begin
ReadLn(myFile, text);
ShowMessage(text);
end;

// Close the file for the last time
CloseFile(myFile);
end;


Espero sea util :)

Nelson.

Casimiro Notevi
29-10-2012, 22:42:28
Desde delphi "lanzas" el editor de report builder, es un componente más, no recuerdo el nombre porque hace unos cuatro años que no uso reportbuilder, pero un componente normal (mira la paleta de reportbuilder en tu delphi) con el que puedes cargar un informe de disco, guardarlo, editarlo, imprimirlo, etc.
Lo normal que hacen casi todos los programas generadores de informes.

Jere_84
29-10-2012, 22:50:16
Si, se llama ppDesigner. Yo intervengo un evento de este componente , al hacer esto.. el grabado que se hace de manera natural deja de funcionar, y esta a cargo del programador. Evento llamado OnCustomSaveDoc.

esto se menciona en la ayuda del RBuilder sobre este evento:

Provides full control over the report saving process. When this event handler is assigned, you must provide the logic which will save the report.

Me gustaría explicar porque intervengo este evento pero la historia seria demasiado larga, pero créanme que tiene sentido. ;)

Jere_84
29-10-2012, 22:52:10
Grcias nlsgarcia!, ahora voy a revisar los enlaces y el codigo.

Saludos.

Casimiro Notevi
29-10-2012, 23:21:16
La versión reportbuilder que yo he usado no tenía lo que comentas, era muy antigua.