Autor |
Beitrag |
stigge
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Sa 06.01.07 00:25
Also hier bin ich mal wieder^^.
Dieses Mal lautet meine Frage:
Wie kann ich es machen, das wenn in edit1.text "testwort" steht es mir das Programm C:\winrar.exe ausführt? Ich habe schon selber rumprobiert, aber es klappt noch nicht.
Delphi-Quelltext 1: 2: 3: 4: 5:
| ...shellapi...
edit1.onchange (so ungefähr) if edit1.text := ´testwort´ then shellexecute (handle, ´winrar.exe´, ´C:\´, nil, Sw_Normal) |
Jemand Ahnung was falsch ist?
Und am besten wäre natürlich der funktionierende Quellcode^^.
Danke im voraus,
Stigge
Moderiert von Gausi: Code- durch Delphi-Tags ersetzt
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Sa 06.01.07 00:42
Also falsch sind auf jeden fall deine Anführungsstriche für die Strings. die gehen so: ' und nicht ´
Delphi-Quelltext 1:
| if Edit1.Text = 'testwort' then shellexecute (handle, 'c:\programme\winrar\winrar.exe', nil, nil, Sw_Normal); |
für was hast du denn als dritten Parameter das Laufwerk C eingegeben?
Außerdem weiß ich nicht, ob winrar.exe ausgeführt wird, wenn du bloß den Dateinamen und nicht den ganzen Pfad angibst!
Ach ja, und Edit1.OnChange brauchst du nicht aufzurufen! Das wird doch schon vom Edit1 selber aufgerufen, worauf hin deine Procedure Edit1Change(Sender: TObject) aufgerufen wird.
|
|
jaenicke
      
Beiträge: 19316
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.01.07 03:12
Jakob Schöttl hat folgendes geschrieben: | Delphi-Quelltext 1: 2:
| if Edit1.Text = 'testwort' then shellexecute (handle, 'c:\programme\winrar\winrar.exe', nil, nil, Sw_Normal); | |
ShellExecute erwartet einen Parameter mehr...
Delphi-Quelltext 1: 2:
| if Edit1.Text = 'testwort' then shellexecute (handle, 'open', 'c:\programme\winrar\winrar.exe', nil, nil, Sw_Normal); |
Und was du nicht erwähnt sondern stillschweigend korrigiert hast: Das := ist eine Zuweisung, in der if-Abfrage sollen aber die beiden Werte verglichen werden. Und das geht mit einem einfachen Gleichheitszeichen ohne den Doppelpunkt. Das wollte ich dann mal noch dazusagen...
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Sa 06.01.07 13:36
jaenicke hat folgendes geschrieben: | Jakob Schöttl hat folgendes geschrieben: | Delphi-Quelltext 1: 2:
| if Edit1.Text = 'testwort' then shellexecute (handle, 'c:\programme\winrar\winrar.exe', nil, nil, Sw_Normal); | |
ShellExecute erwartet einen Parameter mehr...  |
Achja, naja, sowas kann man mal vergessen...
jaenicke hat folgendes geschrieben: | Delphi-Quelltext 1: 2:
| if Edit1.Text = 'testwort' then shellexecute (handle, 'open', 'c:\programme\winrar\winrar.exe', nil, nil, Sw_Normal); |
Und was du nicht erwähnt sondern stillschweigend korrigiert hast: Das := ist eine Zuweisung, in der if-Abfrage sollen aber die beiden Werte verglichen werden. Und das geht mit einem einfachen Gleichheitszeichen ohne den Doppelpunkt. Das wollte ich dann mal noch dazusagen... |
Das hab ich übersehen, sonst hätte ich es auch noch dazugeschrieben
Hoffentlich gehts jetzt bei stigge...
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: Sa 06.01.07 15:20
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Sa 06.01.07 22:30
Also der Text war kurz von Hand eingetippt, also ich habe schon ' benutzt.
'open' habe ich auch vergessen hier einzutippen.
*mist*e.....
Aber meine eigentliche Frage war:
Wie verwendet man die shellexecute-funktion in Verbindung mit if.
Also
if edit1.text := 'testtext' then
shellexecute (handle, 'open', 'winrar.exe', 'C:\', nil, SW_NORMAL);
Warum funktioniert das nicht?
Ich versteh's nicht.
|
|
jaenicke
      
Beiträge: 19316
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 06.01.07 22:34
Das hat nix mit dem Befehl ShellExecute zu tun... Das habe ich doch aber bereits gesagt!!
jaenicke hat folgendes geschrieben: | Das := ist eine Zuweisung, in der if-Abfrage sollen aber die beiden Werte verglichen werden. Und das geht mit einem einfachen Gleichheitszeichen ohne den Doppelpunkt. Das wollte ich dann mal noch dazusagen... |
Du willst etwas vergleichen und nicht etwas zuweisen! Also nicht := sondern =
Delphi-Quelltext 1:
| if edit1.text = 'testtext' then |
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: So 07.01.07 12:47
Also mein momentaner Quelltext ist:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Edit1Change (Sender: TObject); begin if edit1.text = ´123456´ then shellexecute (handle, ´open´, ´winrar.exe´, ´C:\´, nil, SW_SHOWNORMAL); end; |
Also ich habe im original Quelltext schon die richtigen ´ benutzt. Finde das Zeichen auf meinem PPC aber nicht und ich kann momentan nur damit ins Netz.(so nebenbei)
Das Programm lässt sich auch starten aber wenn ich dann 123456 eingegeben habe passiert nichts. Warum?
Ich habe das ganze shellexecute-zeug schon durch close ersetzt und damit gehts. Shellapi ist auch eingebunden!
Moderiert von raziel: Code- durch Delphi-Tags ersetzt
|
|
aim65
      
Beiträge: 312
Win 9x, Win XP
Delphi 3pro, 7PE
|
Verfasst: So 07.01.07 12:51
Sieh Dir doch mal das Beispiel von Jaenicke genau an - speziell den Pfad zur Datei.
Wieso hast Du denn immer noch das "C:\" zusätzlich hinter dem Dateinamen?
|
|
MarkusBauer
      
Beiträge: 70
Win XP Pro
Delphi 7 PE+Indy
|
Verfasst: So 07.01.07 15:24
Versuchs mal so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.Edit1Change (Sender: TObject); begin if edit1.text = '123456' then shellexecute (Application.handle, 'open', 'C:\winrar.exe', 'C:\', '', SW_NORMAL); end; |
|
|
stigge 
      
Beiträge: 426
WinXP
Delphi 2007
|
Verfasst: Mo 08.01.07 14:06
Jo klappt jetzt, danke für die Hilfe.
Bis demnächst,
Stigge
|
|
|