Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
ejecutar ap.ext. dir. y nombre in & outfile

algo enredado el titulo pero trate de ser algo especifico y no lo pude editar despues,
lo que pasa ejecuto programa externo que convierte archivo segun estos parametros en un bat
Código:
set WORKFILE=%~1
set OUTFILE=%~dpn1.inf
CD /D %~dp1

:doit
Echo.
Echo ** Converting "%~nx1" ...
reg2inf.exe "%WORKFILE%" "%OUTFILE%"
Echo.
PAUSE
goto end
queria saber si se puede hacer lo mismo en codigo delphi
algo asi como un shellexecute que tome el archivo de entrada %WORKFILE% y salga con %OUTFILE%
tengo solo una parte mas o menos clara
%WORKFILE% podria ponerlo como Opendialog1.FileName o ParamStr(1)
pero
%OUTFILE% ??? debe tener otra extension (en bat set OUTFILE=%~dpn1.inf) y quedar en el mismo directorio de workfile en (bat CD /D %~dp1)
demas no se bien como realizar esta parte, mas bien estoy bien nulo
reg2inf.exe "%WORKFILE%" "%OUTFILE%"

saludos!
Gracias!

Última edición por jonydread fecha: 14-11-2011 a las 02:17:48. Razón: titulo enredado
Responder Con Cita
  #2  
Antiguo 14-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

No entiendo la necesidad de enviar los parámetros al archivo por lotes, yo lo haría directamente a reg2inf. Por ejemplo:
Código Delphi [-]
procedure LlamarReg2inf(Hnd: THandle; const App:string; const Origen: string; const Destino: string);
begin
  ShellExecute(Hnd,
              'OPEN',
              PChar(ExtractFileName(App)),
              Pchar(Origen+' '+Destino),
              PChar(ExtractFilePath(App)),
              SW_HIDE);
end;

Llamada:
Código Delphi [-]
 LlamarReg2inf(Handle,'C:\REG2INF.EXE','C:\TEMP\OLDNAME.XX','C:\TEMP\NEWNAME.XXX');

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
lo que pasa es que reg2inf.exe es un programa externo, es un archivo comprimido funciona con pantalla msdos y no puedo editarlo, para ello existe otro bat que envia los parametros que coloque, lo que quiero es saltar el primero y hacerlo en delphi y enviar directo a reg2inf.exe
Responder Con Cita
  #4  
Antiguo 14-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
funciona bien pero como puedo reemplazar esto
,'C:\TEMP\NEWNAME.XXX' mantener nombre de archivo y crear en el mismo directorio de entrada
edit:
ay quedo
Código Delphi [-]
procedure Tform1.LlamarReg2inf(Hnd: THandle; const App:string; const Origen: string; const Destino: string);
var sAppName, sAppinf : string;
begin
sAppName := App;
sAppinf := ChangeFileExt(sAppName,'.inf');
  ShellExecute(Hnd,
              'OPEN',
              PChar(ExtractFileName(App)),
              Pchar(Origen+' '+Destino),
              PChar(ExtractFilePath(App)),
              SW_HIDE);
end;

muchas gracias!!

Última edición por jonydread fecha: 14-11-2011 a las 16:11:09.
Responder Con Cita
  #5  
Antiguo 14-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
disculpa el de arriba estaba mal no funciona
Responder Con Cita
  #6  
Antiguo 14-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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 jonydread.

Podés enviar constantes como en el ejemplo que te puse anteriormente o variables. Lo que importa es que en el argumento Origen envíes la Ruta+Nombre de archivo sobre el que se van a hacer las operaciones (WORKFILE) y en el argumento Destino el nombre que deseas darle a la salida (OUTFILE).

Un ejemplo con variables:
Código Delphi [-]
var
  Aplicacion ,Entrada, Salida:
begin
  Aplicacion:= 'Y:\UNA_RUTA\REG2INF.EXE';  // Aplicacion: reg2inf.exe
  Entrada   := 'X:\OTRA_RUTA\ENTRADA.@@@'; // Nombre de archivo de entrada
  Salida    := 'X:\OTRA_RUTA\SALIDA.UXO';  // Nombre de archivo de salida
  LlamarReg2Inf(Handle,  Aplicacion, Entrada, Salida);
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 14-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
Mil gracias tenia la solucion ay mismo y no me habia dado cuenta
Código Delphi [-]
procedure Tform1.LlamarReg2inf(Hnd: THandle; const App:string; const Origen: string; const Destino: string);
begin
  ShellExecute(Hnd,
              'OPEN',
              PChar(ExtractFileName(App)),
              Pchar(Origen+' '+Destino),
              PChar(ExtractFilePath(App)),
              SW_HIDE);
