Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Copiado y generacion de PDF (https://www.clubdelphi.com/foros/showthread.php?t=87887)

gdlrinfo 12-03-2015 23:47:57

Copiado y generacion de PDF
 
Amigos a ver si alguien me puede dar una mano pongo el código y debajo explico.....

Código Delphi [-]
    ////ACA SALUD///
  if cb.Checked[0]then
   begin
   InputQuery('Presentación', 'Escriba la Presentación AAAAMMP:', a);
   if DirectoryExists('J:\Archivos\ACASALUD\'+ a+'\ADEM\')=True then
    Begin
   Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\ADEM\'+'ACA SALUD '+a+'.zip';
   Zipp.OpenArchive(fmCreate);
   Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
   Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
   Zipp.AddFiles('*.Txt');
   Zipp.CloseArchive;
    ProgressBar1.position:=10;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\ADEM\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    WinExec('cmd /cRename *.lis *.txt', SW_SHOW);
        WinExec('cmd /cpdfcreator /pf"*.txt"', SW_SHOW);
    ShowMessage('No des Ok hasta que termine el PDF');
    CopiaTodo('C:\*.pdf', 'J:\Archivos\ACASALUD\'+ a+'\ADEM\');
    ProgressBAr1.position:=40;
         //WinExec('cmd /ctskill /a pdfcreator', SW_SHOW);
    chdir('C:');
    WinExec('cmd /cdel *.pdf', SW_SHOW)  ;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\ADEM\');
    WinExec('cmd /cdel *.txt', SW_SHOW);
    ProgressBAr1.position:=50;
    Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\ADEM\'+'ACA SALUD '+a+'.zip';
    Zipp.OpenArchive;
    Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
    Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
    Zipp.AddFiles('*.pdf');
    Zipp.CloseArchive;
    WinExec('cmd /cdel *.pdf', SW_SHOW);
    End;

    ProgressBAr1.position:=60;
   if DirectoryExists('J:\Archivos\ACASALUD\'+ a+'\DISPROFA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\DISPROFA\'+'ACA SALUD '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\DISPROFA\';
    Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\DISPROFA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\DISPROFA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;

    ProgressBAr1.position:=70;
    if DirectoryExists('J:\Archivos\ACASALUD\'+ a+'\FARMANET\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\FARMANET\'+'ACA SALUD '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\FARMANET\';
    Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\FARMANET\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\FARMANET\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;

    ProgressBAr1.position:=80;
    if DirectoryExists('J:\Archivos\ACASALUD\'+ a+'\GLOBALFA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\GLOBALFA\'+'ACA SALUD '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\GLOBALFA\';
    Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\GLOBALFA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\GLOBALFA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;

    ProgressBAr1.position:=90;
    if DirectoryExists('J:\Archivos\ACASALUD\'+ a+'\ROFINA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\ROFINA\'+'ACA SALUD '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\ROFINA\';
    Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\ROFINA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ACASALUD\'+ a+'\ROFINA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;
    ProgressBAr1.position:=100;
   // WinExec('cmd /c RD C:\pagos /s /q ', SW_SHOW);
  //'J:\Archivos\ACASALUD\'+ Ediform.Edit1.Text+'\ADEM\';
  ShowMessage('Terminado ACA SALUD');
  cb.Checked[0]:=False;
   end;

  ///ASOCIART/////

  if cb.Checked[1]then
   begin
   InputQuery('Presentación', 'Escriba la Presentación AAAAMMP:', a);
   if DirectoryExists('J:\Archivos\ASOCIART\'+ a+'\ADEM\')=True then
   Begin
   Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\ADEM\'+'ASOCIART '+a+'.zip';
   Zipp.OpenArchive(fmCreate);
   Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\ADEM\';
   Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\ADEM\';
   Zipp.AddFiles('*.Txt');
   Zipp.CloseArchive;
    ProgressBar1.position:=10;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\ADEM\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    WinExec('cmd /cRename *.lis *.txt', SW_SHOW);
        WinExec('cmd /cpdfcreator /pf"*.txt"', SW_SHOW);
    ShowMessage('No des Ok hasta que termine el PDF');
    CopiaTodo('C:\*.pdf', 'J:\Archivos\ASOCIART\'+ a+'\ADEM\');
    ProgressBAr1.position:=40;
    chdir('C:');
         //WinExec('cmd /ctskill /a pdfcreator', SW_SHOW);
    WinExec('cmd /cdel *.pdf', SW_SHOW)  ;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\ADEM\');
    WinExec('cmd /cdel *.txt', SW_SHOW);
    ProgressBAr1.position:=50;
    Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\ADEM\'+'ASOCIART '+a+'.zip';
    Zipp.OpenArchive;
    Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\ADEM\';
    Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\ADEM\';
    Zipp.AddFiles('*.pdf');
    Zipp.CloseArchive;
    WinExec('cmd /cdel *.pdf', SW_SHOW);
   End;

    ProgressBAr1.position:=60;
    if DirectoryExists('J:\Archivos\ASOCIART\'+ a+'\DISPROFA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\DISPROFA\'+'ASOCIART '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\DISPROFA\';
    Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\DISPROFA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\DISPROFA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;
    ProgressBAr1.position:=70;

    if DirectoryExists('J:\Archivos\ASOCIART\'+ a+'\FARMANET\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\FARMANET\'+'ASOCIART '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\FARMANET\';
    Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\FARMANET\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\FARMANET\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;

    ProgressBAr1.position:=80;

    if DirectoryExists('J:\Archivos\ASOCIART\'+ a+'\GLOBALFA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\GLOBALFA\'+'ASOCIART '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\GLOBALFA\';
    Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\GLOBALFA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\GLOBALFA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;

    ProgressBAr1.position:=90;

    if DirectoryExists('J:\Archivos\ASOCIART\'+ a+'\ROFINA\')=True then
    Begin
    Zipp.FileName := 'J:\Archivos\ASOCIART\'+a+'\ROFINA\'+'ASOCIART '+a+'.zip';
    Zipp.OpenArchive(fmCreate);
    Zipp.BaseDir := 'J:\Archivos\ASOCIART\'+ a+'\ROFINA\';
    Zipp.TempDir := 'J:\Archivos\ASOCIART\'+ a+'\ROFINA\';
    Zipp.AddFiles('*.Txt');
    Zipp.CloseArchive;
    Chdir('J:\Archivos\ASOCIART\'+ a+'\ROFINA\');
    WinExec('cmd /cdel *.txt', SW_SHOW)  ;
    End;


    ProgressBAr1.position:=100;
    ShowMessage('Terminado ASOCIART');
  cb.Checked[1]:=False;
   // WinExec('cmd /c RD C:\pagos /s /q ', SW_SHOW);
  //'J:\Archivos\ACASALUD\'+ Ediform.Edit1.Text+'\ADEM\';
 end;


Sucede que tenemos unas carpetas donde hay txt estos tenemos que compactarlos y borrar los archivos que hay por fuera, entonces quedan unos archivos *.lis que son renombrados como *.txt para que el pdfcreator me los genere ya que no lee *.lis el problema es que cuando genera los pdf a veces me copia menos de los que debía generar y no encuentro el motivo también este proceso consta de 26 check no solo dos como esta en el ejemplo que mando y por cada check esta el proceso escrito podría simplificarse mas eso ? bueno espero que se entienda y desde ya muchas gracias como siempre....

duilioisola 13-03-2015 14:46:14

Voy a reescribir tu mensaje con puntos y comas para que sea legible.

Cita:

Sucede que tenemos unas carpetas donde hay archivos .TXT.
Estos tenemos que compactarlos y borrar los archivos que hay por fuera.
Al hacer esto, quedan unos archivos *.LIS que son renombrados como *.TXT para que el PDFCreator me los genere ya que no lee *.LIS.
El problema es que cuando genera los PDF, a veces me copia menos de los que debía generar y no encuentro el motivo.
También este proceso consta de 26 check no solo dos como esta en el ejemplo que mando y por cada check esta el proceso escrito. ¿Podría simplificarse mas eso?
Beno espero que se entienda y desde ya muchas gracias como siempre...

duilioisola 13-03-2015 14:51:30

Veo varios líneas en donde pones:
Código Delphi [-]
WinExec('cmd /cdel *.txt', SW_SHOW)  ;
No se si es problema de copia/pega, pero entre /c y del debería haber un espacio.
Código Delphi [-]
WinExec('cmd /c del *.txt', SW_SHOW)  ;

duilioisola 13-03-2015 14:59:10

Cita:

¿Podría simplificarse mas eso?
Veo que se utiliza repetidamente estas líneas de código.
Puedes ponerlo todo en un procedimiento y pasarle los parámetros necesarios.
Código Delphi [-]
   Zipp.FileName := 'J:\Archivos\ACASALUD\'+a+'\ADEM\'+'ACA SALUD '+a+'.zip';
   Zipp.OpenArchive(fmCreate);
   Zipp.BaseDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
   Zipp.TempDir := 'J:\Archivos\ACASALUD\'+ a+'\ADEM\';
   Zipp.AddFiles('*.Txt');
   Zipp.CloseArchive;

Código Delphi [-]
procedure comprimir(DirectorioBase, Archivo, ArchivoZip: string);
begin
   with Zipp do
   begin
      FileName := ArchivoZip;
      OpenArchive(fmCreate);
      BaseDir := DirectorioBase;
      TempDir := IncludeTrailingPathDelimiter(ExtractFilePath(ArchivoZip));
      AddFiles(Archivo);
      CloseArchive;
   end;
end;

// luego lo llamarías así:
[...]
comprimir( 'J:\Archivos\ACASALUD\'+ a+'\ADEM\', '*.Txt', 'J:\Archivos\ACASALUD\'+a+'\ADEM\'+'ACA SALUD '+a+'.zip');
[...]

gdlrinfo 13-03-2015 19:00:59

Gracias
 
Hola amigo gracias por tu respuesta he probado de separar el comando de /c y hace lo mismo estoy dudando que el problema venga del pdfcreator, por otro lado todos los check son exactamente iguales son 27 lo único que cambia es la ruta donde procesa lo que quería saber si todo el proceso completo se podía simplificar a uno mas simple desde ya muchas gracias como siempre

Casimiro Notevi 13-03-2015 20:03:21

Cita:

Empezado por gdlrinfo (Mensaje 489995)
lo que quería saber si todo el proceso completo se podía simplificar a uno mas simple

Eso es lo que te ha contestado duilioisola

gdlrinfo 13-03-2015 22:27:37

gRACIASS
 
Amigos gracias por la ayuda al final hice dos procesos para todo uno el que me paso el amigo duilioisola que me sirvió de mucho y después generalice todo lo otro en otro mas aquí dejo el ejemplo por si alguien le sirve y muchas gracias como siempre por su ayudaaaaa... Abrazooossss...

Código Delphi [-]
Procedure Llamar(obra, a, nombre:string);
begin
   InputQuery('Presentación', 'Escriba la Presentación AAAAMMP:', a);
   if DirectoryExists(obra+'\'+a+'\ADEM\')=True then
    Begin
      Comprimir( obra+'\'+a+'\ADEM\', '*.Txt', obra+'\'+a+'\ADEM\'+nombre+a+'.zip');
      Chdir(obra+'\'+a+'\ADEM\');
      WinExec('cmd /cRename *.lis *.txt', SW_SHOW);
      WinExec('cmd /cpdfcreator /pf"*.txt"', SW_SHOW);
      ShowMessage('No des Ok hasta que termine el PDF');
      CopiaTodo('C:\*.pdf', obra+a+'\ADEM\');
      chdir('C:');
      WinExec('cmd /cdel *.pdf', SW_SHOW)  ;
      Chdir(obra+'\'+a+'\ADEM\');
      WinExec('cmd /cdel *.txt', SW_SHOW);
      Comprimir(obra+'\'+a+'\ADEM\', '*.PDF', obra+'\'+a+'\ADEM\'+nombre+a+'.zip');
      Chdir(obra+'\'+a+'\ADEM\');
      WinExec('cmd /cdel *.pdf', SW_SHOW);
    End;
    if DirectoryExists(obra+'\'+a+'\DISPROFA\')=True then
      Begin
        Comprimir( obra+'\'+a+'\DISPROFA\', '*.Txt', obra+'\'+a+'\DISPROFA\'+nombre+a+'.zip');
        Chdir(obra+'\'+a+'\DISPROFA\');
        WinExec('cmd /cdel *.txt', SW_SHOW)  ;
      End;
    if DirectoryExists(obra+'\'+ a+'\FARMANET\')=True then
      Begin
        Comprimir( obra+'\'+ a+'\FARMANET\', '*.Txt', obra+'\'+a+'\FARMANET\'+nombre+a+'.zip');
        Chdir(obra+'\'+ a+'\FARMANET\');
        WinExec('cmd /cdel *.txt', SW_SHOW)  ;
      End;
    if DirectoryExists(obra+'\'+ a+'\GLOBALFA\')=True then
      Begin
        Comprimir( obra+'\'+ a+'\GLOBALFA\', '*.Txt', obra+'\'+a+'\GLOBALFA\'+nombre+a+'.zip');
        Chdir(obra+'\'+ a+'\GLOBALFA\');
        WinExec('cmd /cdel *.txt', SW_SHOW)  ;
      End;
    if DirectoryExists(obra+'\'+ a+'\ROFINA\')=True then
      Begin
        Comprimir( obra+'\'+ a+'\ROFINA\', '*.Txt', obra+'\'+a+'\ROFINA\'+nombre+a+'.zip');
        Chdir(obra+'\'+ a+'\ROFINA\');
        WinExec('cmd /cdel *.txt', SW_SHOW)  ;
      End;
  end;


La franja horaria es GMT +2. Ahora son las 18:21:52.

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