Difference between revisions of "Command line parameters and environment variables/fi"
(Created page with "{{Command line parameters and environment variables}} == Yleistä == Kun ohjelma käynnistetään käyttäjä voi antaa komentoriviparametrejä ja asettaa ympäristömuuttuj...") |
m (Fixed syntax highlighting) |
||
Line 13: | Line 13: | ||
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ä. | 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ä. | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
program Project1; | program Project1; | ||
Line 46: | Line 46: | ||
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 <code> -h </code> . Parametri <code> -h </code> on parametrin <code> --help</code> lyhyempi vaihtoehto. Voit testata, mitä tapahtuu kun ohjelma käynnistetään parametrillä <code> -h </code> tai <code> --help</code> . | 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 <code> -h </code> . Parametri <code> -h </code> on parametrin <code> --help</code> lyhyempi vaihtoehto. Voit testata, mitä tapahtuu kun ohjelma käynnistetään parametrillä <code> -h </code> tai <code> --help</code> . | ||
− | <syntaxhighlight>if HasOption('h', 'help') then begin | + | <syntaxhighlight lang=pascal> |
+ | if HasOption('h', 'help') then begin | ||
WriteHelp; | WriteHelp; | ||
Halt; | Halt; | ||
Line 52: | Line 53: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Huomaa: LCL:n käytössä täytyy liittää alkuun <code>Application.</code> HasOption lauseen eteen. Esimerkiksi: | Huomaa: LCL:n käytössä täytyy liittää alkuun <code>Application.</code> HasOption lauseen eteen. Esimerkiksi: | ||
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
if Application.HasOption('h', 'help') then begin | if Application.HasOption('h', 'help') then begin | ||
WriteHelp; | WriteHelp; | ||
Line 60: | Line 62: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
// Jos halutaan tukea ainoastaan lyhyttä tapaa : | // Jos halutaan tukea ainoastaan lyhyttä tapaa : | ||
if HasOption('h', '') then ... | if HasOption('h', '') then ... | ||
Line 75: | Line 77: | ||
project1 --file=filename | project1 --file=filename | ||
− | <syntaxhighlight>WriteLn('f=', GetOptionValue('f', 'file'));</syntaxhighlight> | + | <syntaxhighlight lang=pascal>WriteLn('f=', GetOptionValue('f', 'file'));</syntaxhighlight> |
Huomaa: jos saat virheilmoituksen ''Option at position 1 needs an argument : f.'' niin unohdettiin lisätä kutsu ''CheckOptions'' . | Huomaa: jos saat virheilmoituksen ''Option at position 1 needs an argument : f.'' niin unohdettiin lisätä kutsu ''CheckOptions'' . | ||
Line 84: | Line 86: | ||
Esimerkki: | Esimerkki: | ||
− | <syntaxhighlight>ErrorMsg := CheckOptions('hf:', 'help file:');</syntaxhighlight> | + | <syntaxhighlight lang=pascal>ErrorMsg := CheckOptions('hf:', 'help file:');</syntaxhighlight> |
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. | 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. | ||
Line 100: | Line 102: | ||
Esimerkki: | Esimerkki: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
I: Integer; | I: Integer; | ||
Line 114: | Line 116: | ||
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 "=". | 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 "=". | ||
− | <syntaxhighlight>var | + | <syntaxhighlight lang=pascal>var |
I: Integer; | I: Integer; | ||
EnvVars: TStringList; | EnvVars: TStringList; | ||
Line 135: | Line 137: | ||
Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon. | Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon. | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
EnvVars: TStringList; | EnvVars: TStringList; |
Latest revision as of 07:05, 11 February 2020
│
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;