Mit Delphi ist es sehr leicht die beim Start des Programmes übergebene Parameter auszulesen.
hier ein Beispiel:
Quelltext
1:
| c:\test.exe parameter1 parameter2 |
der erste Parameter wird mit ParamStr (1) ausgelesen. Z.B. so:
Quelltext
1:
| ShowMessage (ParamStr (1)); |
Als Ergebnis bekommt man eine Meldung mit dem Inhalt des ersten Parameters. Den zweiten Parameter kann man mit ParamStr (2) auslesen...usw.
Bemerkung von Klabautermann:
Mit der Funktion
ParamCount kann man übrigens auslesen wieviele Parameter dem Programm übergeben wurden. Ein besonderer Parameter ist
ParamStr (0). Dieser ist immer vorhanden und enthält Pfad und namen der EXE. Also z.B. C:\Programme\Test.EXE
Bemerkung von Alfons-G:
Die sehr häufige Aufgabe, den Pfad der Anwendung herauszufinden, um z.B. auf INI- und Hilfedateien zuzugreifen, erledigt man mit einer Zeile:
Quelltext
1:
| strPfad := ExtractFilePath (ParamStr(0)); |
Bemerkung von Popov:
Beachte aber bitte, daß ein Leerzeichen bei Parametern als Trennzeichen angesehen wird. Dem folgt dann (zumindest glaubt es das Programm) der nächste Parameter. Wenn du also ein Parameter wie diesen hast:
c:\program files\meine programme\test.exe
dann solltest du das in Anführungszeichen setzen. Dein Programm würde das sonst als drei Parameter ansehen.
"c:\program files\meine programme\test.exe"
Das Programm sieht das dann als ein Parameter an.
Bemerkung von MathiasSimmack:
Wenn du dein Programm aber z.B. in die Registry einträgst (dass es meinetwegen im Kontextmenü eines Dateityps erscheinen soll), dann solltest du dafür sorgen, dass der Eintrag für den Parameter von Anführungszeichen umschlossen ist. Am besten auch der des Programms, weil der User es ja in einen Ordner mit Leerzeichen kopieren könnte:
Quelltext
1:
| Reg.WriteString('IchSelbst','"' + paramstr(0) + '" "%1"'); |
Die Auswertung solcher (über-)langen Parameter übernimmt dann die kompilierte Exe, ohne dass du selbst eine Zeile dafür schreiben müsstest.
Moderiert von
jasocul: Beitrag geprüft am 05.05.2006