Subversion Repositories Kolibri OS

Rev

Rev 7209 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7209 Rev 7597
Line 1... Line 1...
1
Êîìïèëÿòîð ÿçûêà ïðîãðàììèðîâàíèÿ Oberon-07/11 äëÿ i386
1
Êîìïèëÿòîð ÿçûêà ïðîãðàììèðîâàíèÿ Oberon-07/16 äëÿ i486
2
		Windows/Linux/KolibriOS.
2
                Windows/Linux/KolibriOS.
3
------------------------------------------------------------------------------
3
------------------------------------------------------------------------------
Line 4... Line 4...
4
 
4
 
Line 5... Line -...
5
	Ñîñòàâ ïðîãðàììû
-
 
6
 
5
        Ïàðàìåòðû êîìàíäíîé ñòðîêè
7
1.	Compiler.kex (KolibriOS) - èñïîëíÿåìûé ôàéë êîìïèëÿòîðà.
6
 
8
	Âõîä - òåêñòîâûå ôàéëû ìîäóëåé ñ ðàñøèðåíèåì ".ob07", êîäèðîâêà ANSI
7
  Âõîä - òåêñòîâûå ôàéëû ìîäóëåé ñ ðàñøèðåíèåì ".ob07", êîäèðîâêà ANSI èëè
9
	èëè UTF-8 ñ BOM-ñèãíàòóðîé.
8
UTF-8 ñ BOM-ñèãíàòóðîé.
10
	Âûõîä - èñïîëíÿåìûé ôàéë ôîðìàòà PE, ELF èëè MENUET01/MS COFF.
9
  Âûõîä - èñïîíÿåìûé ôàéë ôîðìàòà PE32, ELF èëè MENUET01/MSCOFF.
-
 
10
  Ïàðàìåòðû:
11
	Ïàðàìåòðû:
11
  1) èìÿ ãëàâíîãî ìîäóëÿ
12
	1) èìÿ ãëàâíîãî ìîäóëÿ
12
  2) èìÿ ðåçóëüòèðóþùåãî ôàéëà
13
	2) òèï ïðèëîæåíèÿ è ïëàòôîðìà
13
  3) òèï ïðèëîæåíèÿ è ïëàòôîðìà
14
		"con" - Windows console
14
      "console" - Windows console
15
		"gui" - Windows GUI
-
 
16
		"dll" - Windows DLL
15
      "gui" - Windows GUI
17
		"elf" - Linux
16
      "dll" - Windows DLL
-
 
17
      "kos" - KolibriOS
18
		"kos" - KolibriOS
18
      "obj" - KolibriOS DLL
19
		"obj" - KolibriOS DLL
19
      "elfexe" - Linux ELF-EXEC
20
		"kem" - KolibriOS ñ àäðåñîì çàãðóçêè 0x10000 äëÿ âîçìîæíîãî
20
  4) íåîáÿçàòåëüíûå ïàðàìåòðû-êëþ÷è
-
 
21
      -stk  ðàçìåð ñòýêà â ìåãàáàéòàõ (ïî óìîë÷àíèþ 2 Ìá)
21
			èñïîëíåíèÿ â ýìóëÿòîðå
22
      -base 
àäðåñ çàãðóçêè èñïîëíÿåìîãî ôàéëà â êèëîáàéòàõ
-
 
23
      -ver  âåðñèÿ ïðîãðàììû (òîëüêî äëÿ obj)
22
	3) ðàçìåð ñòýêà â ìåãàáàéòàõ, íåîáÿçàòåëüíûé ïàðàìåòð, ïî óìîë÷àíèþ -
24
      -nochk <"ptibcwra"> îòêëþ÷èòü ïðîâåðêè ïðè âûïîëíåíèè (ñì. íèæå)
-
 
25
 
-
 
26
      ïàðàìåòð -nochk çàäàåòñÿ â âèäå ñòðîêè èç ñèìâîëîâ:
-
 
27
      "p" - óêàçàòåëè
-
 
28
      "t" - òèïû
-
 
29
      "i" - èíäåêñû
23
	1 Ìá, äëÿ ELF èãíîðèðóåòñÿ. Åñëè 2-é ïàðàìåòð = "obj" (KolibriOS DLL),
30
      "b" - íåÿâíîå ïðèâåäåíèå INTEGER ê BYTE
24
	òî 3-é ïàðàìåòð çàäàåòñÿ øåñòíàäöàòèðè÷íûì ÷èñëîì
31
      "c" - äèàïàçîí àðãóìåíòà ôóíêöèè CHR
-
 
32
      "w" - äèàïàçîí àðãóìåíòà ôóíêöèè WCHR
-
 
33
      "r" - ýêâèâàëåíòíî "bcw"
-
 
34
      "a" - âñå ïðîâåðêè
-
 
35
 
-
 
36
      Ïîðÿäîê ñèìâîëîâ ìîæåò áûòü ëþáûì. Íàëè÷èå â ñòðîêå òîãî èëè èíîãî
-
 
37
      ñèìâîëà îòêëþ÷àåò ñîîòâåòñòâóþùóþ ïðîâåðêó.
-
 
38
 
-
 
39
      Íàïðèìåð: -nochk it - îòêëþ÷èòü ïðîâåðêó èíäåêñîâ è îõðàíó òèïà.
25
	(0x00000001 .. 0xffffffff) è îïðåäåëÿåò âåðñèþ ïðîãðàììû,
40
      -nochk a - îòêëþ÷èòü âñå îòêëþ÷àåìûå ïðîâåðêè.
-
 
41
 
-
 
42
  Íàïðèìåð:
26
	ïî óìîë÷àíèþ - 0x00010000 (v1.0).
43
 
27
	Íàïðèìåð:
44
  Compiler.exe "C:\example.ob07" "C:\example.exe" console -stk 1
-
 
45
  Compiler.exe "C:\example.ob07" "C:\example.dll" dll
-
 
46
  Compiler.exe "C:\example.ob07" "C:\example.exe" gui -stk 4
-
 
47
  Compiler.exe "C:\example.ob07" "C:\example.exe" console -nochk pti
-
 
48
  Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.kex" kos -stk 2
-
 
49
  Compiler.kex "/tmp0/1/example.ob07" "/tmp0/1/example.obj" obj -ver 2.7
28
		"C:\oberon-07\example.ob07" con 1
50
  Compiler.exe "C:\example.ob07" "C:\example" elfexe
29
		"C:\oberon-07\example.ob07" obj 0x00020005 (* v2.5 *)
51
 
30
	 ñëó÷àå óñïåøíîé êîìïèëÿöèè, êîìïèëÿòîð ïåðåäàåò êîä çàâåðøåíèÿ 0,
-
 
31
	èíà÷å 1. Ïðè ðàáîòå êîìïèëÿòîðà â KolibriOS, êîä çàâåðøåíèÿ íå
-
 
32
	ïåðåäàåòñÿ. Ñîîáùåíèÿ êîìïèëÿòîðà âûâîäÿòñÿ íà êîíñîëü (Windows,
-
 
Line 33... Line 52...
33
	KolibriOS), â òåðìèíàë (Linux).
52
   ñëó÷àå óñïåøíîé êîìïèëÿöèè, êîìïèëÿòîð ïåðåäàåò êîä çàâåðøåíèÿ 0, èíà÷å 1.
34
2.	Ïàïêà Lib - áèáëèîòåêà ìîäóëåé
53
Ïðè ðàáîòå êîìïèëÿòîðà â KolibriOS, êîä çàâåðøåíèÿ íå ïåðåäàåòñÿ.
Line 35... Line 54...
35
 
54
 
36
------------------------------------------------------------------------------
55
------------------------------------------------------------------------------
37
	Îòëè÷èÿ îò îðèãèíàëà
56
        Îòëè÷èÿ îò îðèãèíàëà
38
 
57
 
39
1.	Ðàñøèðåí ïñåâäîìîäóëü SYSTEM
58
1.      Ðàñøèðåí ïñåâäîìîäóëü SYSTEM
40
2.	Ðàçðåøåí ñèìâîë "_" â èäåíòèôèêàòîðàõ
59
2.      Â èäåíòèôèêàòîðàõ äîïóñêàåòñÿ ñèìâîë "_"
41
3.	Äîáàâëåíû ñèñòåìíûå ôëàãè
60
3.      Äîáàâëåíû ñèñòåìíûå ôëàãè
42
4.	Îïåðàòîð CASE ðåàëèçîâàí â ñîîòâåòñòâèè ñ ñèíòàêñèñîì è ñåìàíòèêîé
61
4.      Óñîâåðøåíñòâîâàí îïåðàòîð CASE (äîáàâëåíû êîíñòàíòíûå âûðàæåíèÿ â
43
	äàííîãî îïåðàòîðà â ÿçûêå Oberon (Revision 1.10.90)
62
        ìåòêàõ âàðèàíòîâ è íåîáÿçàòåëüíàÿ âåòêà ELSE)
-
 
63
5.      Ðàñøèðåí íàáîð ñòàíäàðòíûõ ïðîöåäóð
44
5.	Ðàñøèðåí íàáîð ñòàíäàðòíûõ ïðîöåäóð
64
6.      Ñåìàíòèêà îõðàíû/ïðîâåðêè òèïà óòî÷íåíà äëÿ íóëåâîãî óêàçàòåëÿ
45
6.	Ñåìàíòèêà îõðàíû/ïðîâåðêè òèïà óòî÷íåíà äëÿ íóëåâîãî óêàçàòåëÿ
65
7.      Ñåìàíòèêà DIV è MOD óòî÷íåíà äëÿ îòðèöàòåëüíûõ ÷èñåë
46
7.	Ñåìàíòèêà DIV è MOD óòî÷íåíà äëÿ îòðèöàòåëüíûõ ÷èñåë
66
8.      Äîáàâëåíû îäíîñòðî÷íûå êîììåíòàðèè (íà÷èíàþòñÿ ñ ïàðû ñèìâîëîâ "//")
Line 47... Line 67...
47
8.	Äîáàâëåíû îäíîñòðî÷íûå êîììåíòàðèè (íà÷èíàþòñÿ ñ ïàðû ñèìâîëîâ "//")
67
9.      Ðàçðåøåíî íàñëåäîâàíèå îò òèïà-óêàçàòåëÿ
48
9.	Ðàçðåøåí ýêñïîðò ïåðåìåííûõ òèïîâ ARRAY è RECORD (òîëüêî äëÿ ÷òåíèÿ)
68
10.     Äîáàâëåí ñèíòàêñèñ äëÿ èìïîðòà ïðîöåäóð èç âíåøíèõ áèáëèîòåê
Line 49... Line 69...
49
10.	Ðàçðåøåíî íàñëåäîâàíèå îò òèïà-óêàçàòåëÿ
69
11.     "Ñòðîêè" ìîæíî çàêëþ÷àòü òàêæå â îäèíî÷íûå êàâû÷êè: 'ñòðîêà'
Line 50... Line 70...
50
11.	Äîáàâëåíû ïñåâäîíèìû òèïîâ (TYPE A = B)
70
12.     Äîáàâëåí òèï WCHAR
Line 51... Line 71...
51
 