end;
llamar LlamarReg2inf
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var sAppName, sAppnew : string;
begin
sAppName := Opendialog1.FileName;
sAppnew := ChangeFileExt(sAppName,'.inf');
 LlamarReg2inf(Handle,'REG2INF.EXE',Opendialog1.FileName,sAppnew );
end;
Responder Con Cita
  #8  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
Amigo tengo dos dudas para este codigo
1ºComo puedo aplicar el shortname para las rutas conservando el nombre del archivo ya que lo aplique de este modo
Código Delphi [-]
var Origen, Destino,FileName : string;
begin
FileName := ExtractFileName(Opendialog1.filename);
Origen := GetshortName(Opendialog1.FileName);
Destino := ChangeFileExt(ExtractFileName(FileName),'.inf');
 LlamarReg2inf(Handle,'REG2INF.EXE',Origen,Destino );
end;
me entrega bien pero si el nombre de archivo tiene espacio no hace nada por ejemplo
mi archivo.xx
pero si esta asi
miarchivo.xx funciona ok
2ºAplico HINSTANCE pero no me da resultado la coloque en Tform1.LlamarReg2inf
para que responda a errores y sepa cuando el resultado fue exitoso
gracias por tu tiempo

Última edición por jonydread fecha: 16-11-2011 a las 05:04:58.
Responder Con Cita
  #9  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
Empezado por jonydread Ver Mensaje
Como puedo aplicar el shortname para las rutas conservando el nombre del archivo
Si no te entendí mál, sería:
Código Delphi [-]
var
  Origen, Destino: string;
begin
  OpenDialog1.Execute;
  Origen   := GetshortName(Opendialog1.FileName);
  Destino  := ExtractFilePath(Opendialog1.FileName) + ChangeFileExt(ExtractFileName(Opendialog1.FileName), '.INF');
  ...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
asi coloque para que funcionara
Código Delphi [-]
Origen := GetshortName(Opendialog1.FileName);
Destino :=ChangeFileExt(ExtractFileName(Opendialog1.FileName), '.inf');
funciona pero si el nombre contiene espacios no funciona

lo otro disculpa
para colocar un HINSTANCE donde lo coloco??

gracias!!

Última edición por jonydread fecha: 16-11-2011 a las 15:33:40.
Responder Con Cita
  #11  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
si el nombre contiene espacios no funciona
Tenés razón, eso me pasa por hacer las cosas en el aire.

De este modo renombra correctamente el archivo usando nombres cortos (con y sin espacios):
Código Delphi [-]
...
var
  Origen, Destino: string;
