Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema de Sintaxis con ShellExecute en Windows 7 (https://www.clubdelphi.com/foros/showthread.php?t=88271)

tulio 12-05-2015 18:03:28

Problema de Sintaxis con ShellExecute en Windows 7
 
Buen dia compañeros

les comento que quiero ejecutar desde una aplicacion el winrar para compactar una base de datos e indicarle algunos parametros, usando el winexec en windows xp me anda perfecto, el problema es que si uso el winexec en windows seven no anda y lo que hay que usar es el shellexecute, pero lo llamo con la sintaxis que les muestro debajo y no llama al winrar, queria ver si me pueden decir que es lo que estoy haciendo mal

Codigo con winexec que funciona en XP pero no en seven

Código Delphi [-]
  dia:=copy(datetostr(date()),1,2);
  Mes:=copy(datetostr(date()),4,2);
  Anio:=copy(datetostr(date()),9,2);
  JArchivo:=’c:\prueba\archivo’+dia+mes+anio+'.arJ';
 WinExec( pchar('Command.com /c  winrar a -r '+Jarchivo + 'c:\base_de_datos\'+ '*.gdb'), SW_SHOWnormal );

Codigo que no da error pero no ejecuta el winrar en Seven

Código Delphi [-]

  dia:=copy(datetostr(date()),1,2);
  Mes:=copy(datetostr(date()),4,2);
  Anio:=copy(datetostr(date()),9,2);
  JArchivo:=’c:\prueba\archivo’+dia+mes+anio+'.arJ';
  ShellExecute(f_Backup.Handle, nil,pchar('Command.com /c  winrar a -r '+Jarchivo + 'c:\base_de_datos\'+ '*.gdb') ,nil, nil, SW_SHOWNORMAL);

Saludos y gracias

tulio

Casimiro Noteví 12-05-2015 18:04:12

Por favor, no olvides poner títulos descriptivos, gracias :)

ecfisa 12-05-2015 23:37:13

Hola tulio.

Te hice un ejemplo que funciona con 7-Zip y debería hacerlo con WinRar ya que los parámetros son los mismos.
Código Delphi [-]
...
uses ShellApi;

procedure CompressBD(SourcePath, TargetPath: string);
var
  zName: string;
begin
  SourcePath := IncludeTrailingPathDelimiter( SourcePath );
  TargetPath := IncludeTrailingPathDelimiter( TargetPath );
  zName := IncludeTrailingPathDelimiter( TargetPath ) +
           FormatDateTime( 'ddmmyy', Date ) + '.ZIP'; // (1)
  ShellExecute( 0,
                'open',
                PChar( GetEnvironmentVariable('ProgramFiles') + '\7-Zip\7z.exe' ), //(2)
                PChar( Format( 'a -r %s %s*.GDB',[zName, SourcePath] ) ),
                nil,
                SW_SHOWNORMAL );
end;

Llamada ejemplo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  CompressBD( 'c:\base_de_datos', 'c:\prueba\archivo' );
end;

(1) '.ARJ'
(2) Para tu caso creo que sería algo como: '\WinRar\WinRar.exe'.

Saludos :)

tulio 13-05-2015 03:27:57

Muchas Gracias !!!!! Ecfisa

Gracias por tu tiempo

un abrazo

tulio 13-05-2015 04:21:28

Hola Ecfisa

te cuento que copie el ejemplo tal cual, me instale el 7Zip y no me funciona, no da error pero no hace nada despues de dar click en el boton que llama al procedimiento

te envio todo el codigo para ver si hice algo mal
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,ShellApi;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

procedure CompressBD(SourcePath, TargetPath: string);
var
  zName: string;
begin
  SourcePath := IncludeTrailingPathDelimiter( SourcePath );
  TargetPath := IncludeTrailingPathDelimiter( TargetPath );
  zName := IncludeTrailingPathDelimiter( TargetPath ) +
           FormatDateTime( 'ddmmyy', Date ) + '.ZIP'; // (1)
  ShellExecute( 0,
                'open',
                PChar( GetEnvironmentVariable('Archivos de programa') + '\7-Zip\7zfm.exe' ), //(2)
                PChar( Format( 'a -r %s %s*.GDB',[zName, SourcePath] ) ),
                nil,
                SW_SHOWNORMAL );
end;

{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
CompressBD( 'c:\sistemas\cnaz\base_de_datos', 'c:\sistemas' );
end;


end.

saludos !!!!

nlsgarcia 13-05-2015 08:20:32

tulio,

Cita:

Empezado por tulio
...copie el ejemplo tal cual, me instale el 7Zip y no me funciona, no da error pero no hace nada...

:rolleyes:

Sustituye:
Código Delphi [-]
PChar( GetEnvironmentVariable('Archivos de programa') + '\7-Zip\7zfm.exe' ), //(2)

Por:
Código Delphi [-]
PChar( GetEnvironmentVariable('ProgramFiles') + '\7-Zip\7z.exe' ), //(2)

Revisa esta información:
Espero sea útil :)

Nelson.

tulio 13-05-2015 14:19:05

Gracias Nelson !!!

lo veo


La franja horaria es GMT +2. Ahora son las 05:36:12.

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