71
 
52
------------------------------------------------------------------------------
-
 
53
	Îñîáåííîñòè ðåàëèçàöèè
72
------------------------------------------------------------------------------
54
 
73
        Îñîáåííîñòè ðåàëèçàöèè
55
1.	Îñíîâíûå òèïû
74
 
56
 
75
1.      Îñíîâíûå òèïû
-
 
76
 
-
 
77
          Òèï              Äèàïàçîí çíà÷åíèé               Ðàçìåð, áàéò
Line 57... Line 78...
57
	  Òèï		   Äèàïàçîí çíà÷åíèé		   Ðàçìåð, áàéò
78
 
58
 
79
        INTEGER       -2147483648 .. 2147483647                 4
59
	INTEGER       -2147483648 .. 2147483647 		4
-
 
60
	REAL	      1.40E-45 .. 3.34E+38			4
80
        REAL          4.94E-324 .. 1.70E+308                    8
61
	LONGREAL      4.94E-324 .. 1.70E+308			8
-
 
62
	CHAR	      ñèìâîë ASCII (0X .. 0FFX) 		1
81
        CHAR          ñèìâîë ASCII (0X .. 0FFX)                 1
63
	BOOLEAN       FALSE, TRUE				1
82
        BOOLEAN       FALSE, TRUE                               1
64
	SET	      ìíîæåñòâî èç öåëûõ ÷èñåë {0 .. 31}	4
83
        SET           ìíîæåñòâî èç öåëûõ ÷èñåë {0 .. 31}        4
65
 
84
        BYTE          0 .. 255                                  1
-
 
85
        WCHAR         ñèìâîë þíèêîäà (0X .. 0FFFFX)             2
-
 
86
 
-
 
87
2.      Ìàêñèìàëüíàÿ äëèíà èäåíòèôèêàòîðîâ - 1024 ñèìâîëîâ
-
 
88
3.      Ìàêñèìàëüíàÿ äëèíà ñòðîêîâûõ êîíñòàíò - 1024 ñèìâîëîâ (UTF-8)
-
 
89
4.      Ìàêñèìàëüíàÿ ðàçìåðíîñòü îòêðûòûõ ìàññèâîâ - 5
-
 
90
5.      Ïðîöåäóðà NEW çàïîëíÿåò íóëÿìè âûäåëåííûé áëîê ïàìÿòè
-
 
91
6.      Ãëîáàëüíûå è ëîêàëüíûå ïåðåìåííûå èíèöèàëèçèðóþòñÿ íóëÿìè
-
 
92
7.       îòëè÷èå îò ìíîãèõ Oberon-ðåàëèçàöèé, ñáîðùèê ìóñîðà è äèíàìè÷åñêàÿ
-
 
93
        ìîäóëüíîñòü îòñóòñòâóþò
-
 
94
8.      Òèï BYTE â âûðàæåíèÿõ âñåãäà ïðèâîäèòñÿ ê INTEGER
-
 
95
9.      Êîíòðîëü ïåðåïîëíåíèÿ çíà÷åíèé âûðàæåíèé íå ïðîèçâîäèòñÿ
-
 
96
10.     Îøèáêè âðåìåíè âûïîëíåíèÿ:
-
 
97
 
-
 
98
        - ASSERT(x), ïðè x = FALSE
-
 
99
        - ðàçûìåíîâàíèå íóëåâîãî óêàçàòåëÿ
Line 66... Line 100...
66
2.	Ìàêñèìàëüíàÿ äëèíà èäåíòèôèêàòîðîâ - 255 ñèìâîëîâ
100
        - öåëî÷èñëåííîå äåëåíèå íà 0
67
3.	Ìàêñèìàëüíàÿ äëèíà ñòðîêîâûõ êîíñòàíò - 255 ñèìâîëîâ
101
        - âûçîâ ïðîöåäóðû ÷åðåç ïðîöåäóðíóþ ïåðåìåííóþ ñ íóëåâûì çíà÷åíèåì
Line 68... Line 102...
68
4.	Ìàêñèìàëüíàÿ äëèíà ñòðîê èñõîäíîãî êîäà - 511 ñèìâîëîâ
102
        - îøèáêà îõðàíû òèïà
69
5.	Ìàêñèìàëüíàÿ ðàçìåðíîñòü îòêðûòûõ ìàññèâîâ - 5
103
        - íàðóøåíèå ãðàíèö ìàññèâà
70
6.	Ìàêñèìàëüíîå êîëè÷åñòâî îáúÿâëåííûõ òèïîâ-çàïèñåé - 2047
104
        - íåïðåäóñìîòðåííîå çíà÷åíèå âûðàæåíèÿ â îïåðàòîðå CASE
Line 71... Line 105...
71
7.	Ïðîöåäóðà NEW çàïîëíÿåò íóëÿìè âûäåëåííûé áëîê ïàìÿòè
105
        - îøèáêà êîïèðîâàíèÿ ìàññèâîâ v := x, åñëè LEN(v) < LEN(x)
72
8.	Ãëîáàëüíûå è ëîêàëüíûå ïåðåìåííûå èíèöèàëèçèðóþòñÿ íóëÿìè
106
        - íåÿâíîå ïðèâåäåíèå x:INTEGER ê v:BYTE, åñëè (x < 0) OR (x > 255)
73
9.	 îòëè÷èå îò ìíîãèõ Oberon-ðåàëèçàöèé, ñáîðùèê ìóñîðà è äèíàìè÷åñêàÿ
107
        - CHR(x), åñëè (x < 0) OR (x > 255)
Line -... Line 108...
-
 
108
        - WCHR(x), åñëè (x < 0) OR (x > 65535)
-
 
109
 
-
 
110
------------------------------------------------------------------------------
-
 
111
        Ïñåâäîìîäóëü SYSTEM
-
 
112
 
-
 
113
  Ïñåâäîìîäóëü SYSTEM ñîäåðæèò íèçêîóðîâíåâûå è íåáåçîïàñíûå ïðîöåäóðû,
74
	ìîäóëüíîñòü îòñóòñòâóþò
114
îøèáêè ïðè èñïîëüçîâàíèè ïðîöåäóð ïñåâäîìîäóëÿ SYSTEM ìîãóò ïðèâåñòè ê
75
 
115
ïîâðåæäåíèþ äàííûõ âðåìåíè âûïîëíåíèÿ è àâàðèéíîìó çàâåðøåíèþ ïðîãðàììû.
Line 76... Line 116...
76
------------------------------------------------------------------------------
116
 
77
	Ïñåâäîìîäóëü SYSTEM
117
        PROCEDURE ADR(v: ëþáîé òèï): INTEGER
78
 
118
                v - ïåðåìåííàÿ èëè ïðîöåäóðà;
Line 79... Line 119...
79
  Ïñåâäîìîäóëü SYSTEM ñîäåðæèò íèçêîóðîâíåâûå è íåáåçîïàñíûå ïðîöåäóðû,
119
                âîçâðàùàåò àäðåñ v
80
îøèáêè ïðè èñïîëüçîâàíèè ïðîöåäóð ïñåâäîìîäóëÿ SYSTEM ìîãóò ïðèâåñòè ê
-
 
81
ïîâðåæäåíèþ äàííûõ âðåìåíè âûïîëíåíèÿ è àâàðèéíîìó çàâåðøåíèþ ïðîãðàììû.
120
 
Line 82... Line 121...
82
 
121
        PROCEDURE SADR(x: ñòðîêîâàÿ êîíñòàíòà (CHAR UTF-8)): INTEGER
83
	PROCEDURE ADR(v: ëþáîé òèï): INTEGER
122
                âîçâðàùàåò àäðåñ x
84
		v - ïåðåìåííàÿ, ïðîöåäóðà èëè ñòðîêîâàÿ êîíñòàíòà;
123
 
Line 85... Line 124...
85
		âîçâðàùàåò àäðåñ v
124
        PROCEDURE WSADR(x: ñòðîêîâàÿ êîíñòàíòà (WCHAR)): INTEGER
86
 
125
                âîçâðàùàåò àäðåñ x
-
 
126
 
-
 
127
        PROCEDURE SIZE(T): INTEGER
-
 
128
                âîçâðàùàåò ðàçìåð òèïà T
-
 
129
 
-
 
130
        PROCEDURE TYPEID(T): INTEGER
-
 
131
                T - òèï-çàïèñü èëè òèï-óêàçàòåëü,
-
 
132
                âîçâðàùàåò íîìåð òèïà â òàáëèöå òèïîâ-çàïèñåé
-
 
133
 
-
 
134
        PROCEDURE INF(): REAL
Line 87... Line 135...
87
	PROCEDURE SIZE(T): INTEGER
135
                âîçâðàùàåò ñïåöèàëüíîå âåùåñòâåííîå çíà÷åíèå "áåñêîíå÷íîñòü"
88
		âîçâðàùàåò ðàçìåð òèïà T
136
 
89
 
