Sign in Join
Wiki copytemporary

Revision 2 of 4, by WikiArchive on 11-4-2026. The page as it is now.

Command line parameters and environment variables/fi

Contents

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:

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

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

pascal
project1 -f filename

tai pidemmällä muodolla:

pascal
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 the Internet Archive kept it on 2022-10-04. 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.