Ver Mensaje Individual
  #19  
Antiguo 12-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 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
Cita:
Empezado por jonydread Ver Mensaje
solo quisiera saber si se ejecuto shellexecute
Eso exáctamente hace el código que te puse anteriormente. Guarda en la variable HINSTANCE el resultado de la acción de ShellExecute y si hubo un error (el resultado es menor que 32) lo muestra.

Lo único que habría que hacer es agregarlo:
Código Delphi [-]
var
  HINSTANCE: Integer;
  ErrorMSG: string;
begin
  if ParamStr(1) > '' then
  begin
    OpenDialog1.FileName:= ParamStr(1);
    edit1.Text:=ParamStr(1);
    if ParamStr(1) > '' then
  begin
  if ExtractFileExt(ParamStr(1)) = '.reg' then
  begin
    HINSTANCE:= ShellExecute(Handle,  'open', 'C:\HAND.CMD', PChar(GetShortName(FileName)), nil, SW_NORMAL);
    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:  ErrorMSGr:= 'Acceso denegado';
        //...
     end;
     MessageDlg('Error: '+ErrorMSG, mtError, [mbOK],0);
     Application.Terminate;
  end
  ...

Pero no le encuentro sentido a estas líneas:
Código Delphi [-]
 
  if MessageDlg('Archivo invalido!', MtInformation, [mbOK],0) = mrok then
    Application.Terminate;
El usuario recibe el mensaje 'Archivo inválido', no tiene otra opción que aceptar con el botón OK y luego de eso se termina la aplicación. Es decir no tiene sentido evaluar una condición de la que ya sabemos la respuesta...

O directamente hacemos:
Código Delphi [-]
  MessageDlg('Archivo invalido!', mtError, [mbOK],0);
  Application.Terminate;

O si queremos la opinión del usuario:
Código Delphi [-]
 
  if MessageDlg('¿ Desea finalizar ?', mtConfirmation, [mbYes,mbNo],0) = mrYes then
    Application.Terminate;

Un saludo.
__________________
Daniel Didriksen

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