Entwickler-Ecke

Sonstiges - ...die übergebenen Parameter auslesen?


Chatfix - Mo 24.06.02 18:49
Titel: ...die übergebenen Parameter auslesen?
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 user profile iconjasocul: Beitrag geprüft am 05.05.2006