Programowanie w języku Delphi

FindCmdLineSwitch

  • 2010-10-31 18:27
  • 0 komentarzy
  • 1194 odsłony
  • Oceń ten tekst jako pierwszy
FindCmdLineSwitch
Moduł: SysUtils

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); }


Funkcja FindCmdLineSwitch określa, czy ciąg znaków Switch został przekazany, jako argument wiersza polecenia do aplikacji.

Zastosowanie
Funkcję stosujemy, gdy chcemy sprawdzić czy program został uruchomiony z określonym parametrem, niezależnie od jego indeksu (pozycji na liście parametrów).

Zwracana wartość
Jeśli parametr Chars zostanie znaleziony, funkcja zwraca wartość True, w przeciwnym wypadku zwraca wartość False.

Chars
Zmienna Chars może zawierać zbiór kolekcji elementów AnsiChar. Chars 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.

Przykład definiowania własnych przełączników:
// 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ż: