Sign in Join
Wiki copytemporary

Format function/fi: what changed

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

OldNewLine
11Muotoilu [[Function/fi|funktio]] **format** muodostaa arvoja [[String/fi|merkkijonoksi]]. Format funktio löytyy käännösyksiköstä *[[SysUtils unit|SysUtils]]*. Katso [`sysutils.format`](https://www.freepascal.org/docs-html/rtl/sysutils/format.html) on line -dokumentaatiosta perusteellinen selitys.
22
33## Syntaksi
44
55Format on ylikuormitettu kahdella tavalla:
66
77``` pascal
88function Format( const Fmt: String; const Args: array of Const) : String;
99function Format( const Fmt: String; const Args: array of Const; const FormatSettings: TFormatSettings) : String;
1010```
1111
1212Fmt-merkkijono-argumentti sisältää *formaatin määrittelijöitä* tai *paikkamerkkejä* (esim. %d), jotka vastaavat ja korvataan tulos merkkijonossa Args-taulukon arvoilla. [[Const|array of const]] voi olla vaihtelevia määriä eri tyyppisiä arvoja, ja sovellustyyppejä varten käytettävät tyypit ovat [[Real/fi|Real]], [[Integer/fi|Integer]], [[Pointer/fi|Pointer]] ja [[String/fi|String]]-tyyppejä. [[TFormatSettings]] on [[Record/fi|tietue]], joka sisältää numeron, ajan, päivämäärän ja valuutan arvojen haluttuun muotoiluun liittyviä tietoja.
1313
1414Kunkin tietyn muotoilun määrittelijän muotoilusääntö on:
1515
16-`% [ArgumentIndex] ['-'] [width] [. precision] ArgumentType`
16+```text
17+% [ArgumentIndex] ['-'] [width] [. precision] ArgumentType
18+```
1719
1820| | |
1921|-----|-------------------|
2022| d | Decimal (integer) |
2123| e | Scientific |
2224| f | Fixed |
2325| g | General |
2426| m | Money |
2527| n | Number (floating) |
2628| p | Pointer |
2729| s | String |
2830| u | Unsigned decimal |
2931| x | Heksadesimaali |
3032
3133### Kokonaisluvun muotoilu
3234
3335| | |
3436|----|----|
3537|   %d | Tulostaa kokonaisluvun sellaisenaan. |
3638|   %8d | Tulostaa kokonaisluvun sellaisenaan. Jos numeroiden lukumäärä on pienempi kuin 8 niin luku on vasemmassa reunassa . |
3739|   %-8d | Tulostaa kokonaisluvun sellaisenaan. Jos numeroiden lukumäärä on pienempi kuin 8 niin luku on oikeassa reunassa (vie 8 merkkiä tilaa). |
3840|   %.8d | Tulostaa kokonaisluvun sellaisenaan. Jos numeroiden lukumäärä on pienempi kuin 8 niin luvun edessä on etunollat. |
3941
4042### Merkkijonon muotoilu
4143
4244| | |
4345|----|----|
4446|   %s | Tulostaa merkkijonon sellaisenaan. |
4547|   %8s | Tulostaa merkkijonon sellaisenaan. Jos merkkijonossa on vähemmän kuin 8 merkkiä, tuloste on siirretty oikealle. (right-justified). |
4648|   %-8s | Tulostaa merkkijonon sellaisenaan. Jos merkkijonossa on vähemmän kuin 8 merkkiä, tuloste on vasemmassa reunassa ja loput ovat välilyöntejä (left-justified). |
4749
4850## Esimerkki käytöstä
4951
5052``` pascal
5153procedure TForm1.Button1Click(Sender: TObject);
5254var
5355 title, title2,
5456 underline,
5557 line, row1, row2, row3,
5658 fmt : string;
5759 i : integer;
5860begin
5961 fmt := '%-12s';
6062 title := format(fmt,['Column 1']) + format(fmt,['Column 2']) ;
6163 for i := 1 to 12 do underline := underline + '-';
6264 underline := underline + underline ;
6365 fmt := '%-12d';
6466 line := format(fmt,[15]) + format(fmt,[8]) ;
6567 fmt := '%12s';
6668 title2 := format(fmt,['Column 1']) + format(fmt,['Column 2']) ;
6769 fmt := '%12d';
6870 row1 := format(fmt,[15]) + format(fmt,[8]) ;
6971 row2 := format(fmt,[1005]) + format(fmt,[809]) ;
7072 fmt := '%12.5d';
7173 row3 := format(fmt,[1005]) + format(fmt,[809]) ;
7274 Memo1.Lines.Add( title );
7375 Memo1.Lines.Add( underline );
7476 Memo1.Lines.Add( line );
7577 Memo1.Lines.Add( '' );
7678 Memo1.Lines.Add( title2 );
7779 Memo1.Lines.Add( underline );
7880 Memo1.Lines.Add( row1 );
7981 Memo1.Lines.Add( row2 );
8082 Memo1.Lines.Add( row3 );
8183end;
8284```
8385
8486Edellä olevat lausekkeet luovat joukon merkkijonoja, jotka näyttävät:
8587
86-`Column 1    Column 2    `\
87-`------------------------`\
88-`15          8           `
88+```text
89+Column 1 Column 2
90+------------------------
91+15 8
92+```
8993
90-`    Column 1    Column 2`\
91-`------------------------`\
92-`          15           8`\
93-`        1005         809`\
94-`       01005       00809`
94+```text
95+ Column 1 Column 2
96+------------------------
97+ 15 8
98+ 1005 809
99+ 01005 00809
100+```
95101
96102## Katso myös
97103
98104- [[doc:rtl/sysutils/format.html|Format]]
99105- [[doc:rtl/sysutils/floattostrf.html|FloatToStrF]]
100106- [[doc:rtl/sysutils/formatfloat.html|FormatFloat]]
101107- [[doc:rtl/sysutils/inttohex.html|IntToHex]] - Muuntaa kokonaisluvun [[Hexadecimal/fi|heksadesimaaliluvuksi]].
102108
103109---
104110*From the Free Pascal wiki, page "Format function/fi", as it stood on 2022-08-06 after a change by Kai Burghardt, 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