Ver Mensaje Individual
  #7  
Antiguo 10-09-2008
noob noob is offline
Miembro
 
Registrado: sep 2008
Posts: 212
Reputación: 16
noob Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

Comprueba el error de "ShellExecute()", si existe: intenta con la función "GetLastError()", porque es muy raro eso que ocurre... ¿igual es que no existe "notepad.exe" en tu sistema?
Jeje, si, si que existe notepad.exe en mi sistema.

Cita:
Empezado por seoane Ver Mensaje
Siguiendo el consejo de dec, coloca esto justo despues del ShellExecute:
Código Delphi [-]
ShowMessage(SysErrorMessage(GetLastError));
He he hecho esto y obtengo el mensaje "La operación se ha completado correctamente" eso si, no se abre el notepad con el archivo de texto. Esto es mazo de raro.

Este es el código que tengo:

Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    Archivo: Text;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  linea: string;
  St: Array[0..255] of char;
  SW_SHOW: longint;
begin
  SW_SHOW := 0;
  // Archivo está declarado como atributo privado del formulario --> Archivo: Text;
  System.Assign(Archivo,'C:\a\b.txt');
  System.Rewrite(Archivo);
  System.Writeln(Archivo,'Hola');
  System.Close(Archivo);
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Formulario creado.');
  Memo1.Lines.Add('Archivo creado.');
  System.Reset(Archivo);
  System.Readln(Archivo,linea);
  Memo1.Lines.Add(linea);
  System.Close(Archivo);
  // Pongo en el uses ShellAPi para que reconozca ShellExecute
  ShellExecute(Handle,'open','notepad.exe','C:\a\b.txt','',SW_SHOW);
  ShowMessage(SysErrorMessage(GetLastError));
end;

end.

Última edición por noob fecha: 10-09-2008 a las 14:18:31.
Responder Con Cita