PDA

Ver la Versión Completa : Copiado y generacion de PDF


gdlrinfo
12-03-2015, 23:47:57
Amigos a ver si alguien me puede dar una mano pongo el código y debajo explico.....

////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.


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:

WinExec('cmd /cdel *.txt', SW_SHOW) ;

No se si es problema de copia/pega, pero entre /c y del debería haber un espacio.

WinExec('cmd /c del *.txt', SW_SHOW) ;

duilioisola
13-03-2015, 14:59:10
¿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.

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;



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
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
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
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...


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;