begin
  OpenDialog1.Execute;
  Origen   := GetshortName(Opendialog1.FileName);
  Destino  := GetShortName(ChangeFileExt(Origen, '.INF'));
  ShowMessage(Origen+#10#13+Destino);  // las cadenas sólo difieren en '.INF'
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Tenés razón, eso me pasa por hacer las cosas en el aire.

De este modo renombra correctamente el archivo usando nombres cortos (con y sin espacios):
Código Delphi [-]
...
var
  Origen, Destino: string;
begin
  OpenDialog1.Execute;
  Origen   := GetshortName(Opendialog1.FileName);
  Destino  := GetShortName(ChangeFileExt(Origen, '.INF'));
  ShowMessage(Origen+#10#13+Destino);  // las cadenas sólo difieren en '.INF'
  ...

Saludos.
Disculpas creo que me exprese mal, funciona bien lo que pasa que el nombre del archivo si tiene espacios no realiza la accion, estoy buscando como reemplazar el espacio por _ para que pueda escribir el archivo de salida
Responder Con Cita
  #13  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
estoy buscando como reemplazar el espacio por _ para que pueda escribir el archivo de salida
Código Delphi [-]
uses StrUtils;
...
var
  ArchivoSalida: string;
begin
  ...
  ArchivoSalida:= AnsiReplaceStr(ArchivoSalida, ' ', '_');
  ...
end;

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 16-11-2011 a las 16:33:15.
Responder Con Cita
  #14  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
lo he hecho asi
Código Delphi [-]
procedure TReg2infConverter.Button2Click(Sender: TObject);
var Origen, Destino,FileName: string;
begin
Origen := GetshortName(Opendialog1.FileName);
Destino :=ChangeFileExt(FileName, '.inf');
FileName := ExtractFileName(Opendialog1.FileName);
FileName := StringReplace(FileName,' ','_',[rfReplaceAll]);
 LlamarReg2inf(Handle,'REG2INF.EXE',Origen,Destino );
end;

es la única forma que realiza la acción pero el archivo de salida sale sin nombre .inf solamente
para que quede mas claro
este archivo esta en esta ruta
D:\Documents and Settings\Administrador\Mis documentos\pruebas\Copia de arch.reg (con este da el problema)
D:\Documents and Settings\Administrador\Mis documentos\pruebas\Copiadearch.reg (este realiza la acción y conserva el nombre completo)
Responder Con Cita
  #15  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
D:\Documents and Settings\Administrador\Mis documentos\pruebas\Copia de arch.reg (con este da el problema)
D:\Documents and Settings\Administrador\Mis documentos\pruebas\Copiadearch.reg (este realiza la acción y conserva el nombre completo)
Entonces:
Código Delphi [-]
use StrUtils;
...
  ArchivoSalida:= AnsiReplaceStr(ArchivoSalida,' ','');

Pero entonces no se condice con lo que expusiste en el mensaje anterior: "estoy buscando como reemplazar el espacio por _ ..."

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
es lo mismo por lo que se reemplaze pero el enredo lo tenia yo jaj gracias ay funciono de pelos!!
Código Delphi [-]
procedure TReg2infConverter.Button2Click(Sender: TObject);
var Origen, Destino,FileName: string;
begin
FileName := Extractfilename(Opendialog1.FileName);
Origen := GetshortName(Opendialog1.FileName);
FileName:= AnsiReplaceStr(FileName,' ','');
Destino :=ChangeFileExt(FileName, '.inf');
 LlamarReg2inf(Handle,'REG2INF.EXE',Origen,Destino );
end;
la otra consulta que ise puse el codigo hintance para comprobar shellexecute
lo coloque aqui
Código Delphi [-]
procedure TReg2infConverter.LlamarReg2inf(Hnd: THandle; const App:string; const Origen: string; const Destino: string);
var
 HINSTANCE: Integer;
  ErrorMSG: string;
begin
   HINSTANCE:=ShellExecute(Hnd,
              'OPEN',
              PChar(ExtractFileName(App)),
              PChar(Origen+' '+Destino),
              PChar(GetShortName(ExtractFilePath(App))),
              SW_HIDE);
                if HINSTANCE < 32 then
      begin
        case HINSTANCE of
          0: ErrorMSG:= 'Memoria o recursos insuficientes';
          ERROR_FILE_NOT_FOUND: ErrorMSG:= 'Archivo no encontrado';
          ERROR_PATH_NOT_FOUND: ErrorMSG:= 'Ruta no encontrada';
          SE_ERR_ACCESSDENIED:  ErrorMSG:= 'Acceso denegado';
          //...
        end;
        MessageBox(Handle, PChar(ErrorMSG), 'ERROR', MB_ICONERROR + MB_OK);
        Application.Terminate;
       end;
end;
pero no funciono
Responder Con Cita
  #17  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

¿ Que es lo que no funcionó, no ejecuta el programa , te da alguna excepción ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #18  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
ise la prueba cargando un archivo y le cambie el nombre y no tira el error de no encontrado
Responder Con Cita
  #19  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

La función ShellExecute no te va a informar ningún error si la ruta y el nombre de archivo enviado en el argumento App es correcto.

Es taréa de la aplicación invocada por ShellExecute el manejar cualquier error en los nombres enviados en los parámetros Origen o Destino.


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #20  
Antiguo 16-11-2011
jonydread jonydread is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 157
Poder: 15
jonydread Va por buen camino
ok muchas gracias!
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
Ejecutar procedimientos por su nombre y con parametros makina OOP 3 29-09-2016 18:06:55
Ejecutar procedimiento sabiendo únicamente su nombre DarkDudae OOP 4 26-03-2011 13:19:26
Ejecutar Rave Designer sin ejecutar IDE Delphi rmendoza83 Impresión 0 09-01-2009 19:44:56
Ejecutar función de JavaScript a partir del nombre de su identificador (string) dec HTML, Javascript y otros 12 24-08-2006 01:30:45
Mostrar nombre de campos y filtar nombre de tablas .db en un combobox Coco_jac Varios 1 24-06-2006 01:34:29


La franja horaria es GMT +2. Ahora son las 21:22:11.


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