137
        PROCEDURE GET(a: INTEGER;
Line 90... Line 138...
90
	PROCEDURE TYPEID(T): INTEGER
138
                VAR v: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
91
		T - òèï-çàïèñü èëè òèï-óêàçàòåëü,
139
                v := Ïàìÿòü[a]
92
		âîçâðàùàåò íîìåð òèïà â òàáëèöå òèïîâ-çàïèñåé
140
 
93
 
141
        PROCEDURE PUT(a: INTEGER; x: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
Line 94... Line 142...
94
	PROCEDURE INF(T): T
142
                Ïàìÿòü[a] := x;
95
		T - REAL èëè LONGREAL,
143
                Åñëè x: BYTE èëè x: WCHAR, òî çíà÷åíèå x áóäåò ðàñøèðåíî
96
		âîçâðàùàåò ñïåöèàëüíîå âåùåñòâåííîå çíà÷åíèå "áåñêîíå÷íîñòü"
144
                äî 32 áèò, äëÿ çàïèñè áàéòîâ èñïîëüçîâàòü SYSTEM.PUT8,
97
 
145
                äëÿ WCHAR -- SYSTEM.PUT16
98
	PROCEDURE GET(a: INTEGER;
146
 
Line 99... Line 147...
99
		VAR v: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
147
        PROCEDURE PUT8(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
100
		v := Ïàìÿòü[a]
148
                Ïàìÿòü[a] := ìëàäøèå 8 áèò (x)
101
 
149
 
102
	PROCEDURE PUT(a: INTEGER; x: ëþáîé îñíîâíîé òèï, PROCEDURE, POINTER)
150
        PROCEDURE PUT16(a: INTEGER; x: INTEGER, BYTE, CHAR, WCHAR)
Line 140... Line 188...
140
 
188
 
141
------------------------------------------------------------------------------
189
------------------------------------------------------------------------------
Line 142... Line 190...
142
	Ñèñòåìíûå ôëàãè
190
        Ñèñòåìíûå ôëàãè
143
 
191
 
144
  Ïðè îáúÿâëåíèè ïðîöåäóðíûõ òèïîâ è ãëîáàëüíûõ ïðîöåäóð, ïîñëå êëþ÷åâîãî
192
  Ïðè îáúÿâëåíèè ïðîöåäóðíûõ òèïîâ è ãëîáàëüíûõ ïðîöåäóð, ïîñëå êëþ÷åâîãî
Line 145... Line 193...
145
ñëîâà PROCEDURE ìîæåò áûòü óêàçàí ôëàã ñîãëàøåíèÿ âûçîâà: [stdcall], [cdecl]
193
ñëîâà PROCEDURE ìîæåò áûòü óêàçàí ôëàã ñîãëàøåíèÿ î âûçîâå: [stdcall],
-
 
194
[ccall], [ccall16], [windows], [linux]. Íàïðèìåð:
-
 
195
 
-
 
196
        PROCEDURE [ccall] MyProc (x, y, z: INTEGER): INTEGER;
-
 
197
 
-
 
198
  Åñëè óêàçàí ôëàã [ccall16], òî ïðèíèìàåòñÿ ñîãëàøåíèå ccall, íî ïåðåä
-
 
199
âûçîâîì óêàçàòåëü ñòýêà áóäåò âûðàâíåí ïî ãðàíèöå 16 áàéò.
Line 146... Line -...
146
èëè [winapi]. Íàïðèìåð:
-
 
147
 
-
 
148
	PROCEDURE [cdecl] MyProc(x, y, z: INTEGER): INTEGER;
-
 
149
 
200
  Ôëàã [windows] - ñèíîíèì äëÿ [stdcall], [linux] - ñèíîíèì äëÿ [ccall16].
150
  Åñëè óêàçàí ôëàã [winapi], òî ïðèíèìàåòñÿ ñîãëàøåíèå stdcall è
201
  Çíàê "-" ïîñëå èìåíè ôëàãà ([stdcall-], [linux-], ...) îçíà÷àåò, ÷òî
151
ïðîöåäóðó-ôóíêöèþ ìîæíî âûçâàòü êàê ñîáñòâåííî ïðîöåäóðó, âíå âûðàæåíèÿ.
-
 
152
Ôëàã [winapi] äîñòóïåí òîëüêî äëÿ ïëàòôîðìû Windows.
-
 
153
  Ïðè îáúÿâëåíèè òèïîâ-çàïèñåé, ïîñëå êëþ÷åâîãî ñëîâà RECORD ìîæåò áûòü
-
 
154
óêàçàí ôëàã [noalign] èëè [union]. Ôëàã [noalign] îçíà÷àåò îòñóòñòâèå
202
ðåçóëüòàò ïðîöåäóðû ìîæíî èãíîðèðîâàòü (íå äîïóñêàåòñÿ äëÿ òèïà REAL).
155
âûðàâíèâàíèÿ ïîëåé çàïèñè, à ôëàã [union] îçíà÷àåò, ÷òî ñìåùåíèÿ âñåõ ïîëåé
203
 
156
çàïèñè ðàâíû íóëþ, ïðè ýòîì ðàçìåð çàïèñè ðàâåí ðàçìåðó íàèáîëüøåãî ïîëÿ.
204
  Ïðè îáúÿâëåíèè òèïîâ-çàïèñåé, ïîñëå êëþ÷åâîãî ñëîâà RECORD ìîæåò áûòü
Line 157... Line 205...
157
Çàïèñè RECORD [union] ... END ñîîòâåòñòâóþò îáúåäèíåíèÿì (union) â ÿçûêå C.
205
óêàçàí ôëàã [noalign]. Ôëàã [noalign] îçíà÷àåò îòñóòñòâèå âûðàâíèâàíèÿ ïîëåé
158
Çàïèñè ñ ñèñòåìíûìè ôëàãàìè íå ìîãóò èìåòü áàçîâîãî òèïà è íå ìîãóò áûòü
206
çàïèñè. Çàïèñè ñ ñèñòåìíûì ôëàãîì íå ìîãóò èìåòü áàçîâûé òèï è íå ìîãóò áûòü
Line 180... Line 228...
180
	ELSE
228
        ELSE
181
		DoSomething4
229
                DoSomething4
182
	END
230
        END
Line 183... Line 231...
183
 
231
 
184
  Â ìåòêàõ âàðèàíòîâ ìîæíî èñïîëüçîâàòü êîíñòàíòíûå âûðàæåíèÿ, âåòêà ELSE
232
  Â ìåòêàõ âàðèàíòîâ ìîæíî èñïîëüçîâàòü êîíñòàíòíûå âûðàæåíèÿ, âåòêà ELSE
185
íåîáÿçàòåëüíà. Åñëè íå âûïîëíåí íè îäèí âàðèàíò è ELSE îòñóòñòâóåò, òî
233
íåîáÿçàòåëüíà. Åñëè çíà÷åíèå x íå ñîîòâåòñòâóåò íè îäíîìó âàðèàíòó è ELSE
-
 
234
îòñóòñòâóåò, òî ïðîãðàììà ïðåðûâàåòñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ.
-
 
235
 
-
 
236
------------------------------------------------------------------------------
-
 
237
        Òèï WCHAR
-
 
238
 
-
 
239
  Òèï WCHAR äîáàâëåí â ÿçûê äëÿ óäîáíîé ïîääåæêè þíèêîäà. Äëÿ òèïîâ WCHAR è
-
 
240
ARRAY OF WCHAR äîïóñêàþòñÿ âñå òå æå îïåðàöèè, êàê äëÿ òèïîâ CHAR è
-
 
241
ARRAY OF CHAR, çà èñêëþ÷åíèåì âñòðîåííîé ïðîöåäóðû CHR, êîòîðàÿ âîçâðàùàåò
-
 
242
òîëüêî òèï CHAR. Äëÿ ïîëó÷åíèÿ çíà÷åíèÿ òèïà WCHAR, ñëåäóåò èñïîëüçîâàòü
-
 
243
ïðîöåäóðó WCHR âìåñòî CHR. Äëÿ ïðàâèëüíîé ðàáîòû ñ òèïîì, íåîáõîäèìî ñîõðàíÿòü
Line 186... Line 244...
186
ïðîãðàììà ïðåðûâàåòñÿ ñ îøèáêîé âðåìåíè âûïîëíåíèÿ.
244
èñõîäíûé êîä â êîäèðîâêå UTF-8 c BOM.
187
 
245
 
Line 188... Line 246...
188
------------------------------------------------------------------------------
246
------------------------------------------------------------------------------
Line 201... Line 259...
201
	DISPOSE(VAR v: ëþáîé_óêàçàòåëü)
259
        DISPOSE (VAR v: ëþáîé_óêàçàòåëü)
202
		Îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ ïðîöåäóðîé NEW äëÿ
260
                Îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ ïðîöåäóðîé NEW äëÿ
203
		äèíàìè÷åñêîé ïåðåìåííîé v^, è ïðèñâàèâàåò ïåðåìåííîé v
261
                äèíàìè÷åñêîé ïåðåìåííîé v^, è ïðèñâàèâàåò ïåðåìåííîé v
204
		çíà÷åíèå NIL.
262
                çíà÷åíèå NIL.
Line -... Line 263...
-
 
263
 
-
 
264
        COPY (x: ARRAY OF CHAR/WCHAR; VAR v: ARRAY OF CHAR/WCHAR);
-
 
265
                v := x;
-
 
266
                Åñëè LEN(v) < LEN(x), òî ñòðîêà x áóäåò ñêîïèðîâàíà
-
 
267
                íå ïîëíîñòüþ
205
 
268
 
206
	LSR(x, n: INTEGER): INTEGER
269
        LSR (x, n: INTEGER): INTEGER
Line 207... Line 270...
207
		Ëîãè÷åñêèé ñäâèã x íà n áèò âïðàâî.
270
                Ëîãè÷åñêèé ñäâèã x íà n áèò âïðàâî.
208
 
271
 
Line 214... Line 277...
214
 
277
 
215
	BITS(x: INTEGER): SET
278
        BITS (x: INTEGER): SET
216
		Èíòåðïðåòèðóåò x êàê çíà÷åíèå òèïà SET.
279
                Èíòåðïðåòèðóåò x êàê çíà÷åíèå òèïà SET.
Line 217... Line 280...
217
		Âûïîëíÿåòñÿ íà ýòàïå êîìïèëÿöèè.
280
                Âûïîëíÿåòñÿ íà ýòàïå êîìïèëÿöèè.
218
 
281
 
219
	LENGTH(s: ARRAY OF CHAR): INTEGER
282
        LENGTH (s: ARRAY OF CHAR/WCHAR): INTEGER
-
 
283
                Äëèíà 0X-çàâåðøåííîé ñòðîêè s, áåç ó÷åòà ñèìâîëà 0X.
-
 
284
                Åñëè ñèìâîë 0X îòñóòñòâóåò, ôóíêöèÿ âîçâðàùàåò äëèíó
220
		Äëèíà 0X-çàâåðøåííîé ñòðîêè s, áåç ó÷åòà ñèìâîëà 0X.
285
                ìàññèâà s. s íå ìîæåò áûòü êîíñòàíòîé.
-
 
286
 
Line 221... Line 287...
221
		Åñëè ñèìâîë 0X îòñóòñòâóåò, ôóíêöèÿ âîçâðàùàåò äëèíó
287
        WCHR (n: INTEGER): WCHAR
222
		ìàññèâà s.
288
                Ïðåîáðàçîâàíèå òèïà, àíàëîãè÷íî CHR(n: INTEGER): CHAR
Line 223... Line 289...
223
 
289
 
Line 230... Line 296...
230
	-5	   3	    -2	       1
296
        -5         3        -2         1
231
	 5	  -3	    -2	      -1
297
         5        -3        -2        -1
232
	-5	  -3	     1	      -2
298
        -5        -3         1        -2
Line 233... Line 299...
233
 
299
 
-
 
300
------------------------------------------------------------------------------
-
 
301
        Èìïîðòèðîâàííûå ïðîöåäóðû
-
 
302
 
-
 
303
  Ñèíòàêñèñ èìïîðòà:
-
 
304
 
-
 
305
  PROCEDURE [callconv, "library", "function"] proc_name (FormalParam): Type;
-
 
306
 
-
 
307
  - callconv -- ñîãëàøåíèå î âûçîâå
-
 
308
  - "library" -- èìÿ ôàéëà äèíàìè÷åñêîé áèáëèîòåêè
-
 
309
  - "function" -- èìÿ èìïîðòèðóåìîé ïðîöåäóðû
-
 
310
 
-
 
311
  íàïðèìåð:
-
 
312
 
-
 
313
  PROCEDURE [windows, "kernel32.dll", "ExitProcess"] exit (code: INTEGER);
-
 
314
 
-
 
315
  PROCEDURE [stdcall, "Console.obj", "con_exit"] exit (bCloseWindow: BOOLEAN);
-
 
316
 
-
 
317
  Â êîíöå îáúÿâëåíèÿ ìîæåò áûòü äîáàâëåíî (íåîáÿçàòåëüíî) "END proc_name;"
-
 
318
 
-
 
319
  Îáúÿâëåíèÿ èìïîðòèðîâàííûõ ïðîöåäóð äîëæíû ðàñïîëàãàòüñÿ â ãëîáàëüíîé
-
 
320
  îáëàñòè âèäèìîñòè ìîäóëÿ ïîñëå îáúÿâëåíèÿ ïåðåìåííûõ, âìåñòå ñ îáúÿâëåíèåì
-
 
321
  "îáû÷íûõ" ïðîöåäóð, îò êîòîðûõ èìïîðòèðîâàííûå îòëè÷àþòñÿ òîëüêî îòñóòñòâèåì
-
 
322
  òåëà ïðîöåäóðû. Â îñòàëüíîì, ê òàêèì ïðîöåäóðàì ïðèìåíèìû òå æå ïðàâèëà:
-
 
323
  èõ ìîæíî âûçâàòü, ïðèñâîèòü ïðîöåäóðíîé ïåðåìåííîé èëè ïîëó÷èòü àäðåñ.
-
 
324
 
-
 
325
  Òàê êàê èìïîðòèðîâàííàÿ ïðîöåäóðà âñåãäà èìååò ÿâíîå óêàçàíèå ñîãëàøåíèÿ î
-
 
326
  âûçîâå, òî ñîâìåñòèìûé ïðîöåäóðíûé òèï òîæå äîëæåí áûòü îáúÿâëåí ñ óêàçàíèåì
-
 
327
  ñîãëàøåíèÿ î âûçîâå:
-
 
328
 
-
 
329
  VAR
-
 
330
      ExitProcess: PROCEDURE [windows] (code: INTEGER);
-
 
331
      con_exit:    PROCEDURE [stdcall] (bCloseWindow: BOOLEAN);
-
 
332
 
-
 
333
  Â KolibriOS èìïîðòèðîâàòü ïðîöåäóðû ìîæíî òîëüêî èç áèáëèîòåê, ðàçìåùåííûõ
-
 
334
  â /rd/1/lib. Èìïîðòèðîâàòü è âûçûâàòü ôóíêöèè èíèöèàëèçàöèè áèáëèîòåê
-
 
335
  (lib_init, START) ïðè ýòîì íå íóæíî.
-
 
336
 
-
 
337
  Äëÿ Linux, èìïîðòèðîâàííûå ïðîöåäóðû íå ðåàëèçîâàíû.
-
 
338
 
234
------------------------------------------------------------------------------
339
------------------------------------------------------------------------------
Line 235... Line 340...
235
	Ñêðûòûå ïàðàìåòðû ïðîöåäóð
340
        Ñêðûòûå ïàðàìåòðû ïðîöåäóð
236
 
341
 
237
  Íåêîòîðûå ïðîöåäóðû ìîãóò èìåòü ñêðûòûå ïàðàìåòðû, îíè îòñóòñòâóþò â ñïèñêå
342
  Íåêîòîðûå ïðîöåäóðû ìîãóò èìåòü ñêðûòûå ïàðàìåòðû, îíè îòñóòñòâóþò â ñïèñêå
Line 238... Line 343...
238
ôîðìàëüíûõ ïàðàìåòðîâ, íî ó÷èòûâàþòñÿ êîìïèëÿòîðîì ïðè òðàíñëÿöèè âûçîâîâ.
343
ôîðìàëüíûõ ïàðàìåòðîâ, íî ó÷èòûâàþòñÿ êîìïèëÿòîðîì ïðè òðàíñëÿöèè âûçîâîâ.
239
Ýòî âîçìîæíî â ñëåäóþùèõ ñëó÷àÿõ:
344
Ýòî âîçìîæíî â ñëåäóþùèõ ñëó÷àÿõ:
240
 
345
 
241
1.	Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð îòêðûòûé ìàññèâ:
346
1.      Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð îòêðûòûé ìàññèâ:
242
		PROCEDURE Proc(x: ARRAY OF ARRAY OF LONGREAL);
347
                PROCEDURE Proc (x: ARRAY OF ARRAY OF REAL);
243
	Âûçîâ òðàíñëèðóåòñÿ òàê:
348
        Âûçîâ òðàíñëèðóåòñÿ òàê:
244
		Proc(SYSTEM.ADR(x), LEN(x), LEN(x[0])
349
                Proc(LEN(x), LEN(x[0]), SYSTEM.ADR(x))
245
2.	Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð-ïåðåìåííóþ òèïà RECORD:
350
2.      Ïðîöåäóðà èìååò ôîðìàëüíûé ïàðàìåòð-ïåðåìåííóþ òèïà RECORD:
246
		PROCEDURE Proc(VAR x: Rec);
-
 
247
	Âûçîâ òðàíñëèðóåòñÿ òàê:
-
 
248
		Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
-
 
249
3.	Ïðîöåäóðà ÿâëÿåòñÿ âëîæåííîé, ãëóáèíà âëîæåíèÿ k,
-
 
250
	äëÿ ãëîáàëüíûõ ïðîöåäóð k = 0:
-
 
251
		PROCEDURE Proc(p1, ..., pn);
-
 
252
	Âûçîâ òðàíñëèðóåòñÿ òàê:
-
 
253
		Proc(base(k - 1), base(k - 2), ..., base(0), p1, ..., pn),
-
 
Line 254... Line 351...
254
	ãäå base(m) - àäðåñ áàçû êàäðà ñòýêà îõâàòûâàþùåé ïðîöåäóðû ãëóáèíû
351
                PROCEDURE Proc (VAR x: Rec);
255
	âëîæåíèÿ m (èñïîëüçóåòñÿ äëÿ äîñòóïà ê ëîêàëüíûì ïåðåìåííûì
352
        Âûçîâ òðàíñëèðóåòñÿ òàê:
Line 256... Line 353...
256
	îõâàòûâàþùåé ïðîöåäóðû)
353
                Proc(SYSTEM.TYPEID(Rec), SYSTEM.ADR(x))
257
 
354
 
258
------------------------------------------------------------------------------
355
------------------------------------------------------------------------------
259
	Ìîäóëü RTL
356
        Ìîäóëü RTL
-
 
357
 
Line -... Line 358...
-
 
358
  Âñå ïðîãðàììû íåÿâíî èñïîëüçóþò ìîäóëü RTL. Êîìïèëÿòîð òðàíñëèðóåò
-
 
359
íåêîòîðûå îïåðàöèè (ïðîâåðêà è îõðàíà òèïà, ñðàâíåíèå ñòðîê, ñîîáùåíèÿ îá
-
 
360
îøèáêàõ âðåìåíè âûïîëíåíèÿ è äð.) êàê âûçîâû ïðîöåäóð ýòîãî ìîäóëÿ. Íå
260
 
361
ñëåäóåò ÿâíî âûçûâàòü ýòè ïðîöåäóðû, çà èñêëþ÷åíèåì ïðîöåäóðû SetDll,
-
 
362
åñëè ïðèëîæåíèå êîìïèëèðóåòñÿ êàê Windows DLL:
-
 
363
 
-
 
364
        PROCEDURE SetDll
-
 
365
            (process_detach, thread_detach, thread_attach: DLL_ENTRY);
-
 
366
        ãäå TYPE DLL_ENTRY =
-
 
367
            PROCEDURE (hinstDLL, fdwReason, lpvReserved: INTEGER);
Line 261... Line -...
261
  Âñå ïðîãðàììû íåÿâíî èñïîëüçóþò ìîäóëü RTL. Êîìïèëÿòîð òðàíñëèðóåò
-
 
262
íåêîòîðûå îïåðàöèè (ïðîâåðêà è îõðàíà òèïà, ñðàâíåíèå ñòðîê, ñîîáùåíèÿ îá
-
 
263
îøèáêàõ âðåìåíè âûïîëíåíèÿ è äð.) êàê âûçîâû ïðîöåäóð ýòîãî ìîäóëÿ. Íå
368
 
264
ñëåäóåò ÿâíî âûçûâàòü ýòè ïðîöåäóðû, çà èñêëþ÷åíèåì ïðîöåäóðû SetClose:
369
SetDll íàçíà÷àåò ïðîöåäóðû process_detach, thread_detach, thread_attach
265
 
370
âûçûâàåìûìè ïðè
266
	PROCEDURE SetClose(proc: PROC), ãäå TYPE PROC = PROCEDURE
371
- âûãðóçêå dll-áèáëèîòåêè (process_detach)
Line 267... Line 372...
267
 
372
- ñîçäàíèè íîâîãî ïîòîêà (thread_attach)
268
SetClose íàçíà÷àåò ïðîöåäóðó proc (áåç ïàðàìåòðîâ) âûçûâàåìîé ïðè âûãðóçêå
373
- óíè÷òîæåíèè ïîòîêà (thread_detach)
Line 269... Line 374...
269
dll-áèáëèîòåêè (Windows), åñëè ïðèëîæåíèå êîìïèëèðóåòñÿ êàê Windows DLL. Äëÿ
374
 
270
ïðî÷èõ òèïîâ ïðèëîæåíèé è ïëàòôîðì âûçîâ ïðîöåäóðû SetClose íå âëèÿåò íà
375
Äëÿ ïðî÷èõ òèïîâ ïðèëîæåíèé, âûçîâ ïðîöåäóðû SetDll íå âëèÿåò íà
271
ïîâåäåíèå ïðîãðàììû.
376
ïîâåäåíèå ïðîãðàììû.
Line 272... Line 377...
272
  Ñîîáùåíèÿ îá îøèáêàõ âðåìåíè âûïîëíåíèÿ âûâîäÿòñÿ â äèàëîãîâûõ îêíàõ
377
  Ñîîáùåíèÿ îá îøèáêàõ âðåìåíè âûïîëíåíèÿ âûâîäÿòñÿ â äèàëîãîâûõ îêíàõ
273
(Windows), â òåðìèíàë (Linux), íà äîñêó îòëàäêè (KolibriOS).
378
(Windows), â òåðìèíàë (Linux), íà äîñêó îòëàäêè (KolibriOS).
Line 274... Line 379...
274
 
379
 
Line 289... Line 394...
289
 
394
 
Line 290... Line 395...
290
	PROCEDURE [stdcall] lib_init(): INTEGER
395
        PROCEDURE [stdcall] lib_init (): INTEGER
291
 
396
 
292
Ýòà ïðîöåäóðà äîëæíà áûòü âûçâàíà ïåðåä èñïîëüçîâàíèåì DLL.
-
 
293
Ïðîöåäóðà âñåãäà âîçâðàùàåò 1.
-
 
294
  Â íàñòîÿùåå âðåìÿ ãåíåðàöèÿ DLL äëÿ Linux íå ðåàëèçîâàíà.
-
 
295
 
-
 
296
==============================================================================
-
 
297
==============================================================================
-
 
298
 
-
 
299
	Áèáëèîòåêà (KolibriOS)
-
 
300
 
-
 
301
------------------------------------------------------------------------------
-
 
302
MODULE Out - êîíñîëüíûé âûâîä
-
 
303
 
-
 
304
	PROCEDURE Open
-
 
305
		ôîðìàëüíî îòêðûâàåò êîíñîëüíûé âûâîä
-
 
306
 
-
 
307
	PROCEDURE Int(x, width: INTEGER)
-
 
308
		âûâîä öåëîãî ÷èñëà x;
-
 
309
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà
-
 
310
 
-
 
311
	PROCEDURE Real(x: LONGREAL; width: INTEGER)
-
 
312
		âûâîä âåùåñòâåííîãî ÷èñëà x â ïëàâàþùåì ôîðìàòå;
-
 
313
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà
-
 
314
 
-
 
315
	PROCEDURE Char(x: CHAR)
-
 
316
		âûâîä ñèìâîëà x
-
 
317
 
-
 
318
	PROCEDURE FixReal(x: LONGREAL; width, p: INTEGER)
-
 
319
		âûâîä âåùåñòâåííîãî ÷èñëà x â ôèêñèðîâàííîì ôîðìàòå;
-
 
320
		width - êîëè÷åñòâî çíàêîìåñò, èñïîëüçóåìûõ äëÿ âûâîäà;
-
 
321
		p - êîëè÷åñòâî çíàêîâ ïîñëå äåñÿòè÷íîé òî÷êè
-
 
322
 
-
 
323
	PROCEDURE Ln
-
 
324
		ïåðåõîä íà ñëåäóþùóþ ñòðîêó
-
 
325
 
-
 
326
	PROCEDURE String(s: ARRAY OF CHAR)
-
 
327
		âûâîä ñòðîêè s
-
 
328
 
-
 
329
------------------------------------------------------------------------------
-
 
330
MODULE In - êîíñîëüíûé ââîä
-
 
331
 
-
 
332
	VAR Done: BOOLEAN
-
 
333
		ïðèíèìàåò çíà÷åíèå TRUE â ñëó÷àå óñïåøíîãî âûïîëíåíèÿ
-
 
334
		îïåðàöèè ââîäà, èíà÷å FALSE
-
 
335
 
-
 
336
	PROCEDURE Open
-
 
337
		ôîðìàëüíî îòêðûâàåò êîíñîëüíûé ââîä,
-
 
338
		òàêæå ïðèñâàèâàåò ïåðåìåííîé Done çíà÷åíèå TRUE
-
 
339
 
-
 
340
	PROCEDURE Int(VAR x: INTEGER)
-
 
341
		ââîä ÷èñëà òèïà INTEGER
-
 
342
 
-
 
343
	PROCEDURE Char(VAR x: CHAR)
-
 
344
		ââîä ñèìâîëà
-
 
345
 
-
 
346
	PROCEDURE Real(VAR x: REAL)
-
 
347
		ââîä ÷èñëà òèïà REAL
-
 
348
 
-
 
349
	PROCEDURE LongReal(VAR x: LONGREAL)
-
 
350
		ââîä ÷èñëà òèïà LONGREAL
-
 
351
 
-
 
352
	PROCEDURE String(VAR s: ARRAY OF CHAR)
-
 
353
		ââîä ñòðîêè
-
 
354
 
-
 
355
	PROCEDURE Ln
-
 
356
		îæèäàíèå íàæàòèÿ ENTER
-
 
357
 
-
 
358
------------------------------------------------------------------------------
-
 
359
MODULE Console - äîïîëíèòåëüíûå ïðîöåäóðû êîíñîëüíîãî âûâîäà
-
 
360
 
-
 
361
	CONST
-
 
362
 
-
 
363
	Ñëåäóþùèå êîíñòàíòû îïðåäåëÿþò öâåò êîíñîëüíîãî âûâîäà
-
 
364
 
-
 
365
		Black = 0      Blue = 1 	  Green = 2
-
 
366
		Cyan = 3       Red = 4		  Magenta = 5
-
 
367
		Brown = 6      LightGray = 7	  DarkGray = 8
-
 
368
		LightBlue = 9  LightGreen = 10	  LightCyan = 11
-
 
369
		LightRed = 12  LightMagenta = 13  Yellow = 14
-
 
370
		White = 15
-
 
371
 
-
 
372
	PROCEDURE Cls
-
 
373
		î÷èñòêà îêíà êîíñîëè
-
 
374
 
-
 
375
	PROCEDURE SetColor(FColor, BColor: INTEGER)
-
 
376
		óñòàíîâêà öâåòà êîíñîëüíîãî âûâîäà: FColor - öâåò òåêñòà,
-
 
377
		BColor - öâåò ôîíà, âîçìîæíûå çíà÷åíèÿ - âûøåïåðå÷èñëåííûå
-
 
378
		êîíñòàíòû
-
 
379
 
-
 
380
	PROCEDURE SetCursor(x, y: INTEGER)
-
 
381
		óñòàíîâêà êóðñîðà êîíñîëè â ïîçèöèþ (x, y)
-
 
382
 
-
 
383
	PROCEDURE GetCursor(VAR x, y: INTEGER)
-
 
384
		çàïèñûâàåò â ïàðàìåòðû òåêóùèå êîîðäèíàòû êóðñîðà êîíñîëè
-
 
385
 
-
 
386
	PROCEDURE GetCursorX(): INTEGER
-
 
387
		âîçâðàùàåò òåêóùóþ x-êîîðäèíàòó êóðñîðà êîíñîëè
-
 
388
 
-
 
389
	PROCEDURE GetCursorY(): INTEGER
-
 
390
		âîçâðàùàåò òåêóùóþ y-êîîðäèíàòó êóðñîðà êîíñîëè
-
 
391
 
-
 
392
------------------------------------------------------------------------------
-
 
393
MODULE ConsoleLib - îáåðòêà áèáëèîòåêè console.obj
-
 
394
 
-
 
395
------------------------------------------------------------------------------
-
 
396
MODULE Math - ìàòåìàòè÷åñêèå ôóíêöèè
-
 
397
 
-
 
398
	CONST
-
 
399
 
-
 
400
		pi = 3.141592653589793D+00
-
 
401
		e  = 2.718281828459045D+00
-
 
402
 
-
 
403
	VAR
-
 
404
 
-
 
405
		Inf, nInf: LONGREAL
-
 
406
			ïîëîæèòåëüíàÿ è îòðèöàòåëüíàÿ áåñêîíå÷íîñòü
-
 
407
 
-
 
408
	PROCEDURE IsNan(x: LONGREAL): BOOLEAN
-
 
409
		âîçâðàùàåò TRUE, åñëè x - íå ÷èñëî
-
 
410
 
-
 
411
	PROCEDURE IsInf(x: LONGREAL): BOOLEAN
-
 
412
		âîçâðàùàåò TRUE, åñëè x - áåñêîíå÷íîñòü
-
 
413
 
-
 
414
	PROCEDURE sqrt(x: LONGREAL): LONGREAL
-
 
415
		êâàäðàòíûé êîðåíü x
-
 
416
 
-
 
417
	PROCEDURE exp(x: LONGREAL): LONGREAL
-
 
418
		ýêñïîíåíòà x
-
 
419
 
-
 
420
	PROCEDURE ln(x: LONGREAL): LONGREAL
-
 
421
		íàòóðàëüíûé ëîãàðèôì x
-
 
422
 
-
 
423
	PROCEDURE sin(x: LONGREAL): LONGREAL
-
 
424
		ñèíóñ x
-
 
425
 
-
 
426
	PROCEDURE cos(x: LONGREAL): LONGREAL
-
 
427
		êîñèíóñ x
-
 
428
 
-
 
429
	PROCEDURE tan(x: LONGREAL): LONGREAL
-
 
430
		òàíãåíñ x
-
 
431
 
-
 
432
	PROCEDURE arcsin(x: LONGREAL): LONGREAL
-
 
433
		àðêñèíóñ x
-
 
434
 
-
 
435
	PROCEDURE arccos(x: LONGREAL): LONGREAL
-
 
436
		àðêêîñèíóñ x
-
 
437
 
-
 
438
	PROCEDURE arctan(x: LONGREAL): LONGREAL
-
 
439
		àðêòàíãåíñ x
-
 
440
 
-
 
441
	PROCEDURE arctan2(y, x: LONGREAL): LONGREAL
-
 
442
		àðêòàíãåíñ y/x
-
 
443
 
-
 
444
	PROCEDURE power(base, exponent: LONGREAL): LONGREAL
-
 
445
		âîçâåäåíèå ÷èñëà base â ñòåïåíü exponent
-
 
446
 
-
 
447
	PROCEDURE log(base, x: LONGREAL): LONGREAL
-
 
448
		ëîãàðèôì x ïî îñíîâàíèþ base
-
 
449
 
-
 
450
	PROCEDURE sinh(x: LONGREAL): LONGREAL
-
 
451
		ãèïåðáîëè÷åñêèé ñèíóñ x
-
 
452
 
-
 
453
	PROCEDURE cosh(x: LONGREAL): LONGREAL
-
 
454
		ãèïåðáîëè÷åñêèé êîñèíóñ x
-
 
455
 
-
 
Line 456... Line -...
456
	PROCEDURE tanh(x: LONGREAL): LONGREAL
-
 
457
		ãèïåðáîëè÷åñêèé òàíãåíñ x
-
 
458
 
-
 
459
	PROCEDURE arcsinh(x: LONGREAL): LONGREAL
-
 
460
		îáðàòíûé ãèïåðáîëè÷åñêèé ñèíóñ x
-
 
461
 
-
 
462
	PROCEDURE arccosh(x: LONGREAL): LONGREAL
-
 
463
		îáðàòíûé ãèïåðáîëè÷åñêèé êîñèíóñ x
-
 
464
 
-
 
465
	PROCEDURE arctanh(x: LONGREAL): LONGREAL
-
 
466
		îáðàòíûé ãèïåðáîëè÷åñêèé òàíãåíñ x
-
 
467
 
-
 
468
	PROCEDURE round(x: LONGREAL): LONGREAL
-
 
469
		îêðóãëåíèå x äî áëèæàéøåãî öåëîãî
-
 
470
 
-
 
471
	PROCEDURE frac(x: LONGREAL): LONGREAL;
-
 
472
		äðîáíàÿ ÷àñòü ÷èñëà x
-
 
473
 
-
 
474
	PROCEDURE floor(x: LONGREAL): LONGREAL
-
 
475
		íàèáîëüøåå öåëîå ÷èñëî (ïðåäñòàâëåíèå êàê LONGREAL),
-
 
476
		íå áîëüøå x: floor(1.2) = 1.0
-
 
477
 
-
 
478
	PROCEDURE ceil(x: LONGREAL): LONGREAL
-
 
479
		íàèìåíüøåå öåëîå ÷èñëî (ïðåäñòàâëåíèå êàê LONGREAL),
-
 
480
		íå ìåíüøå x: ceil(1.2) = 2.0
-
 
481
 
-
 
482
	PROCEDURE sgn(x: LONGREAL): INTEGER
-
 
483
		åñëè x > 0 âîçâðàùàåò 1
-
 
484
		åñëè x < 0 âîçâðàùàåò -1
-
 
485
		åñëè x = 0 âîçâðàùàåò 0
-
 
486
 
-
 
487
------------------------------------------------------------------------------
-
 
488
MODULE Debug - âûâîä íà äîñêó îòëàäêè
-
 
489
	Èíòåðôåéñ êàê ìîäóëü Out
-
 
490
 
-
 
491
	PROCEDURE Open
-
 
492
		îòêðûâàåò äîñêó îòëàäêè
-
 
493
 
-
 
494
------------------------------------------------------------------------------
-
 
495
MODULE File - ðàáîòà ñ ôàéëîâîé ñèñòåìîé
-
 
496
 
-
 
497
	TYPE
-
 
498
 
-
 
499
		FNAME = ARRAY 520 OF CHAR
-
 
500
 
-
 
501
		FS = POINTER TO rFS
-
 
502
 
-
 
503
		rFS = RECORD (* èíôîðìàöèîííàÿ ñòðóêòóðà ôàéëà *)
-
 
504
			subfunc, pos, hpos, bytes, buffer: INTEGER;
-
 
505
			name: FNAME
-
 
506
		END
-
 
507
 
-
 
508
		FD = POINTER TO rFD
-
 
509
 
-
 
510
		rFD = RECORD (* ñòðóêòóðà áëîêà äàííûõ âõîäà êàòàëîãà *)
-
 
511
			attr: INTEGER;
-
 
512
			ntyp: CHAR;
-
 
513
			reserved: ARRAY 3 OF CHAR;
-
 
514
			time_create, date_create,
-
 
515
			time_access, date_access,
-
 
516
			time_modif,  date_modif,
-
 
517
			size, hsize: INTEGER;
-
 
518
			name: FNAME
-
 
519
		END
-
 
520
 
-
 
521
	CONST
-
 
522
 
-
 
523
		SEEK_BEG = 0
-
 
524
		SEEK_CUR = 1
-
 
525
		SEEK_END = 2
-
 
526
 
-
 
527
	PROCEDURE Load(FName: ARRAY OF CHAR; VAR size: INTEGER): INTEGER;
-
 
528
		Çàãðóæàåò â ïàìÿòü ôàéë ñ èìåíåì FName, çàïèñûâàåò â ïàðàìåòð
-
 
529
		size ðàçìåð ôàéëà, âîçâðàùàåò àäðåñ çàãðóæåííîãî ôàéëà
-
 
530
		èëè 0 (îøèáêà). Ïðè íåîáõîäèìîñòè, ðàñïàêîâûâàåò
-
 
531
		ôàéë (kunpack).
-
 
532
 
-
 
533
	PROCEDURE GetFileInfo(FName: ARRAY OF CHAR; VAR Info: rFD): BOOLEAN
-
 
534
		Çàïèñûâàåò ñòðóêòóðó áëîêà äàííûõ âõîäà êàòàëîãà äëÿ ôàéëà
-
 
535
		èëè ïàïêè ñ èìåíåì FName â ïàðàìåòð Info.
-
 
536
		Ïðè îøèáêå âîçâðàùàåò FALSE.
-
 
537
 
-
 
538
	PROCEDURE Exists(FName: ARRAY OF CHAR): BOOLEAN
-
 
539
		âîçâðàùàåò TRUE, åñëè ôàéë ñ èìåíåì FName ñóùåñòâóåò
-
 
540
 
-
 
541
	PROCEDURE Close(VAR F: FS)
-
 
542
		îñâîáîæäàåò ïàìÿòü, âûäåëåííóþ äëÿ èíôîðìàöèîííîé ñòðóêòóðû
-
 
543
		ôàéëà F è ïðèñâàèâàåò F çíà÷åíèå NIL
-
 
544
 
-
 
545
	PROCEDURE Open(FName: ARRAY OF CHAR): FS
-
 
546
		âîçâðàùàåò óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà ñ
-
 
547
		èìåíåì FName, ïðè îøèáêå âîçâðàùàåò NIL
-
 
548
 
-
 
549
	PROCEDURE Delete(FName: ARRAY OF CHAR): BOOLEAN
-
 
550
		óäàëÿåò ôàéë ñ èìåíåì FName, ïðè îøèáêå âîçâðàùàåò FALSE
-
 
551
 
-
 
552
	PROCEDURE Seek(F: FS; Offset, Origin: INTEGER): INTEGER
-
 
553
		óñòàíàâëèâàåò ïîçèöèþ ÷òåíèÿ-çàïèñè ôàéëà F íà Offset,
-
 
554
		îòíîñèòåëüíî Origin = (SEEK_BEG - íà÷àëî ôàéëà,
-
 
555
		SEEK_CUR - òåêóùàÿ ïîçèöèÿ, SEEK_END - êîíåö ôàéëà),
-
 
556
		âîçâðàùàåò ïîçèöèþ îòíîñèòåëüíî íà÷àëà ôàéëà, íàïðèìåð:
-
 
557
			Seek(F, 0, SEEK_END)
-
 
558
		óñòàíàâëèâàåò ïîçèöèþ íà êîíåö ôàéëà è âîçâðàùàåò äëèíó
-
 
559
		ôàéëà; ïðè îøèáêå âîçâðàùàåò -1
-
 
560
 
-
 
561
	PROCEDURE Read(F: FS; Buffer, Count: INTEGER): INTEGER
-
 
562
		×èòàåò äàííûå èç ôàéëà â ïàìÿòü. F - óêàçàòåëü íà
-
 
563
		èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà, Buffer - àäðåñ îáëàñòè
-
 
564
		ïàìÿòè, Count - êîëè÷åñòâî áàéò, êîòîðîå òðåáóåòñÿ ïðî÷èòàòü
-
 
565
		èç ôàéëà; âîçâðàùàåò êîëè÷åñòâî áàéò, êîòîðîå áûëî ïðî÷èòàíî
-
 
566
		è ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿåò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
567
		èíôîðìàöèîííîé ñòðóêòóðå F.
-
 
568
 
-
 
569
	PROCEDURE Write(F: FS; Buffer, Count: INTEGER): INTEGER
-
 
570
		Çàïèñûâàåò äàííûå èç ïàìÿòè â ôàéë. F - óêàçàòåëü íà
-
 
571
		èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà, Buffer - àäðåñ îáëàñòè
-
 
572
		ïàìÿòè, Count - êîëè÷åñòâî áàéò, êîòîðîå òðåáóåòñÿ çàïèñàòü
-
 
573
		â ôàéë; âîçâðàùàåò êîëè÷åñòâî áàéò, êîòîðîå áûëî çàïèñàíî è
-
 
574
		ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿåò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
575
		èíôîðìàöèîííîé ñòðóêòóðå F.
-
 
576
 
-
 
577
	PROCEDURE Create(FName: ARRAY OF CHAR): FS
-
 
578
		ñîçäàåò íîâûé ôàéë ñ èìåíåì FName (ïîëíîå èìÿ), âîçâðàùàåò
-
 
579
		óêàçàòåëü íà èíôîðìàöèîííóþ ñòðóêòóðó ôàéëà,
-
 
580
		ïðè îøèáêå âîçâðàùàåò NIL
-
 
581
 
-
 
582
	PROCEDURE CreateDir(DirName: ARRAY OF CHAR): BOOLEAN
-
 
583
		ñîçäàåò ïàïêó ñ èìåíåì DirName, âñå ïðîìåæóòî÷íûå ïàïêè
-
 
584
		äîëæíû ñóùåñòâîâàòü, ïðè îøèáêå âîçâðàùàåò FALSE
-
 
585
 
-
 
586
	PROCEDURE DeleteDir(DirName: ARRAY OF CHAR): BOOLEAN
-
 
587
		óäàëÿåò ïóñòóþ ïàïêó ñ èìåíåì DirName,
-
 
588
		ïðè îøèáêå âîçâðàùàåò FALSE
-
 
589
 
-
 
590
	PROCEDURE DirExists(DirName: ARRAY OF CHAR): BOOLEAN
-
 
591
		âîçâðàùàåò TRUE, åñëè ïàïêà ñ èìåíåì DirName ñóùåñòâóåò
-
 
592
 
-
 
593
------------------------------------------------------------------------------
-
 
594
MODULE Read - ÷òåíèå îñíîâíûõ òèïîâ äàííûõ èç ôàéëà F
-
 
595
 
-
 
596
	Ïðîöåäóðû âîçâðàùàþò TRUE â ñëó÷àå óñïåøíîé îïåðàöèè ÷òåíèÿ è
-
 
597
	ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿþò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
598
	èíôîðìàöèîííîé ñòðóêòóðå F
-
 
599
 
-
 
600
	PROCEDURE Char(F: File.FS; VAR x: CHAR): BOOLEAN
-
 
601
 
-
 
602
	PROCEDURE Int(F: File.FS; VAR x: INTEGER): BOOLEAN
-
 
603
 
-
 
604
	PROCEDURE Real(F: File.FS; VAR x: REAL): BOOLEAN
-
 
605
 
-
 
606
	PROCEDURE LongReal(F: File.FS; VAR x: LONGREAL): BOOLEAN
-
 
607
 
-
 
608
	PROCEDURE Boolean(F: File.FS; VAR x: BOOLEAN): BOOLEAN
-
 
609
 
-
 
610
	PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN
-
 
611
 
-
 
612
	PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN
-
 
613
 
-
 
614
------------------------------------------------------------------------------
-
 
615
MODULE Write - çàïèñü îñíîâíûõ òèïîâ äàííûõ â ôàéë F
-
 
616
 
-
 
617
	Ïðîöåäóðû âîçâðàùàþò TRUE â ñëó÷àå óñïåøíîé îïåðàöèè çàïèñè è
-
 
618
	ñîîòâåòñòâóþùèì îáðàçîì èçìåíÿþò ïîçèöèþ ÷òåíèÿ/çàïèñè â
-
 
619
	èíôîðìàöèîííîé ñòðóêòóðå F
-
 
620
 
-
 
621
	PROCEDURE Char(F: File.FS; x: CHAR): BOOLEAN
-
 
622
 
-
 
623
	PROCEDURE Int(F: File.FS; x: INTEGER): BOOLEAN
-
 
624
 
-
 
625
	PROCEDURE Real(F: File.FS; x: REAL): BOOLEAN
-
 
626
 
-
 
627
	PROCEDURE LongReal(F: File.FS; x: LONGREAL): BOOLEAN
-
 
628
 
-
 
629
	PROCEDURE Boolean(F: File.FS; x: BOOLEAN): BOOLEAN
-
 
630
 
-
 
631
	PROCEDURE Set(F: File.FS; x: SET): BOOLEAN
-
 
632
 
-
 
633
	PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN
-
 
634
 
-
 
635
------------------------------------------------------------------------------
-
 
636
MODULE DateTime - äàòà, âðåìÿ
-
 
637
 
-
 
638
	CONST ERR = -7.0D5
-
 
639
 
-
 
640
	PROCEDURE Now(VAR Year, Month, Day, Hour, Min, Sec: INTEGER)
-
 
641
		çàïèñûâàåò â ïàðàìåòðû êîìïîíåíòû òåêóùåé ñèñòåìíîé äàòû è
-
 
642
		âðåìåíè
-
 
643
 
-
 
644
	PROCEDURE Encode(Year, Month, Day, Hour, Min, Sec: INTEGER): LONGREAL
-
 
645
		âîçâðàùàåò äàòó, ïîëó÷åííóþ èç êîìïîíåíòîâ
-
 
646
		Year, Month, Day, Hour, Min, Sec;
-
 
647
		ïðè îøèáêå âîçâðàùàåò êîíñòàíòó ERR = -7.0D5
-
 
648
 
-
 
649
	PROCEDURE Decode(Date: LONGREAL; VAR Year, Month, Day,
-
 
650
				Hour, Min, Sec: INTEGER): BOOLEAN
-
 
651
		èçâëåêàåò êîìïîíåíòû
-
 
652
		Year, Month, Day, Hour, Min, Sec èç äàòû Date;
-
 
653
		ïðè îøèáêå âîçâðàùàåò FALSE
-
 
654
 
-
 
655
------------------------------------------------------------------------------
-
 
656
MODULE Args - ïàðàìåòðû ïðîãðàììû
-
 
657
 
-
 
658
	VAR argc: INTEGER
-
 
659
		êîëè÷åñòâî ïàðàìåòðîâ ïðîãðàììû, âêëþ÷àÿ èìÿ
-
 
660
		èñïîëíÿåìîãî ôàéëà
-
 
661
 
-
 
662
	PROCEDURE GetArg(n: INTEGER; VAR s: ARRAY OF CHAR)
-
 
663
		çàïèñûâàåò â ñòðîêó s n-é ïàðàìåòð ïðîãðàììû,
-
 
664
		íóìåðàöèÿ ïàðàìåòðîâ îò 0 äî argc - 1,
-
 
665
		íóëåâîé ïàðàìåòð -- èìÿ èñïîëíÿåìîãî ôàéëà
-
 
666
 
-
 
667
------------------------------------------------------------------------------
-
 
668
MODULE KOSAPI
-
 
669
 
-
 
670
	PROCEDURE sysfunc1(arg1: INTEGER): INTEGER
-
 
671
	PROCEDURE sysfunc2(arg1, arg2: INTEGER): INTEGER
-
 
672
	...
-
 
673
	PROCEDURE sysfunc7(arg1, arg2, ..., arg7: INTEGER): INTEGER
-
 
674
		Îáåðòêè äëÿ ôóíêöèé API ÿäðà KolibriOS.
-
 
675
		arg1 .. arg7 ñîîòâåòñòâóþò ðåãèñòðàì
-
 
676
			eax, ebx, ecx, edx, esi, edi, ebp;
-
 
677
		âîçâðàùàþò çíà÷åíèå ðåãèñòðà eax ïîñëå ñèñòåìíîãî âûçîâà.
-
 
678
 
-
 
679
	PROCEDURE sysfunc22(arg1, arg2: INTEGER; VAR res2: INTEGER): INTEGER
-
 
680
		Îáåðòêà äëÿ ôóíêöèé API ÿäðà KolibriOS.
-
 
681
		arg1 - ðåãèñòð eax, arg2 - ðåãèñòð ebx,
-
 
682
		res2 - çíà÷åíèå ðåãèñòðà ebx ïîñëå ñèñòåìíîãî âûçîâà;
-
 
683
		âîçâðàùàåò çíà÷åíèå ðåãèñòðà eax ïîñëå ñèñòåìíîãî âûçîâà.
-
 
684
 
-
 
685
	PROCEDURE malloc(size: INTEGER): INTEGER
-
 
686
		Âûäåëÿåò áëîê ïàìÿòè.
-
 
687
		size - ðàçìåð áëîêà â áàéòàõ,
-
 
688
		âîçâðàùàåò àäðåñ âûäåëåííîãî áëîêà
-
 
689
 
-
 
690
	PROCEDURE free(ptr: INTEGER): INTEGER
-
 
691
		Îñâîáîæäàåò ðàíåå âûäåëåííûé áëîê ïàìÿòè ñ àäðåñîì ptr,
-
 
692
		âîçâðàùàåò 0
-
 
693
 
-
 
694
	PROCEDURE realloc(ptr, size: INTEGER): INTEGER
-
 
695
		Ïåðåðàñïðåäåëÿåò áëîê ïàìÿòè,
-
 
696
		ptr - àäðåñ ðàíåå âûäåëåííîãî áëîêà,
-
 
697
		size - íîâûé ðàçìåð,
-
 
698
		âîçâðàùàåò óêàçàòåëü íà ïåðåðàñïðåäåëåííûé áëîê,
-
 
699
		0 ïðè îøèáêå
-
 
700
 
-
 
701
	PROCEDURE GetCommandLine(): INTEGER
-
 
702
		Âîçâðàùàåò àäðåñ ñòðîêè ïàðàìåòðîâ
-
 
703
 
-
 
704
	PROCEDURE GetName(): INTEGER
-
 
705
		Âîçâðàùàåò àäðåñ ñòðîêè ñ èìåíåì ïðîãðàììû
-
 
706
 
-
 
707
	PROCEDURE LoadLib(name: ARRAY OF CHAR): INTEGER
-
 
708
		Çàãðóæàåò DLL ñ ïîëíûì èìåíåì name. Âîçâðàùàåò àäðåñ òàáëèöû
-
 
709
		ýêñïîðòà. Ïðè îøèáêå âîçâðàùàåò 0.
-
 
710
 
-
 
711
	PROCEDURE GetProcAdr(name: ARRAY OF CHAR; lib: INTEGER): INTEGER
-
 
712
		name - èìÿ ïðîöåäóðû
-
 
713
		lib - àäðåñ òàáëèöû ýêñïîðòà DLL
-
 
714
		Âîçâðàùàåò àäðåñ ïðîöåäóðû. Ïðè îøèáêå âîçâðàùàåò 0.
-
 
715
 
-
 
716
------------------------------------------------------------------------------
-
 
717
MODULE ColorDlg - ðàáîòà ñ äèàëîãîì "Color Dialog"
-
 
718
 
-
 
719
	TYPE
-
 
720
 
-
 
721
		Dialog = POINTER TO RECORD (* ñòðóêòóðà äèàëîãà *)
-
 
722
		    status: INTEGER   (* ñîñòîÿíèå äèàëîãà:
-
 
723
					 0 - ïîëüçîâàòåëü íàæàë Cancel
-
 
724
					 1 - ïîëüçîâàòåëü íàæàë OK
-
 
725
					 2 - äèàëîã îòêðûò	     *)
-
 
726
 
-
 
727
		    color:  INTEGER   (* âûáðàííûé öâåò *)
-
 
728
		END
-
 
729
 
-
 
730
	PROCEDURE Create(draw_window: DRAW_WINDOW): Dialog
-
 
731
		ñîçäàòü äèàëîã
-
 
732
		draw_window - ïðîöåäóðà ïåðåðèñîâêè îñíîâíîãî îêíà
-
 
733
		(TYPE DRAW_WINDOW = PROCEDURE);
-
 
734
		ïðîöåäóðà âîçâðàùàåò óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
735
 
-
 
736
	PROCEDURE Show(cd: Dialog)
-
 
737
		ïîêàçàòü äèàëîã
-
 
738
		cd - óêàçàòåëü íà ñòðóêòóðó äèàëîãà, êîòîðûé áûë ñîçäàí ðàíåå
-
 
739
		ïðîöåäóðîé Create
-
 
740
 
-
 
741
	PROCEDURE Destroy(VAR cd: Dialog)
-
 
742
		óíè÷òîæèòü äèàëîã
-
 
743
		cd - óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
744
 
-
 
745
------------------------------------------------------------------------------
-
 
746
MODULE OpenDlg - ðàáîòà ñ äèàëîãîì "Open Dialog"
-
 
747
 
-
 
748
	TYPE
-
 
749
 
-
 
750
		Dialog = POINTER TO RECORD (* ñòðóêòóðà äèàëîãà *)
-
 
751
		    status:   INTEGER  (* ñîñòîÿíèå äèàëîãà:
-
 
752
					  0 - ïîëüçîâàòåëü íàæàë Cancel
-
 
753
					  1 - ïîëüçîâàòåëü íàæàë OK
-
 
754
					  2 - äèàëîã îòêðûò	      *)
-
 
755
 
-
 
756
		    FileName: ARRAY 4096 OF CHAR (* èìÿ âûáðàííîãî ôàéëà *)
-
 
757
		    FilePath: ARRAY 4096 OF CHAR (* ïîëíîå èìÿ âûáðàííîãî
-
 
758
						    ôàéëà		 *)
-
 
759
		END
-
 
760
 
-
 
761
	PROCEDURE Create(draw_window: DRAW_WINDOW; type: INTEGER; def_path,
-
 
762
			filter: ARRAY OF CHAR): Dialog
-
 
763
		ñîçäàòü äèàëîã
-
 
764
		draw_window - ïðîöåäóðà ïåðåðèñîâêè îñíîâíîãî îêíà
-
 
765
			(TYPE DRAW_WINDOW = PROCEDURE)
-
 
766
		type -	òèï äèàëîãà
-
 
767
			0 - îòêðûòü
-
 
768
			1 - ñîõðàíèòü
-
 
769
			2 - âûáðàòü ïàïêó
-
 
770
		def_path - ïóòü ïî óìîë÷àíèþ, ïàïêà def_path áóäåò îòêðûòà
-
 
771
			ïðè ïåðâîì çàïóñêå äèàëîãà
-
 
772
		filter - â ñòðîêå çàïèñàíî ïåðå÷èñëåíèå ðàñøèðåíèé ôàéëîâ,
-
 
773
			êîòîðûå áóäóò ïîêàçàíû â äèàëîãîâîì îêíå, ðàñøèðåíèÿ
-
 
774
			ðàçäåëÿþòñÿ ñèìâîëîì "|", íàïðèìåð: "ASM|TXT|INI"
-
 
775
		ïðîöåäóðà âîçâðàùàåò óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
776
 
-
 
777
	PROCEDURE Show(od: Dialog; Width, Height: INTEGER)
-
 
778
		ïîêàçàòü äèàëîã
-
 
779
		od - óêàçàòåëü íà ñòðóêòóðó äèàëîãà, êîòîðûé áûë ñîçäàí ðàíåå
-
 
780
		     ïðîöåäóðîé Create
-
 
781
		Width è Height - øèðèíà è âûñîòà äèàëîãîâîãî îêíà
-
 
782
 
-
 
783
	PROCEDURE Destroy(VAR od: Dialog)
-
 
784
		óíè÷òîæèòü äèàëîã
-
 
785
		od - óêàçàòåëü íà ñòðóêòóðó äèàëîãà
-
 
786
 
-
 
787
------------------------------------------------------------------------------
-
 
788
MODULE kfonts - ðàáîòà ñ kf-øðèôòàìè
-
 
789
 
-
 
790
	CONST
-
 
791
 
-
 
792
		bold		=   1
-
 
793
		italic		=   2
-
 
794
		underline	=   4
-
 
795
		strike_through	=   8
-
 
796
		smoothing	=  16
-
 
797
		bpp32		=  32
-
 
798
 
-
 
799
	TYPE
-
 
800
 
-
 
801
		TFont = POINTER TO TFont_desc (* óêàçàòåëü íà øðèôò *)
-
 
802
 
-
 
803
	PROCEDURE LoadFont(file_name: ARRAY OF CHAR): TFont
-
 
804
		çàãðóçèòü øðèôò èç ôàéëà
-
 
805
		file_name   èìÿ kf-ôàéëà
-
 
806
		ðåç-ò:	    óêàçàòåëü íà øðèôò/NIL (îøèáêà)
-
 
807
 
-
 
808
	PROCEDURE SetSize(Font: TFont; font_size: INTEGER): BOOLEAN
-
 
809
		óñòàíîâèòü ðàçìåð øðèôòà
-
 
810
		Font	    óêàçàòåëü íà øðèôò
-
 
811
		font_size   ðàçìåð øðèôòà
-
 
812
		ðåç-ò:	    TRUE/FALSE (îøèáêà)
-
 
813
 
-
 
814
	PROCEDURE Enabled(Font: TFont; font_size: INTEGER): BOOLEAN
-
 
815
		ïðîâåðèòü, åñòü ëè øðèôò, çàäàííîãî ðàçìåðà
-
 
816
		Font	    óêàçàòåëü íà øðèôò
-
 
817
		font_size   ðàçìåð øðèôòà
-
 
818
		ðåç-ò:	    TRUE/FALSE (øðèôòà íåò)
-
 
819
 
-
 
820
	PROCEDURE Destroy(VAR Font: TFont)
-
 
821
		âûãðóçèòü øðèôò, îñâîáîäèòü äèíàìè÷åñêóþ ïàìÿòü
-
 
822
		Font	    óêàçàòåëü íà øðèôò
-
 
823
		Ïðèñâàèâàåò ïåðåìåííîé Font çíà÷åíèå NIL
-
 
824
 
-
 
825
	PROCEDURE TextHeight(Font: TFont): INTEGER
-
 
826
		ïîëó÷èòü âûñîòó ñòðîêè òåêñòà
-
 
827
		Font	    óêàçàòåëü íà øðèôò
-
 
828
		ðåç-ò:	    âûñîòà ñòðîêè òåêñòà â ïèêñåëÿõ
-
 
829
 
-
 
830
	PROCEDURE TextWidth(Font: TFont;
-
 
831
		    str, length, params: INTEGER): INTEGER
-
 
832
		ïîëó÷èòü øèðèíó ñòðîêè òåêñòà
-
 
833
		Font	    óêàçàòåëü íà øðèôò
-
 
834
		str	    àäðåñ ñòðîêè òåêñòà â êîäèðîâêå Win-1251
-
 
835
		length	    êîëè÷åñòâî ñèìâîëîâ â ñòðîêå èëè -1, åñëè ñòðîêà
-
 
836
			    çàâåðøàåòñÿ íóëåì
-
 
837
		params	    ïàðàìåòðû-ôëàãè ñì. íèæå
-
 
838
		ðåç-ò:	    øèðèíà ñòðîêè òåêñòà â ïèêñåëÿõ
-
 
839
 
-
 
840
	PROCEDURE TextOut(Font: TFont;
-
 
841
		    canvas, x, y, str, length, color, params: INTEGER)
-
 
842
		âûâåñòè òåêñò â áóôåð
-
 
843
		äëÿ âûâîäà áóôåðà â îêíî, èñïîëüçîâàòü ô.65 èëè
-
 
844
		ô.7 (åñëè áóôåð 24-áèòíûé)
-
 
845
		Font	    óêàçàòåëü íà øðèôò
-
 
846
		canvas	    àäðåñ ãðàôè÷åñêîãî áóôåðà
-
 
847
			    ñòðóêòóðà áóôåðà:
-
 
848
			      Xsize	  dd
-
 
849
			      Ysize	  dd
-
 
850
			      picture	  rb  Xsize * Ysize * 4 (32 áèòà)
-
 
851
					      èëè Xsize * Ysize * 3 (24 áèòà)
-
 
852
		x, y	    êîîðäèíàòû òåêñòà îòíîñèòåëüíî ëåâîãî âåðõíåãî
-
 
853
			    óãëà áóôåðà
-
 
854
		str	    àäðåñ ñòðîêè òåêñòà â êîäèðîâêå Win-1251
-
 
855
		length	    êîëè÷åñòâî ñèìâîëîâ â ñòðîêå èëè -1, åñëè ñòðîêà
-
 
856
			    çàâåðøàåòñÿ íóëåì
-
 
857
		color	    öâåò òåêñòà 0x00RRGGBB
-
 
858
		params	    ïàðàìåòðû-ôëàãè:
-
 
859
			       1   æèðíûé
-
 
860
			       2   êóðñèâ
-
 
861
			       4   ïîä÷åðêíóòûé
-
 
862
			       8   ïåðå÷åðêíóòûé
-
 
863
			      16   ïðèìåíèòü ñãëàæèâàíèå
-
 
864
			      32   âûâîä â 32-áèòíûé áóôåð
-
 
865
			    âîçìîæíî èñïîëüçîâàíèå ôëàãîâ â ëþáûõ ñî÷åòàíèÿõ
-
 
866
------------------------------------------------------------------------------
-
 
867
MODULE RasterWorks - îáåðòêà áèáëèîòåêè Rasterworks.obj
-
 
868
------------------------------------------------------------------------------
-
 
869
MODULE libimg - îáåðòêà áèáëèîòåêè libimg.obj
-
 
870
------------------------------------------------------------------------------
397
Ýòà ïðîöåäóðà äîëæíà áûòü âûçâàíà ïåðåä èñïîëüçîâàíèåì DLL.
-
 
398
Ïðîöåäóðà âñåãäà âîçâðàùàåò 1.
871
MODULE NetDevices - îáåðòêà äëÿ ô.74 (ðàáîòà ñ ñåòåâûìè óñòðîéñòâàìè)
399