Błąd w programiku

0

Mój problem polega na tym że nie wiem gdzie mam błąd w programie.
Programik powinien otwierać plik ArmyOps.exe z parametrami z pola edit1.
Z rejestru powinno pobrać ścieżkę do pliku która wygląda nestępująco:

C:/Program Files/America's Army/

a plik ArmyOps.exe jest w
C:/Program Files/America's Army/System/ArmyOps.exe
Proszę o pomoc.

Źródełko:

unit UnitForma;

interface

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

type
  TRunForma = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  RunForma: TRunForma;
  s : string;
implementation

{$R *.dfm}
uses Registry, ShellApi;
procedure TRunForma.FormCreate(Sender: TObject);
var
   reg : TRegistry;
begin
   try
      reg := TRegistry.Create;
      reg.RootKey := HKEY_LOCAL_MACHINE;
      reg.OpenKey('SOFTWARE\US Army\America''s Army\Operations',False);
      s := reg.ReadString('Installdir');
   finally
      reg.Free;
   end;
end;

procedure TRunForma.Button1Click(Sender: TObject);
begin
   ShellExecute(handle,'open',Pchar(s+'System\ArmyOps.exe'+Edit1.Text), nil,nil, SW_SHOW);
end;

end.

//kod umieszczaj w tagu <delphi> - m.M

0

Nie napisałeś czym się objawia to, że Twój program nie działa :)

Myślę, że błąd jest tutaj:

Pchar(s+'System\ArmyOps.exe'+Edit1.Text)

Twój program będzie chciał uruchomić:
ArmyOps.exe-parametr
a powinien:
ArmyOps.exe -parametr

Myślę, że dodanie spacji pomoże:

Pchar(s+'System\ArmyOps.exe '+Edit1.Text)

;)

<font color="red">[dopisane]</span>
ehm.. dopiero teraz zauważyłem:

ShellExecute(handle,'open',Pchar(s+'System\ArmyOps.exe'+Edit1.Text), nil,nil, SW_SHOW);

daj:

ShellExecute(handle,'open',Pchar(s+'System\ArmyOps.exe'), Pchar(Edit1.Text),nil, SW_SHOW);
0

C:/Program Files/America's Army/

a plik ArmyOps.exe jest w
C:/Program Files/America's Army/System/ArmyOps.exe

A moze:

C:\Program Files\America's Army\

a plik ArmyOps.exe jest w
C:\Program Files\America's Army\System\ArmyOps.exe

0

Niestety nie pomogło :(
Nie ma błędu ale nic sie nie uruchamia.

Program powinien uruchomić się tak:
C:/Program Files/America's Army/System/ArmyOps.exe 69.25.19.24
Przykładowo

0

Spruboj moze tworzyc plik .bat ktory by uruchamial plik docelowy z parametrem a potem odpalaj tylko ten plik .bat bez zadnego parametru ...

0

Zrobiłem żeby ściażka była w bezpośrednio wpisana i działa:


procedure TMainForm.Button1Click(Sender: TObject);
begin
   ShellExecute(handle,'open','C:\Program Files\America''s Army\System\ArmyOps.exe', Pchar(Edit1.Text), nil, SW_SHOW);
end;

A może to niedziałać przez apostrof w kluczy Installdir ??

Jak utworzyć taki plik bat??
Dopiero co zacząłem programować w Delphi i się za bardzo nie znam :)

0

ten apostrof tez moze miec wpływ bo chyba delphi wtedy mysli ze to jest koniec stringa,wiec pomiedzy ten apostrof moze wstaw + ?? Nie wiem ale moze cos pomorze

0

ShellExecute(handle,'open',Pchar(s+'</b>System\ArmyOps.exe'), Pchar(Edit1.Text),nil, SW_SHOW);

Zobacz tak.

0

Super działa :) Dzięki wszystkim :)
Wolverine dokładnie trafiłeś :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1