FindCmdLineSwitch

BorysR
FindCmdLineSwitch
Moduł: SysUtils
```delphi function FindCmdLineSwitch(const Switch: string; const Chars: TSysCharSet; IgnoreCase: Boolean): Boolean;

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ż:

0 komentarzy