Sign in Join
Wiki copytemporary

Command line parameters and environment variables/fi: what changed

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

OldNewLine
1-## Contents
2-
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
11-
121## Yleistä
132
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-```
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:
184
5+` fpc -Fudirectory -gh unit1.pas`
6+
197## Komentoriviparametrit
208
219### Perustiedot
2210
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-```
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
2514program Project1;
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.
36-```
3715
38-Esimerkiksi:
39-```
40-$ /tmp/project1 -a
41- Program: /tmp/project1
42- Param 1: -a
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.
4325```
4426
45-### Käyttäjäystävällisyys
27+Esimerkiksi:
4628
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.
29+` $ /tmp/project1 -a`\
30+` Program: /tmp/project1`\
31+` Param 1: -a`
4832
49-Jokainen LCL sovellus käyttää tätä automaattisesti. Sovelluksen luokkana on TCustomApplication.
33+### Käyttäjäystävällisyys
5034
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.
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.
5236
53-
37+Jokainen LCL sovellus käyttää tätä automaattisesti. Sovelluksen luokkana on TCustomApplication.
5438
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.
40+
5541#### Tarkista parameterit
5642
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-```
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` .
44+
45+``` pascal
5946if HasOption('h', 'help') then begin
60- WriteHelp;
61- Halt;
62- end;
47+ WriteHelp;
48+ Halt;
49+end;
6350```
6451
65-Huomaa: LCL:n käytössä täytyy liittää alkuun `Application.` HasOption lauseen eteen. Esimerkiksi:
66-```
52+Huomaa: LCL:n käytössä täytyy liittää alkuun `Application.` HasOption lauseen eteen. Esimerkiksi:
53+
54+``` pascal
6755if Application.HasOption('h', 'help') then begin
68- WriteHelp;
69- Halt;
70- end;
56+ WriteHelp;
57+ Halt;
58+end;
7159```
7260
73-
61+``` pascal
62+// Jos halutaan tukea ainoastaan lyhyttä tapaa :
63+if HasOption('h', '') then ...
7464
75-```
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 ...
65+//Jos halutaan tukea ainoastaan pitkää tapaa :
66+if HasOption('help') then ...
8167```
8268
8369#### Luetaan parameterin arvo
8470
85-Kullekin parametrille voidaan antaa arvo. Esimerkiksi:
86-```
87-project1 -f filename
88-```
71+Kullekin parametrille voidaan antaa arvo. Esimerkiksi:
8972
90-tai pidemmällä muodolla:
91-```
92-project1 --file=filename
93-```
94-```
73+` project1 -f filename`
74+
75+tai pidemmällä muodolla:
76+
77+` project1 --file=filename`
78+
79+``` pascal
9580WriteLn('f=', GetOptionValue('f', 'file'));
9681```
9782
98-Huomaa: jos saat virheilmoituksen _Option at position 1 needs an argument : f._ niin unohdettiin lisätä kutsu _CheckOptions_ .
83+Huomaa: jos saat virheilmoituksen *Option at position 1 needs an argument : f.* niin unohdettiin lisätä kutsu *CheckOptions* .
9984
10085#### Tarkistetaan parametrien oikeellisuus
10186
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.
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.
10388
104-Esimerkki:
105-```
89+Esimerkki:
90+
91+``` pascal
10692ErrorMsg := CheckOptions('hf:', 'help file:');
10793```
10894
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.
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.
11096
11197## Ympäristömuuttujat
11298
113-Kolme perustoimintoa ympäristömuuttujien kanssa työskentelyyn ovat: [GetEnvironmentVariable](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariable.html>)
99+Kolme perustoimintoa ympäristömuuttujien kanssa työskentelyyn ovat: [GetEnvironmentVariable](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariable.html)
114100
115-[GetEnvironmentString](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentstring.html>)
101+[GetEnvironmentString](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentstring.html)
116102
117-[GetEnvironmentVariableCount](<http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariablecount.html>)
103+[GetEnvironmentVariableCount](http://www.freepascal.org/docs-html/rtl/sysutils/getenvironmentvariablecount.html)
118104
119-
120-Esimerkki:
121-```
105+Esimerkki:
106+
107+``` pascal
122108var
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.
131-```
109+ I: Integer;
110+begin
111+ WriteLn('PATH = ' + GetEnvironmentVariable('PATH'));
132112
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 "=".
113+ WriteLn('All environment variables:');
114+ for I := 0 to GetEnvironmentVariableCount - 1 do
115+ WriteLn(GetEnvironmentString(I));
116+end.
134117```
118+
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
135122var
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.
154-```
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));
155131
156-Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon.
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.
157141```
142+
143+Myös TApplication luokalla on metodi jolla saadaan kaikki ympäristömuuttujat kerralla TStrings list olioon.
144+
145+``` pascal
158146var
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;
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;
169157```
170158
171159---
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).*
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).*

Back to history