Command line parameters and environment variables/fi
│
English (en) │
español (es) │
suomi (fi) │
français (fr) │
русский (ru) │
Yleistä
Kun ohjelma käynnistetään käyttäjä voi antaa komentoriviparametrejä ja asettaa ympäristömuuttujat. Esimerkiksi Free Pascal kääntäjä saa suurimman osan parametreistä komentorivin kautta:
fpc -Fudirectory -gh unit1.pas
Komentoriviparametrit
Perustiedot
Pascal ohjelmaa voi käyttää ParamStr ja ParamCount parametrien kautta. ParamStr (0) kertoo itse ohjelman nimen (ja polun _jos_ käyttöjärjestelmä tukee sitä). ParamStr (1) on ensimmäinen parametri. ParamCount on parametrien määrä.
program Project1;
{$mode objfpc}{$H+}
var
I: Integer;
begin
WriteLn('Program: ', ParamStr(0));
for I := 1 to ParamCount do
WriteLn('Param ', I, ': ', ParamStr(I));
end.
Esimerkiksi:
$ /tmp/project1 -a Program: /tmp/project1 Param 1: -a
Käyttäjäystävällisyys
Hyvän ohjelman pitäisi antaa ohjeviestin, kun tarjotaan vääriä parametrejä ja sen pitäisi noudattaa yhteistä tapaa käyttää parametreja. FPC:n mukana tuleva käännösyksikkö unit custapp sisältää TCustomApplication luokan, joka tarjoaa toiminnot tarkistaa ja lukea parametrit helposti. Tietenkin voidaan käyttää parametreja suoraan: ParamStr ja ParamCount avulla.
Jokainen LCL sovellus käyttää tätä automaattisesti. Sovelluksen luokkana on TCustomApplication.
Jos haluat kirjoittaa "ei LCL"- ohjelman, niin luo Lazaruksessa uusi projekti tyyppiä 'komentorivisovellus (Console Application)'. Tämä luo tiedoston project1.lpr jossa on joitakin mukavia "herkkuja", joita lähes kaikki ohjelmat tarvitsevat. Siirry doRun metodiin.
Tarkista parameterit
TCustomApplication luokassa voit käyttää parametreja nimen mukaan. Esimerkiksi ohjelma jonka pitäisi tulostaa ohjeteksti kun käyttäjä antaa yleisesti käytössä olevan ohje parametrin -h
. Parametri -h
on parametrin --help
lyhyempi vaihtoehto. Voit testata, mitä tapahtuu kun ohjelma käynnistetään parametrillä -h
tai --help
.
if HasOption('h', 'help') then begin
WriteHelp;
Halt;
end;
Huomaa: LCL:n käytössä täytyy liittää alkuun Application.
HasOption lauseen eteen. Esimerkiksi:
if Application.HasOption('h', 'help') then begin
WriteHelp;
Halt;
end;
// Jos halutaan tukea ainoastaan lyhyttä tapaa :
if HasOption('h', '') then ...
//Jos halutaan tukea ainoastaan pitkää tapaa :
if HasOption('help') then ...
Luetaan parameterin arvo
Kullekin parametrille voidaan antaa arvo. Esimerkiksi:
project1 -f filename
tai pidemmällä muodolla:
project1 --file=filename
WriteLn('f=', GetOptionValue('f', 'file'));
Huomaa: jos saat virheilmoituksen Option at position 1 needs an argument : f. niin unohdettiin lisätä kutsu CheckOptions .
Tarkistetaan parametrien oikeellisuus
Komentoriviparametrit ovat vapaasti kirjoitettua tekstiä, jolloin käyttäjä voi helposti kirjoittaa virheitä. Parametrien syntaksin tarkistaminen on pakollista. Tähän voidaan käyttää CheckOptions menetelmää : Voidaan määritellä, mitkä parametrit ovat sallittuja, mitkä niistä tarvitsevat parametrin ja syntaksivirheen tapauksessa saatavan virheilmoituksen ja vaihtoehdot, jotka tulostetaan hyödyllisinä ja yksityiskohtaiset virheet.
Esimerkki:
ErrorMsg := CheckOptions('hf:', 'help file:');
Tämä sallii lyhyet optiot -f value ja -h. Se tukee pitkiä vaihtoehtoja --help or --file= tiedostonimi. Se ei salli --help joilla on arvo, eikä --file ilman arvoa.
Ympäristömuuttujat
Kolme perustoimintoa ympäristömuuttujien kanssa työskentelyyn ovat: GetEnvironmentVariable
Esimerkki:
var
I: Integer;
begin
WriteLn('PATH = ' + GetEnvironmentVariable('PATH'));
WriteLn('All environment variables:');
for I := 0 to GetEnvironmentVariableCount - 1 do
WriteLn(GetEnvironmentString(I));
end.
On myös mahdollista ladata kaikki ympäristömuuttujat TStringList objektiin ja niihin päästään helposti käsiksi nimi-arvo-parina. String list automaattisesti tottelee merkki erotinta, joka on oletuksena merkki "=".
var
I: Integer;
EnvVars: TStringList;
begin
EnvVars := TStringList.Create;
try
// Lataa kaikki ympäristömuuttujat string list :n
for I := 0 to GetEnvironmentVariableCount - 1 do
EnvVars.Add(GetEnvironmentString(I));
WriteLn('PATH = ' + EnvVars.Values['PATH']);
WriteLn('All environment variables:');
for I := 0 to EnvVars.Count - 1 do
WriteLn(EnvVars.Names[I] + ' = ' + EnvVars.ValueFromIndex[I]);
finally
EnvVars.Free;
end;
end.
Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon.
var
EnvVars: TStringList;
begin
EnvVars := TStringList.Create;
try
Application.GetEnvironmentList(EnvVars);
...
finally
EnvVars.Free;
end;
end;