Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Grabar archivos de texto (https://www.clubdelphi.com/foros/showthread.php?t=57869)

jarr-o 30-06-2008 22:01:44

Grabar archivos de texto
 
Hola a todos mi problema es que necesito guardar un archivo de texto que yo creo en tiempo de ejecucion pero me gustaria que el usuario pudiera indicar en donde se va a guardar ese archivo aqui esta el codigo del procedimiento que estoy utilizando

procedure TT_MovTraspasoSalida.Generardocumento;
var
fecha, hora, nombrearchtxt: string;
begin
fecha := StringReplace (DateToStr (Now), '/', '_', [rfReplaceAll]);
nombrearchtxt := ExtractFilePath (Application.ExeName) + 'Traspasos\' + 'TS' + fecha + '.txt';
Memo1.Clear;
IBOQueryConDoc.Open;
IBOQueryConDoc.First;
while not (IBOQueryConDoc.EOF) do
begin
Memo1.Lines.Add (IBOQueryConDocACO_CODIGO.AsString + ',' +
IBOQueryConDocSAD_CANTIDAD.AsString);
IBOQueryConDoc.Next;
end;
Memo1.Lines.SaveToFile (nombrearchtxt);
ShowMessage ('Se a generado un documento para este traspaso en: ' + nombrearchtxt);
end;

el archivo que necesito guardar es nombrearchtxt, por lo pronto estoy extrayendo el nombre del directorio donde se encuentra el ejecutable de mi aplicacion y lo guardo en un subdirectorio 'Traspasos' pero lo que necesito es mediante un dialogo que el usuario pueda decirle a mi aplicacion donde desea guardar este archivo

Gracias anticipadas por su ayuda

AzidRain 30-06-2008 22:19:04

busca TSaveDialog en la ayuda de Delphi, verás que trae un ejemplo muy bueno para lo que quieras hacer.

jarr-o 30-06-2008 22:56:56

Gracias por tu respuesta
la ayuda de mi delphi no esta funcionando en este momento pero he
probado el componente que me dijiste y ha funcionado muy bien nada mas que ahora tengo otra pregunta ¿Se puede hacer que el usuario no pueda darle el nombre al archivo? porque se lo debo de generar yo mismo y orita lo que estoy haciendo es mostrar el nombre que genere en el dialogo pero quisiera que no pudieran modificarlo
no se si alguna de las propiedades de este componente me permitan hacer esto
aqui esta el nuevo codigo y gracias nuevamente por tu respuesta

procedure TT_MovTraspasoSalida.Generardocumento;
var
fecha, hora, nombrearchtxt: string;
begin
fecha := StringReplace (DateToStr (Now), '/', '_', [rfReplaceAll]);
hora := StringReplace (TimeToStr (Now), ':', '', [rfReplaceAll]);
hora := StringReplace (hora, '.', '', [rfReplaceAll]);
Memo1.Clear;
SaveDialog1.FileName := 'TS' +
fecha + StrSinEspa (hora) + '.txt';
if not SaveDialog1.Execute then exit;
begin
nombrearchtxt := SaveDialog1.FileName;
end;
IBOQueryConDoc.Open;
IBOQueryConDoc.First;
while not (IBOQueryConDoc.EOF) do
begin
Memo1.Lines.Add (IBOQueryConDocACO_CODIGO.AsString + ',' +
IBOQueryConDocSAD_CANTIDAD.AsString);
IBOQueryConDoc.Next;
end;
Memo1.Lines.SaveToFile (nombrearchtxt);
ShowMessage ('Se a generado un documento para este traspaso en: ' + nombrearchtxt);
end;

Caro 01-07-2008 03:47:05

Hola jarr-o, puedes utilizar la función SelectDirectory que te muestra un cuadro de dialogo para poder seleccionar el directorio. Para que te funcione debes añadir en uses la unidad FileCtrl.

Código Delphi [-]
procedure TT_MovTraspasoSalida.Generardocumento;
var
 fecha, hora, nombrearchtxt: string;
Carpeta : String;
begin
 fecha := StringReplace (DateToStr (Now), '/', '_', [rfReplaceAll]);
 hora := StringReplace (TimeToStr (Now), ':', '', [rfReplaceAll]);
 hora := StringReplace (hora, '.', '', [rfReplaceAll]);
 Memo1.Clear;
 
 if SelectDirectory('Seleccione la ruta de la carpeta', '', Carpeta) then
   nombrearchtxt := Carpeta +'\'+ 'TS' + fecha + StrSinEspa (hora) + '.txt'; 
 
 IBOQueryConDoc.Open;
 IBOQueryConDoc.First;
 while not (IBOQueryConDoc.EOF) do
 begin
   Memo1.Lines.Add (IBOQueryConDocACO_CODIGO.AsString + ',' +
   IBOQueryConDocSAD_CANTIDAD.AsString);
   IBOQueryConDoc.Next;
 end;
 Memo1.Lines.SaveToFile (nombrearchtxt);
 ShowMessage ('Se a generado un documento para este traspaso en: ' + nombrearchtxt);
end;

Saluditos

Caro 01-07-2008 04:14:46

Cita:

Empezado por jarr-o (Mensaje 297326)
¿Se puede hacer que el usuario no pueda darle el nombre al archivo?

Con el componente SaveDialog el usuario si podra darle el nombre de archivo, lo que puedes hacer es extraer la ruta sin el nombre de archivo del FileName, pero talvez sería mejor que lo hagas de la forma que te indico arriba.

Código Delphi [-]
if SaveDialog1.Execute then
begin
 showmessage(ExtractFileDir(SaveDialog1.FileName));
end;

Saluditos

jarr-o 02-07-2008 00:01:18

Gracias por sus respuestas en esta ocasion al final he utilizado selectdirectory
Nos vemos la proxima


La franja horaria es GMT +2. Ahora son las 13:55:31.

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