ďťż

Ładny brzuch

Mam kolejny problem [:/]. Chodzi konkretnie o button który by mi instalował program. Powiedzmy że mam kilka buttonów z nazwami programów po kliknięciu których wyświetla mi się screen z programu i krótki opis. To już wszytko mam ok. Jednak zapomniałem jeszcze o przycisku który by mi ten program instalował. Mój pomysł wygląda tak że po kliknięciu na button1 w Label3.Caption (który byłby niewidoczny) pojawiała by się ścieżka dostępu do pliku instalacyjnego danego programu z której korzystał by button2 czyli przycisk z treścią Instaluj. No i wszytko by było fajnie gdyby działało :|. Przedstawię wam kod i będę was prosił o jego korektę:

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:='Opis programu pod button1 :)';
Image1.Picture.LoadFromFile('C:obrazek.jpg');
Label3.Caption:='ProgramProgram.exe';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
WinExec('Label3.Caption', SW_NORMAL);
end;

Podejrzewam że procedura (TForm1.Button2Click) nie działa ponieważ w poleceniu WinExec w nawiasie powinno się bezpośrednio napisać ścieżkę dostępu. Jednak ja tego nie mogę zrobić bo ona za każdym razem będzie inna :(. Więc moje pytanie czy można jakoś zrobić żeby polecenie WinExec odczytywało poprawnie to Label3.Caption ?? Czy może należy użyć jakiegoś innego polecenia ??



Zamiast
cytat:
WinExec('Label3.Caption', SW_NORMAL);

powinno być

WinExec(Label3.Caption, SW_NORMAL);

bo Label3.Caption jest zmienną.
Tak jak Ty napisałeś to program próbował uruchomić inny program o ścieżce dostępu Label3.Caption :)
A tak poza tym to lepiej by było jakbyś stworzył sobie jakąś zmienną typu string i w do niej zapisywał ścieżkę do programu a później odczytywał ją. Korzystanie z Labela jest trochę dziwaczne.

Przykładowo mógłbyś zrobić tak:
procedure TForm1.Button1Click(Sender: TObject); begin  Label1.Caption:='Opis programu pod button1 ';  Image1.Picture.LoadFromFile('C:obrazek.jpg');  progEXE := 'ProgramProgram.exe'; end; procedure TForm1.Button2Click(Sender: TObject); begin  WinExec(progEXE, SW_NORMAL); end;

| GG:5365367 | ICQ:245363570 |

cytat:Oxi napisał:

Zamiast
cytat:
WinExec('Label3.Caption', SW_NORMAL);

powinno być

WinExec(Label3.Caption, SW_NORMAL);

bo Label3.Caption jest zmienną.
Tak jak Ty napisałeś to program próbował uruchomić inny program o ścieżce dostępu Label3.Caption :)

Heh Oxi wiem i próbowałem juz tak robić ale wtedy ten cały wykrywacz błedów w miejscu przecinka krzyczy że "Incompatible types: 'TCaption' and 'PAnsiChar'"

cytat:
A tak poza tym to lepiej by było jakbyś stworzył sobie jakąś zmienną typu string i w do niej zapisywał ścieżkę do programu a później odczytywał ją. Korzystanie z Labela jest trochę dziwaczne.

Przykładowo mógłbyś zrobić tak:
procedure TForm1.Button1Click(Sender: TObject); begin  Label1.Caption:='Opis programu pod button1 ';  Image1.Picture.LoadFromFile('C:obrazek.jpg');  progEXE := 'ProgramProgram.exe'; end; procedure TForm1.Button2Click(Sender: TObject); begin  WinExec(progEXE, SW_NORMAL); end;

| GG:5365367 | ICQ:245363570 |

Jak pisze tak to wtedy wykrywacz błędów (debugger tak ??) w miejscu progEXE (w tej pierwszej procedurze) mówi że "Undeclared identifier: 'progEXE'". Zreszta linijke niżej jest to samo z tym że tyczace sietej drugiej procedury :|.

Moze ja mam coś z Delphi ?? :(

cytat:Rysiek22 napisał:
Jak pisze tak to wtedy wykrywacz błędów (debugger tak ??) w miejscu progEXE (w tej pierwszej procedurze) mówi że "Undeclared identifier: 'progEXE'". Zreszta linijke niżej jest to samo z tym że tyczace sietej drugiej procedury :|.

Moze ja mam coś z Delphi ?? :(

Z Twoim Delphi wszystko jest OK :)
Błąd wyskakuje Ci dlatego, że nie zadeklarowałeś wcześniej zmiennej progEXE. Możesz to zrobić np. tak jak w poniższym przykładzie.
type  TForm1 = class(TForm)  [...]  public    progEXE : String;    [...]  end
Natomiast jeśli chodzi o błąd niezgodności typów to przyznaję - rozpędziłem się i źle Ci podałem.
Miało być: WinExec(PChar(progEXE), SW_NORMAL);

| GG:5365367 | ICQ:245363570 |



Super. Oxi masz u mnie kolejnego browca :cheesy:.

cytat:Rysiek22 napisał:

Super. Oxi masz u mnie kolejnego browca :cheesy:.

Oj, to chyba kiedyś skończy się jakimś spotkaniem w knajpie ;)

| GG:5365367 | ICQ:245363570 |

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •