Ĺ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
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 |