Sign in Join
Wiki copytemporary

Command line parameters and environment variables/fi

English · Español · Français · Suomi · Русский · 中文(中国)

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ä.

pascal
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 .

pascal
if HasOption('h', 'help') then begin
  WriteHelp;
  Halt;
end;

Huomaa: LCL:n käytössä täytyy liittää alkuun Application. HasOption lauseen eteen. Esimerkiksi:

pascal
if Application.HasOption('h', 'help') then begin
  WriteHelp;
  Halt;
end;
pascal
// 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

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

pascal
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

GetEnvironmentString

GetEnvironmentVariableCount

Esimerkki:

pascal
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 "=".

pascal
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.

pascal
var
  EnvVars: TStringList;
begin
  EnvVars := TStringList.Create;
  try
    Application.GetEnvironmentList(EnvVars);
    ...
  finally 
    EnvVars.Free;
  end;
end;

From the Free Pascal wiki, page "Command line parameters and environment variables/fi", as it stood on 2020-02-11 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.