Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2015
jbecerra jbecerra is offline
Miembro
NULL
 
Registrado: mar 2015
Posts: 16
Poder: 0
jbecerra Va por buen camino
Archivos en Lazarus

Hola...estoy necesitando alguna información sobre lo siguiente:
Estoy haciendo un programita para realizar tareas automatizadas. Lo que hago desde el código fuente es generar un archivo BAT que me cambie la extensión de todos los archivos de una carpeta... luego quiero ejecutarlo y no funciona...
Me fije y el archivo BAT está bien escrito... de hecho si le hago doble clic funciona perfectamente. No se que me puede estar fallando o faltando en el código. Les adjunto el código para ilustrar mejor lo que quiero decir...
Código Delphi [-]
Procedure crearfile(var D:string);
var f:textfile;
begin
  D:=D+'\convertir.bat';
  Assign(f,D);
  rewrite(f);
  write (f, 'ren *.dbf *.tmp');
  close(f);
end;                

procedure TForm1.Button2Click(Sender: TObject);
var Dir:string;
    n:integer;
Const SELDIRHELP=1000;
begin
   Dir:='';
   Dir:='C:\Windows';
   if  SelectDirectory (Dir ,[ sdAllowCreate , sdPerformCreate , sdPrompt ], SELDIRHELP )  then
   begin
     crearfile(Dir);
     WinExec(Pchar(Dir),SW_NORMAL);
     showmessage(Dir);
   end;
end;
Cualquier info que puedan darme...les será agradecida..
saludos

Última edición por ecfisa fecha: 30-03-2015 a las 15:18:10. Razón: agregar etiquetas [delphi]
Responder Con Cita
  #2  
Antiguo 30-03-2015
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Revisa este hilo, y prueba con ShellExecute, tal y como se explica ahí
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 30-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jbecerra, bienvenido a Club Delphi .

Al tratarse de Lazarus no te recomiendo usar WinExec o ShellExecute ya que le quitas portabilidad a tu aplicación. En su lugar usa ExecuteProcess o mejor aún TProcess que te dá mas poder sobre la acción.

Con ExecuteProcess:
Código Delphi [-]
procedure crearfile(const D:string);
var
  f:textfile;
begin
  Assign(f, D + 'Convertir.bat');
  rewrite(f);
  write (f, 'PAUSE'); // Ej.
  close(f);
end;    

procedure TForm1.Button1Click(Sender: TObject);
var
  Dir:string;
begin
   Dir:= IncludeTrailingPathDelimiter('C:\Windows');
  if SetCurrentDir(Dir) then
  begin
    crearfile(Dir);
    ExecuteProcess(Dir + 'Convertir.bat','');  
  end;  
end;

Con TProcess:
Código Delphi [-]
uses Process;

procedure crearfile(const D:string);
var
  f:textfile;
begin
  Assign(f, D);
  rewrite(f);
  write (f, 'PAUSE'); // Ej.
  close(f);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Dir, Bat:string;
begin
  Dir:= IncludeTrailingPathDelimiter('C:\Windows');
  Bat:= 'Convertir.bat';
  crearfile(Dir + Bat);
  with TProcess.Create(nil) do
  try
    Executable:= Dir + Bat;
    Execute;
  finally
    Free;
  end;
end;
En este enlace tenes información mas detallada: Executing External Programs/es

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-03-2015 a las 16:30:01.
Responder Con Cita
  #4  
Antiguo 30-03-2015
jbecerra jbecerra is offline
Miembro
NULL
 
Registrado: mar 2015
Posts: 16
Poder: 0
jbecerra Va por buen camino
Consulta

No me esta funcionando...probé con las dos opciones que me pasaste y el programa me saca un cartel que tengo que Interrumpir o continuar...
Lo que necesito basicamente es darle la opción al usuario a que navegue por windows y me indique la ruta en donde se encuentran los archivos que tiene que renombrar... por eso utilicé:
Dir:='C:\Windows';
if SelectDirectory (Dir ,[ sdAllowCreate , sdPerformCreate , sdPrompt ], SELDIRHELP ) then
para que el usuario pueda decirme donde están los archivos que necesita renombrar, en este caso solo tiene que cambiar la extensión...esa es la razón de crear un archivo bat.
Una vez que el usuario me indique donde se encuentran los archivos, el programa debe generar el bat y poder ejecutarlo en la ubicación especificada...
Aguardo tu respuesta y gracias por tu ayuda
Responder Con Cita
  #5  
Antiguo 30-03-2015
jbecerra jbecerra is offline
Miembro
NULL
 
Registrado: mar 2015
Posts: 16
Poder: 0
jbecerra Va por buen camino
Otra consulta

ecfisa Muchas gracias por tu aporte... sos un groso.. combiné tu código con el mío y funciona de 10
Te iba a preguntar si conoces alguna herramienta en lazarus para descomprimir una carpeta ZIP, de una ruta especificada por el usuario... Estoy intentado utilizar TUnZipper y descomprime, pero lo hace siempre y cuando le especifique exactamente la ruta y nombre del archivo a descomprmir....pero yo lo que quiero es que descomprima desde una ruta especificada...me explico?
aguardo tu respuesta..
saludos... y gracias por tu ayuda
Responder Con Cita
  #6  
Antiguo 30-03-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jbecerra.

Te iba a comentar que también tenes la posibilidad de usar el componente TSelectDirectoryDialog(pestaña Dialogs) en lugar de SelectDirectory, pero va en gustos...

En cuanto a tu otra pregunta no he usado TUnZipper, pero te aconsejo que abras un nuevo hilo (como hiciste con este) para publicar esa consulta.

Hay dos motivos, el primero es que facilita las búsquedas posteriores. Y el segundo, por que al estar como nuevo tema, más compañeros van a ver tu duda y mas posibilidades tendrás de conseguir una respuesta.

Ya lo indica nuestra guia de estilo en el punto 12:
Cita:
12. Solo se permite una pregunta por hilo, es una cuestión de simplicidad y objetividad en las respuestas y facilita las búsquedas.
Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 30-03-2015
jbecerra jbecerra is offline
Miembro
NULL
 
Registrado: mar 2015
Posts: 16
Poder: 0
jbecerra Va por buen camino
TUnZipper

.............
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
codigo de lazarus windows a lazarus linux anubis Lazarus, FreePascal, Kylix, etc. 5 20-04-2013 21:33:55
FTP para subir archivos al servidor en DELPHI y me sirva para lazarus = koiji Delphi para la web 2 05-02-2013 15:52:06
¿lazarus puede importar archivos XSD hacer databinding? JXJ Lazarus, FreePascal, Kylix, etc. 0 17-08-2011 05:30:30
Abrir archivos con nombres de archivos de otra codificación. matabyte Windows 2 01-05-2008 01:40:13
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 03:31:09


La franja horaria es GMT +2. Ahora son las 16:13:15.


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
Copyright 1996-2007 Club Delphi