FindCmdLineSwitch
BorysR
function FindCmdLineSwitch(const Switch: string): Boolean;
{ Result := FindCmdLineSwitch(Switch, SwitchChars, True); }
function FindCmdLineSwitch(const Switch: string; IgnoreCase: Boolean): Boolean;
{ Result := FindCmdLineSwitch(Switch, SwitchChars, IgnoreCase); }
function FindCmdLineSwitch(const Switch: string; var Value: string; IgnoreCase: Boolean = True; const SwitchTypes: TCmdLineSwitchTypes = [clstValueNextParam, clstValueAppended]): Boolean;
{ var pValue: string;
Result := FindCmdLineSwitch(Switc, pValue, IgnoreCase, SwitchTypes);}
[[Delphi/Procedury_i_funkcje|Funkcja]] FindCmdLineSwitch określa, czy ciąg znaków <var>Switch</var> został przekazany, jako argument wiersza polecenia do aplikacji.
<b>Zastosowanie</b>
[[Delphi/Procedury_i_funkcje|Funkcję]] stosujemy, gdy chcemy sprawdzić czy program został uruchomiony z określonym parametrem, niezależnie od jego indeksu (pozycji na liście parametrów).
<b>Zwracana wartość</b>
Jeśli parametr <var>Chars</var> zostanie znaleziony, funkcja zwraca wartość [[Delphi/Boolean|True]], w przeciwnym wypadku zwraca wartość [[Delphi/Boolean|False]].
<b>Chars</b>
[[Delphi/zmienne|Zmienna]] <var>Chars</var> może zawierać [[Delphi/Zbiory|zbiór]] kolekcji elementów [[Delphi/AnsiChar|AnsiChar]]. <var>Chars</var> jest zestawem przełączników wyróżniających kolejne argumenty (parametry) programu. Jeśli parametr zostanie pominięty, to zastosowane zostaną domyślnie "/" i "-" w systemie Windows i "-" na Linuksie.
<b>Value</b>
[[Delphi/zmienne|Zmienna]] <var>Chars</var> zwraca wartość parametru gdy np przekazany zostanie parametr z dwukropkiem np: aplikacja.exe NumerPortu:4000, to używając SwitchTypes = clstValueAppended w parametrze Value otrzymamy wartość 4000
<b>SwitchTypes </b>
Determinuje sposób parsowania parametru Value
* **clstValueNextParam**: -p Value
* **clstValueAppended**: -p Value or -p:Value
Przykład definiowania własnych przełączników:
```delphi
// własne przełączniki dla argumentów programu
var
SysCharSet: TSysCharSet;
begin
SysCharSet := ['/', '-', '*'];
end;
IgnoreCase
Zmienna IgnoreCase decyduje o tym, czy wielkości znaków będą brane pod uwagę przy porównywaniu. Jeśli parametr zostanie pominięty, to zastosowane zostaną domyślnie dane: True w systemie Windows, False na Linuksie.
Przykład:
// sprawdzamy czy program został uruchomiony z parametrem XYZ
program FooBar;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
SysCharSet: TSysCharSet;
begin
// Pierwszy test:
// ----------------------------------------------------------------
// - wielkość liter bez znaczenia (IgnoreCase nieustawione),
// - separatory parametrów domyślne: '/' i '-' (Chars nieustawione)
if FindCmdLineSwitch('XYZ') then
Writeln('Test1: Znaleziono parametr XYZ')
else
Writeln('Test1: Nie znaleziono parametru XYZ');
// Drugi test:
// ----------------------------------------------------------------
// - wielkość liter bez znaczenia (IgnoreCase = True),
// - separatory parametrów: '/' i '-' (domyślne w Windows) oraz '*'
// dodajemy kolejny separator parametrów: '*'
SysCharSet := ['/', '-', '*'];
if FindCmdLineSwitch('XYZ', SysCharSet, True) then
Writeln('Test2: Znaleziono parametr XYZ')
else
Writeln('Test2: Nie znaleziono parametru XYZ');
// Trzeci test:
// ----------------------------------------------------------------
// - wielkość liter MA znaczenie: IgnoreCase = False,
// - separatory parametrów domyślne: '/' i '-' (Chars nieustawione)
if FindCmdLineSwitch('XYZ', False) then
Writeln('Test3: Znaleziono parametr XYZ')
else
Writeln('Test3: Nie znaleziono parametru XYZ');
end.
// Wynik działania programu:
// P:\>FooBar.exe
// Test1: Nie znaleziono parametru XYZ
// Test2: Nie znaleziono parametru XYZ
// Test3: Nie znaleziono parametru XYZ
//
// P:\>FooBar.exe XYZ
// Test1: Nie znaleziono parametru XYZ
// Test2: Nie znaleziono parametru XYZ
// Test3: Nie znaleziono parametru XYZ
//
// P:\>FooBar.exe /XYZ
// Test1: Znaleziono parametr XYZ
// Test2: Znaleziono parametr XYZ
// Test3: Znaleziono parametr XYZ
//
// P:\>FooBar.exe /PARAMETR1 /parametr2 /XYZ
// Test1: Znaleziono parametr XYZ
// Test2: Znaleziono parametr XYZ
// Test3: Znaleziono parametr XYZ
//
// P:\>FooBar.exe *XYZ
// Test1: Nie znaleziono parametru XYZ
// Test2: Znaleziono parametr XYZ
// Test3: Nie znaleziono parametru XYZ
//
// P:\>FooBar.exe /Xyz
// Test1: Znaleziono parametr XYZ
// Test2: Znaleziono parametr XYZ
// Test3: Nie znaleziono parametru XYZ
Zobacz też: