Czyli jeżeli uruchomię program w delphi "przykład.exe test". To jak w kodzie programu odczytać z jakim parametrem został uruchomiony program w tym przypadku jako tekst.
Najpierw sprawdź za pomocą ParamCount
czy faktycznie uruchomiono program z parametrami – jeśli tak, to wymieniona funkcja zwróci liczbę większą od 0
i możesz pobrać wartości parametrów w postaci ciągów znaków za pomocą funkcji ParamStr
. Pamiętaj, że parametry indeksowane są od 1
, bo ten pod indeksem 0
zawiera ścieżkę aplikacji.
Przykład:
var
ParamIndex: Integer;
begin
WriteLn('app path: "', ParamStr(0), '"');
WriteLn();
for ParamIndex := 1 to ParamCount() do
WriteLn('param ', ParamIndex, ': "', ParamStr(ParamIndex), '"');
end.
Program uruchomiony w ten sposób:
> project1.exe one two three "four five"
da na wyjściu to:
app path: "C:\DOCUME~1\FURIOU~1\USTAWI~1\Temp\project1.exe"
param 1: "one"
param 2: "two"
param 3: "three"
param 4: "four five"
Google albo forumowa szukajka nie gryzą :p
https://4programmers.net/Delphi/ParamStr - czy takie coś może być?
furious programming napisał(a):
Najpierw sprawdź za pomocą
ParamCount
czy faktycznie uruchomiono program z parametrami – jeśli tak, to wymieniona funkcja zwróci liczbę większą od0
i możesz pobrać wartości parametrów w postaci ciągów znaków za pomocą funkcjiParamStr
. Pamiętaj, że parametry indeksowane są od1
, bo ten pod indeksem0
zawiera ścieżkę aplikacji.
Na to też jest rozwiązanie na GitHubie :D
https://github.com/VSoftTechnologies/VSoft.CommandLineParser
@wloochacz: na wszystko można znaleźć rozwiązania w postaci bibliotek firm trzecich, co nie oznacza, że nie warto znać absolutnych podstaw języka. :P
furious programming napisał(a):
@wloochacz: na wszystko można znaleźć rozwiązania w postaci bibliotek firm trzecich,
Niestety, nie można.
co nie oznacza, że nie warto znać absolutnych podstaw języka. :P
Prawda, ale nieprawda że to podstawy języka...
Poza tym to co podałem, ogarnia inne problemy z ParamStr.
Daj spokój, nieważne czego to są podstawy – to w dalszym ciagu podstawy i tak jak każde podstawy, wypada je znać.
If ParamCount > 0 then
for i := 0 to ParamCount do
ShowMessage(ParamStr);