Sign in Join
Wiki copytemporary

Command line parameters and environment variables/fi: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-## Yleistä
1+## Contents
22
3-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:
3+ * 1 Yleistä
4+ * 2 Komentoriviparametrit
5+ * 2.1 Perustiedot
6+ * 2.2 Käyttäjäystävällisyys
7+ * 2.2.1 Tarkista parameterit
8+ * 2.2.2 Luetaan parameterin arvo
9+ * 2.2.3 Tarkistetaan parametrien oikeellisuus
10+ * 3 Ympäristömuuttujat
411
5-` fpc -Fudirectory -gh unit1.pas`
12+## Yleistä
613
14+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:
15+```
16+fpc -Fudirectory -gh unit1.pas
17+```
18+
719## Komentoriviparametrit
820
921### Perustiedot
1022
11-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ä.
12-
13-``` pascal
23+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ä.
24+```
1425program Project1;
15-
16-{$mode objfpc}{$H+}
17-
18-var
19- I: Integer;
20-begin
21- WriteLn('Program: ', ParamStr(0));
22- for I := 1 to ParamCount do
23- WriteLn('Param ', I, ': ', ParamStr(I));
24-end.
26+
27+ {$mode objfpc}{$H+}
28+
29+ var
30+ I: Integer;
31+ begin
32+ WriteLn('Program: ', ParamStr(0));
33+ for I := 1 to ParamCount do
34+ WriteLn('Param ', I, ': ', ParamStr(I));
35+ end.
2536```
2637
27-Esimerkiksi:
28-
29-` $ /tmp/project1 -a`\
30-` Program: /tmp/project1`\
31-` Param 1: -a`
38+Esimerkiksi:
39+```
40+$ /tmp/project1 -a
41+ Program: /tmp/project1
42+ Param 1: -a
43+```
3244
3345### Käyttäjäystävällisyys
3446
35-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.
47+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.
3648
37-Jokainen LCL sovellus käyttää tätä automaattisesti. Sovelluksen luokkana on TCustomApplication.
49+Jokainen LCL sovellus käyttää tätä automaattisesti. Sovelluksen luokkana on TCustomApplication.
3850
39-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.
51+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.
4052
41-#### Tarkista parameterit
53+
4254
43-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` .
55+#### Tarkista parameterit
4456
45-``` pascal
57+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` .
58+```
4659if HasOption('h', 'help') then begin
47- WriteHelp;
48- Halt;
49-end;
60+ WriteHelp;
61+ Halt;
62+ end;
5063```
5164
52-Huomaa: LCL:n käytössä täytyy liittää alkuun `Application.` HasOption lauseen eteen. Esimerkiksi:
53-
54-``` pascal
65+Huomaa: LCL:n käytössä täytyy liittää alkuun `Application.` HasOption lauseen eteen. Esimerkiksi:
66+```
5567if Application.HasOption('h', 'help') then begin
56- WriteHelp;
57- Halt;
58-end;
68+ WriteHelp;
69+ Halt;
70+ end;
5971```
6072
61-``` pascal
62-// Jos halutaan tukea ainoastaan lyhyttä tapaa :
63-if HasOption('h', '') then ...
73+
6474
65-//Jos halutaan tukea ainoastaan pitkää tapaa :
66-if HasOption('help') then ...
6775```
76+// Jos halutaan tukea ainoastaan lyhyttä tapaa :
77+ if HasOption('h', '') then ...
78+
79+ //Jos halutaan tukea ainoastaan pitkää tapaa :
80+ if HasOption('help') then ...
81+```
6882
6983#### Luetaan parameterin arvo
7084
71-Kullekin parametrille voidaan antaa arvo. Esimerkiksi:
72-
73-` project1 -f filename`
74-
75-tai pidemmällä muodolla:
76-
77-` project1 --file=filename`
85+Kullekin parametrille voidaan antaa arvo. Esimerkiksi:
86+```
87+project1 -f filename
88+```
7889
79-``` pascal
90+tai pidemmällä muodolla:
91+```
92+project1 --file=filename
93+```
94+```
8095WriteLn('f=', GetOptionValue('f', 'file'));
8196```
8297
83-Huomaa: jos saat virheilmoituksen *Option at position 1 needs an argument : f.* niin unohdettiin lisätä kutsu *CheckOptions* .
98+Huomaa: jos saat virheilmoituksen _Option at position 1 needs an argument : f._ niin unohdettiin lisätä kutsu _CheckOptions_ .
8499
85100#### Tarkistetaan parametrien oikeellisuus
86101
87-Komentoriviparametrit ovat vapaasti kirjoitettua tekstiä, jolloin käyttäjä voi helposti kirjoittaa virheitä. Parametrien syntaksin tarkistaminen on pakollista. Tähän voidaan käyttää [[doc:fcl/custapp/tcustomapplication.checkoptions.html|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.
88-
89-Esimerkki:
102+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](<http://lazarus-ccr.sourceforge.net/docs/fcl/custapp/tcustomapplication.checkoptions.html> "doc:fcl/custapp/tcustomapplication.checkoptions.html") 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.
90103
91-``` pascal
104+Esimerkki:
105+```
92106ErrorMsg := CheckOptions('hf:', 'help file:');
93107```
94108
95-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.
109+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.
96110
97111## Ympäristömuuttujat
98112
99-Kolme perustoimintoa ympäristömuuttujien kanssa työskentelyyn ovat: [GetEnvironmentVariable](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariable.html)
100-
101-[GetEnvironmentString](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentstring.html)
113+Kolme perustoimintoa ympäristömuuttujien kanssa työskentelyyn ovat: [GetEnvironmentVariable](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariable.html>)
102114
103-[GetEnvironmentVariableCount](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariablecount.html)
115+[GetEnvironmentString](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentstring.html>)
104116
105-Esimerkki:
117+[GetEnvironmentVariableCount](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariablecount.html>)
106118
107-``` pascal
119+
120+Esimerkki:
121+```
108122var
109- I: Integer;
110-begin
111- WriteLn('PATH = ' + GetEnvironmentVariable('PATH'));
112-
113- WriteLn('All environment variables:');
114- for I := 0 to GetEnvironmentVariableCount - 1 do
115- WriteLn(GetEnvironmentString(I));
116-end.
123+ I: Integer;
124+ begin
125+ WriteLn('PATH = ' + GetEnvironmentVariable('PATH'));
126+
127+ WriteLn('All environment variables:');
128+ for I := 0 to GetEnvironmentVariableCount - 1 do
129+ WriteLn(GetEnvironmentString(I));
130+ end.
117131```
118132
119-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 "=".
120-
121-``` pascal
133+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 "=".
134+```
122135var
123- I: Integer;
124- EnvVars: TStringList;
125-begin
126- EnvVars := TStringList.Create;
127- try
128- // Lataa kaikki ympäristömuuttujat string list :n
129- for I := 0 to GetEnvironmentVariableCount - 1 do
130- EnvVars.Add(GetEnvironmentString(I));
131-
132- WriteLn('PATH = ' + EnvVars.Values['PATH']);
133-
134- WriteLn('All environment variables:');
135- for I := 0 to EnvVars.Count - 1 do
136- WriteLn(EnvVars.Names[I] + ' = ' + EnvVars.ValueFromIndex[I]);
137- finally
138- EnvVars.Free;
139- end;
140-end.
136+ I: Integer;
137+ EnvVars: TStringList;
138+ begin
139+ EnvVars := TStringList.Create;
140+ try
141+ // Lataa kaikki ympäristömuuttujat string list :n
142+ for I := 0 to GetEnvironmentVariableCount - 1 do
143+ EnvVars.Add(GetEnvironmentString(I));
144+
145+ WriteLn('PATH = ' + EnvVars.Values['PATH']);
146+
147+ WriteLn('All environment variables:');
148+ for I := 0 to EnvVars.Count - 1 do
149+ WriteLn(EnvVars.Names[I] + ' = ' + EnvVars.ValueFromIndex[I]);
150+ finally
151+ EnvVars.Free;
152+ end;
153+ end.
141154```
142155
143-Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon.
144-
145-``` pascal
156+Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon.
157+```
146158var
147- EnvVars: TStringList;
148-begin
149- EnvVars := TStringList.Create;
150- try
151- Application.GetEnvironmentList(EnvVars);
152- ...
153- finally
154- EnvVars.Free;
155- end;
156-end;
159+ EnvVars: TStringList;
160+ begin
161+ EnvVars := TStringList.Create;
162+ try
163+ Application.GetEnvironmentList(EnvVars);
164+ ...
165+ finally
166+ EnvVars.Free;
167+ end;
168+ end;
157169```
158170
159171---
160-*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](/wiki-contact).*
172+*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](/wiki-contact).*

Back to history