Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problemas al exportar archivo...solo detalles (https://www.clubdelphi.com/foros/showthread.php?t=48711)

BlueSteel 02-10-2007 18:11:40

problemas al exportar archivo...solo detalles
 
Hola amigos...

tengo una aplicación que exporta unos datos desde un StringGrid a un Archivo de Texto... todo me funciona bien, para lo cual utilizo el sgte codigo:


Código Delphi [-]
nFile := Concat(Copy(Proceso.Text,1,1),'-',FormatDateTime('mm',Fecha.Date),FormatDateTime('yyyy', Fecha.Date),'.cdh');
nDir := Concat('D:\Sistemas\','BCI\');
Str := '';
For i := 0 to Grilla.RowCount-1 do
Begin
If (i <> 0) Then Str := Str + #13#10;
For j := 0 to (Grilla.Rows[i].Count - 1) do
Begin
If (j <> 0) Then Str := Str + '';//#9;
Str := Str + Grilla.Rows[i].Strings[j];
end;
TS := TStringList.CReate();
TS.Text := Str;
TS.SAveToFile(Concat(nDir,nfile));
TS.Free;
End;





A esto quiero decirle que lo almacene en una ruta específica, pro lo cual con nDir defino la ruta, y con nFile defino en nombre del archivo... hasta aquí todo bien... pero mi consulta es como le digo que esto me lo almacene usando un dialogo tipo SaveDialog....

puse ese codigo antes de almacenar el archivo,,, pero entra en un bucle.. asiq ue no me funciona...

Código Delphi [-]
SaveDialog1.InitialDir := nDir; // Asigno ruta_donde_almacenar
SaveDialog1.FileName := nFile; // asigno nombre_de_Archivo
with SaveDialog1 do
if Execute then TS.SAveToFile(Concat(nDir,nfile))
Else
ShowMessage('Error al guardar archivo');
TS.Free;






Si bien la funcion funciona para almacenar el archivo, la idea es que el usuario seleccione solo la ruta...

mi otra consulta.. este proceso se hace 1 vez al mes... como puedo hacer para que el sistema me almacene la última ruta seleccionada... (debere guardar la info en un .ini )....

y como evito que el usuario modifique el nombre del archivo...

bueno.. eso seria todo...gracias por cualquier ayudita..:p

duilioisola 02-10-2007 19:03:39

Código Delphi [-]
   nFile := Concat(Copy(Proceso.Text,1,1),'-',FormatDateTime('mm',Fecha.Date),FormatDateTime('yyyy', Fecha.Date),'.cdh');
   nDir := Concat('D:\Sistemas\','BCI\');
   Str := '';
   For i := 0 to Grilla.RowCount-1 do
   Begin
      If (i <> 0) Then Str := Str + #13#10;
      For j := 0 to (Grilla.Rows[i].Count - 1) do
      Begin
         If (j <> 0) Then Str := Str + '';//#9;
         Str := Str + Grilla.Rows[i].Strings[j];
      end;
{desde aqui}
      TS := TStringList.CReate();
      TS.Text := Str;
      SaveDialog1.InitialDir := nDir; // Asigno ruta_donde_almacenar
      SaveDialog1.FileName := nFile; // asigno nombre_de_Archivo
      with SaveDialog1 do
         if Execute then TS.SAveToFile(Concat(nDir,nfile))
         Else
         ShowMessage('Error al guardar archivo');
      TS.Free;
{hasta aqui se ejecuta tantas veces como el For i := 0 to Grilla.RowCount-1 do
 por eso creo que dices que entra en un bucle...}
   End

duilioisola 02-10-2007 19:11:10

Creo que deberías hacerlo de esta forma:
Código Delphi [-]
   nFile := Concat(Copy(Proceso.Text,1,1),'-',FormatDateTime('mm',Fecha.Date),FormatDateTime('yyyy', Fecha.Date),'.cdh');
   nDir := Concat('D:\Sistemas\','BCI\');
   Str := '';
   For i := 0 to Grilla.RowCount-1 do
   Begin
      If (i <> 0) Then Str := Str + #13#10;
      For j := 0 to (Grilla.Rows[i].Count - 1) do
      Begin
         If (j <> 0) Then Str := Str + '';//#9;
         Str := Str + Grilla.Rows[i].Strings[j];
      end;
   End
   TS := TStringList.CReate();
   TS.Text := Str;
   SaveDialog1.InitialDir := nDir; // Asigno ruta_donde_almacenar
   SaveDialog1.FileName := nFile; // asigno nombre_de_Archivo
   with SaveDialog1 do
      if Execute then TS.SAveToFile(SaveDialog1.FileName)
      Else
      ShowMessage('Error al guardar archivo');
   TS.Free;

SaveDialog1.FileName es el nombre que has elegido con el SaveDialog.

duilioisola 02-10-2007 19:17:48

Lo del ini, extraido más o menos igual del help de Delphi TIniFiles:
Código Delphi [-]
  var
  MyIniFile: TIniFile;
  begin
  MyIniFile := TIniFile.Create('myapp.ini');
  MyIniFile.WriteString('Transfer', 'Title1', 'Picture Painter');
  MyIniFile.Free;

Código Delphi [-]
var
  MyIniFile: TIniFile;
begin
  MyIniFile := TIniFile.Create('myapp.ini');
  with MyIniFile do
  begin
      Caption := ReadString('FormOptions', 'Caption', 'Main');
  end;
  MyIniFile.Free;
end;
Quedaría algo asi :
Código Delphi [-]
nDir := ReadString('Datos', 'Ruta', 'C:\');
y
Código Delphi [-]
MyIniFile.WriteString('Datos', 'Ruta', nDir);


La franja horaria es GMT +2. Ahora son las 07:42:51.

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