Zitat von
blackdrake:
Ich hätte mir ja gerne noch gewünscht, dass sowas auch gehen würde:
showmessage(Konsole('ver'));
Anstelle das so auszudrücken:
showmessage(Konsole('cmd /c ver'));
Moin blackdrake,
bei ver handelt es sich um keine Anwendung, sondern um einen Befehl der Windows-Shell. Da die Funktion aber eine Anwendung startet, muss man zunächst die Anwendung cmd starten, um den Befehl auszuführen. Du kannst die Funktion natürlich recht einfach abändern, indem du dem übergebenen String einfach automatisch immer ein 'cmd /c ' voransetzt.
Zitat von
blackdrake:
- Und eventuell die Suchpfade des
OS berücksichtigen (sofern dies nicht bereits automatisch geschieht).
Das müsste eigentlich Windows von alleine machen...
Zitat von
blackdrake:
- Falls Anwendung nicht gefunden wird / kein Prozess eröffnet wird: Eine eigen definierte
Exception (z.B. ECommandOrFileNotFound) auslösen.
Meiner Funktion fehlt jegliche Fehlerbehandlung, so wie ich das gerade überblicke...
Zitat von
blackdrake:
Was wäre denn überhaupt die komplexe Fassung, wenn das die simple Fassung ist?
Das simple an dieser Fassung ist, dass die Funktion schlicht auf das Ende des gestarteten Prozesses wartet und die aufrufende Anwendung solange hängt. Das kann man eleganter, aber dann auch komplexer, lösen. Ein Beispiel dazu findet sich unter anderem im bereits im ersten Beitrag verlinkten
Code von Jens.
Ich komme in nächster Zeit sicherlich nicht dazu, die Funktion zu optimieren - ich habe aber absolut nichts dagegen, wenn Du Dich meinem Code annimmst und ihn verbesserst.
Gruß
Malte