Академический Документы
Профессиональный Документы
Культура Документы
C++
Borland C++Builder 5.0
I-Press
- 2001
.
C++
Borland C++Builder 5.0
I-Press
.
.
;
:
ISBN 5-93650-013-6 ( *)
., 2001
I-Press, 2001
, 2001
?
?
C++?
?
Borland C++ Builder?
?
1.
Borland C++Builder 5
C++Builder
Borland C++Builder
C++Builder
?
(Object Inspector)
11
12
13
14
16
16
18
18
22
23
25
25
26
26
27
27
28
28
28
31
31
2.
Edit ( )
Label ( )
Button ( )
?
++
?
C++Builder
++
,
float
double
long double
34
34
34
34
35
35
37
38
38
39
40
40
41
42
43
44
45
46
47
49
50
52
52
52
55
56
57
57
59
59
61
61
63
64
64
64
65
67
3.
67
69
70
71
74
79
80
80
81
83
85
4.
86
5.
86
86
89
90
90
90
93
94
6.
96
96
97
99
7.
101
101
102
102
102
103
106
107
108
8. .
?
9.
-
,
110
111
111
111
112
115
117
118
118
118
119
119
119
120
121
122
123
125
125
127
130
132
132
133
134
135
137
138
139
141
141
142
144
145
145
++
10.
?
?
?
146
148
149
149
151
151
151
152
153
153
154
155
156
158
159
159
159
161
162
163
163
164
164
165
166
166
167
168
170
170
170
171
171
172
174
175
176
177
-2
?
1 1 .
?
++
178
179
179
180
181
183
185
186
187
187
187
189
191
192
193
194
199
200
200
201
202
203
204
208
213
214
215
217
217
217
218
218
220
220
222
224
224
226
C++Builder
229
232
233
12. ,
233
Standard
Additional
Win32
235
235
235
235
236
236
236
236
237
238
238
238
239
239
239
239
240
240
240
240
241
241
241
242
242
242
243
244
244
244
245
245
246
246
System
OLE-
Dialogs
!
C++Builder
13.
Borland C++Builder
10
247
247
247
248
248
248
248
249
249
250
252
253
255
255
255
262
262
262
263
263
263
263
264
264
266
?
, ,
, Windows,
. 400 ,
- ,
,
, .
{) . ( ), ,
, .
, , , , ,
, :
;
;
,
.
, . ,
.
11
?
( , ),
, . , .
, , .
- . ,
, .
, ,
,
.
,
! .
.
. ,
. , ,
, .
:
,
: .
.
, . , . (
Borland C++) . ,
, (
), , , ,
. ,
.
12
C++?
, , . , ,
, .
, , . ,
.
,
. :
.
, .
. , ,
3 0- 20-,
, .
, , .
. , ,
, :
,
( >
<), , .
. ,
60%
( ).
. .
C++?
++ 1983 .
. ++ -
13
_ ^
.
, ++
, , , , ,
, , . ++
.
++ . , .
, Windows
++.
?
++ , , , .
, .
.
, ++ Windows.
++, Windows .
,
, , , . Windows ,
, .
.
Windows, . . ,
, .
,
++, , .
,
++ .
14
, ,
Windows Linux.
.
++ Windows,
! ,
.
(, . .)
( ),
.
, ,
.
(RAD-), ,
, , .
, , , ,
Windows ( RAD- ), .
. RAD-
:
, ,
.
, :
;
;
;
- ,
, .
RAD- -. , , , .
15
( , ,
) , ! , Windows,
, .
, .
(, ) .
, shareware. , .
Borland C++Builder?
Borland C++Builder, 2000 ,
++ Windows. 200
, . Borland C++Builder Microsoft
Visual C++, RAD-,
a Microsoft Visual Basic, .
, C++Builder,
, MS Visual Basic.
C++Builder
.
RAD- Borland Delphi,
, C++Builder.
Delphi C++,
, - ObjectPascal. , Borland C++Builder
++, !
?
, RAD-, . 500 , 32 .
16
?
, , , ( ++ )
.
Windows 95 Windows 98, Windows NT.
,
Windows 9x. , , , ,
.
Windows NT, C++Buitder - ,
. ,
, Windows 98,
Windows 98,
, . , , C++Builder,
Windows 9x Windows NT.
, .
C++ . , ,
, .
:
17 , 1024x768.
:
15 , 800x600.
:
15 , 1024x768.
17
1.
Borland C++Builder 5
Borland C++Builder,
() .
.
1. .
Borland C++Builder .
, , - , Windows .
instalt.exe .
2. ( C++Builder
). C++Builder (. . 1), , , 543
( ).
3. C++Builder
. .
4. , Next ().
5. Next
() .
18
. 1.
6. . ,
C++Builder 5, ,
. , ,
, .
, Yes
.
7.
, Next
()...
8. ... :
(Typical);
(Compact);
(Custom);
(Full).
(Typical).
.
(Compact) . (Custom)
19
1.
, , .
(Full) ,
550 .
, .
9. ,
Microsoft Office (MS Office 97 MS Office 2000)
C++Builder
, Word, Excel . .
10. ( ) (. . 2).
. 2.
11. , ,
. ,
,
Install VisiBroker For C++Builder.
,
() InterBase.
,
20
Pentium II/450/64/10/500
, ,
, ?
,
(). ,
Borland C++Builder.
21
Select Component Directories
leas t Ihe location where you would Sfce to install the
jrogtam
Bjovgse..
Req: 315159 .
Avaa:2323BK
gram riles 1
ICVPmgramFle
i s.
R* :6742K "
Avail :S4574
sred files
.e \laigsv3etnfi\.Borland Shared
Avail :84574
I and S6L Links
e- MangsSdep
l h-^E ortand S hae
i c^BDE
q
Infu...
Avail:292^)6K
abase Desktop Req :3831
CAPsegtan Filss\Bo-lndTat2base Desktop
Cancel
PMC. 5.
14.
,
C++Builder . , Next ().
15. Install ()
.
. , 10 .
readme.txt
C++Builder. Next ().
16. .
Finish () Windows.
C++Builder
, .
Borland C++Builder
Borland C++Builder 5.
22
C++ Builder , .
Help,
.
(IDE) .
. Borland
C++Builder 5 (. . 4):
C++Builder;
(Object Inspector);
;
.
.-'* i Builder -
1 tf.' Search iew ErajecJ B-r> icmocsit Qetobase j.cals help j<>JJ''
|2 & ' Q
e ^ S
l^bf'
a OBerhes
l | Eventi
l
P'
j
Ackm
AiQfi
bue
faisa
-o'-i
2
33S
[T SizaCcnihw ^ j
Madided
Insert
. 4. IDE
23
1.
, , :
(Class Explorer);
.
Uniti cpp
Project! -Classes
cpp
j#prsga hdcstop
-j^mclude "UnitI. h"
|//
:'j#pragiaa package smaKt_ir,iL)
;#pr&gitia r e s o u r c e ' " . d f t n "
ITForral *Foriul;
f a s t c a l l TForml: :TForrfll(TCoHiponent* Owner)
5 S fModifflsd*
4 J
Insert
. 5-
. , ,
.
, ,
. . ,
,
, .
, ,
C++Bui'lder C++BuUder Direct.
,
Web- Inprise (www.inprise.com),
, Borland C++Buuder
. .
24
Borland C++Builder
Borland C++Builder
C++Builder
,
. .
:
;
;
,
;
Buildor 5- Project]
Erojact
'f* Edit Seordi
Ban jjatabese
^
Wb32|
la Centred
Q'
,
, .
.
Standard
, .
, :
Standard Windows;
Additional ,
Windows;
Win32 Windows 9x;
System (,
);
Internet , ;
Data Access ;
Data Controls ;
25
].
ADO
Windows- Microsoft
ActiveX Data Objects (ADO);
InterBase InterBase
Inprise;
Midas ,
;
InternetExpress Internet
;
FastNet , ,
;
Decision Cube ;
GReport ;
Dialogs Windows;
Servers ,
Word, Excel, PowerPoint, Outlook .
?
Windows,
(, , , , . .).
,
Windows , .
.
SHIFT+F12 .
26
.
( ). ,
. , ,
C++ Builder .
,
.
. , , Button
.
( )
, ( )
.
, , ,
.
,
,
.
, .
C++Builder Windows.
, ,
. ,
NMPOP3,
,
Microsoft
Outlook Express. , Web-.
,
().
.
.
.
27
.
.
Word ,
, .
C++Builder , , ,
.
(Object Inspector)
. .
, ,
, , ,
, . .
, ;
( ) .
. ,
, .
F11.
, .
, ,
,
Windows. , , , . .
28
,
. ,
Button 1 !, , OnClick () Button 1.
,
Edit 1 ,
OnChange (). , Editi .
.
.
, ( )
. , ,
.
:
(Properties)
(Events),
, , . ( ),
.
C++Builder. , , ,
, .
, .
, Autosize , false (, ) true ().
AutoSize
true.
Autosize ,
.
. , ,
Fortnl TForml
Plopeitwj ] Evsritsf
AtftveContm!
.d
!
' AutoSe
i
fefee
' _B>Mode
SordecSMe fesSeeatJe
aormi
F
2E9
"CteriWifc 338
2 hidden
Action
Altgn
alNotse
AutaScroS
true
AtioSee
tiue
jfalse
BSordetfcom
BcsdefWicfth
"a
Caption
Cctor"
iQeBtrface
29
1.
BorderWidth,
5.
, ,
- , .
, , ,
Borderlcons. + .
,
Borderlcons , . BorderWidth
.
, . , , Font (),
, . ,
BorderWidth,
,
. , ,
Height ( )
-11. , Font
Style (
).
DtagMode
Enabe
ld
BFort
Cbaiset
Coo
lr
Height
Name
Pilch
See
Style
FormStyle
Height
HefcConterf
HeipFIa
Hint
jdmManual
*
Mrue
lUSBK
ZJ
.DEMULT^CHi
'dutadowTt
'MS Saris Serf
'jpDefauR
'
j]
tsSojmal
,300
a
JBuOop
j ^ H
Hajop .
1
. . - Font ()
30
. - , -
. ,
, ( ),
. -|
- *
. OnAcbvste
OnCanResae
-.
Font
OnCiose
Windows .
O
Copn
m
ie
On
rC
tetrxatn
F
od
pfi
(Events) DnCreata
, , OnDWCtek
DnDaacbvaca
.
QnDestroy
OnDockDrop
OnDockQver '
QnDragOrop
.
OiCragOver
(. . 4 5).
F12. , , :
++.
. .
.
(. . 7). ++,
. , C++Builder
.
-
,
!
, 95% .
31
cHt
)mwProjectBtmSomponentQatobaseToolsjjelp|||<Non8>
Daia CsntWfe 1
. i nc1ude <vc1.h>
hdrscop
;#include " U n i t i . h "
I//
;#pragws package (smart ir.it)
-^pragma resource " s .dfm"
iTForiml *Forml;
i i o , ,
10:40
. 7.
Windows
,
.
,
. ,
, O+Builder. !
++, .
.
,
( , TForm 1) .
, (11) (Uniti.h)
TFormi.
32
.
. , Properties (),
Code Insight (
), Tooltip symbol insight ( )
.
,
. Word , ++ .
33
2.
,
. , Borland C++Builder
, Windows
. . ,
. Borland C++Builder .
.
.
(
), . , ,
Windows ( )
-, Windows ( ).
.
.
, ,
( ), . . ,
34
Edit ( )
,
, , .
.
, , .
, .
, . - , , ,
.
, ? . -
Borland C++Builder, , .
: .
, , .
Edit ( )
( F12).
( Standard) ,
, . -
Edit.
Edit
. Edit!
,
, .
, .
,,-' Hoiml
,
-
35
2.
.
, , . . .
. . , ,
.
, , .
. ,
, .
. , .
Edifl. ,
Edit2 .
,
. ,
, . , ,
.
1, Edit 1.
2.
Properties ().
3. Text (). , .
, ,
.
, .
4, Text ()
Edit 1 0 (
, , , ).
36
[Object Inspector
JEditl TEdti
Properte
i s j verts|
j~ ParentBSM
i odTtrue
' PaentCoo
l i
Pae
i ntFont iiue
'! Pae
intSQ
fi wHsSue
Passwod
fC3aii m
| PopupMenu
I ReacQ
i rty false
, TabOrde 0
| Taaq
bSo
tp Hue
0
iI ^
Tap
' Vsibte
; WkMi
j*2 hidden
32
hue
121
EEI
i 3
Edit ( )
Text . .
Editl ( Name ) ( Text). , , .
, ?
. Name ()
Editl Dollars. C++Builder
.
Name C++BuiLder.
, .
, , .
, ,
, Rate ( ), -
0. .
Label ( )
?
. , Labal
,
,
.
(Label) .
Label 1 Text , . ? Caption ().
C++Builder.
Label 1 Caption
. . ,
Label 1 AutoSize ( ). , AutoSize,
True False.
37
2.
. 8.
True False
++, C++Builder.
True - , , . False , , .
, (, . 8),
.
, .
Button ( )
,
. Button , Label 1,
, , TotalButton ( Name),
> ( Caption).
, .
, . , ,
,
TotalButton.
, . , .
, , -
. , ,
. ,
, .
, . , . .
Save All ( ). ,
(
++ .).
Uniti.
Save Uniti
Projects
2} Lib
: (
:
. 9.
Calc, .
, (
.BPR), ,
. CalcProject
.
++,
. :
.
39
2.
.
,
, , , !
++,
, , ,
, , .
TotalButton. , ,
,
, ,
TotalButton.
++. , .
{...},
. ,
.
, .
, ,
Dollars Rate, Label 1.
Dollars - . ?!!
.
: , , ,
, , ( , ) .
, , . , .
40
?
, ,
( ). , ,
. , . ,
.
, ,
, : Undefined symbol < >.
, - .
, , ,
.
{...} . , , , (
).
++ , _.
.
++.
Cat
ListBox
Windows99
ge33iv5HsY8Ys
ilOO
++:
( );
football
game ( );
1 ( ).
41
2.
.
++ :
----;
8 ++
;.
. DollarsNum.
++ , int ( integer ). :
{int
DollarsNum;
++
++
. . ,
, ,
. , , int.
++ . ,
int Int , int
, Int .
Borland C++Builder
,
. , i n t DollarsNum; a
imt Dol 1 arsNum;, imt ( C++Builder
, ), ,
.
++ .
, C++Builder
. , ,
(Edit) TEdit. ,
C++Builder -
42
, ,
TFormi. , ,
.
DollarsNum, Dollars. , DollarsNum
, number_of_dollars
dollars,
.
, ,
, , . , C++Builder
( , ). . ,
Microsoft Visual C++ (Class,
).
DollarsNum . RateValue, .
:
int
int
DollarsNum;
RateValue;
:
int
DollarsNum,
RateValue;
RateValue;
int
DollarsNum;
RateValue,
DollarsNum;
:
int
43
2.
, ,
, .
, - ,
,
, .
.
, , ,
. ,
.
/*
, */ .
.
:
/*
.
*/
/* */
, , .
//.
// .
DollarsNum :
i n t DollarsNum;
//
,
, ,
.
. . :
i n t DollarsNum;
//
DollarsNum
. ,
. :
44
?
/* DollarsNum
RateValue */
:
/* */
Result, :
int Result;
++, , ,
. TEdit.
, TEdit ,
.
:
int
DollarsNum;
int
Result,
DollarsNum,
RateValue;
?
, . ,
DollarsNum RateValue.
Windows C++Builder
. DollarsNum RateValue,
, .
, , , int,
.
, TEdit : ,
; , , . ++ .
45
2.
++.
Windows
++. , , ,
.
. , TButton. Windows C++Builder
.
,
.
, . , , TButton, :
TButton my_button;
( C++Builder ). (
, ) .
,
. ( ) TEdit Dollars,
, , ,
.
,
, .
Dollars? Dollars ( ) TEdit ( Edit ).
,
, ,
TEdit.
C++Builder
++.
, C++Builder (Edit Label Button ), .
-
46
?
.
, :
int Edit Label, Button;
int TEdit;
int TLabeL;
.
, TEdit
Text. , ,
DollarsNum 12 3, Text
, .
,
. ,
, . , .
? . ,
, ( ,
, ) . Dollars, Rate,
TotalButtom, , Name ().
. , , . ,
, ,
, .
, Name
. ,
Name Dollars
( , !),
. Dollars.
>, , Name. :
Dollars->Name
Rate,
Rate->Text
47
2.
.
, Caption Label 1
Labell->Caption
( ),
, .
Name TEdit ( Edit), ,
.
, , 100, 100,
C++Builder.
C++Builder
( ) . , .
, .
,
, , .
( ) , ,
.
StrTolntO {StrToInt String To Integer).
. , , . StrTolnt(),
, int ( ).
?
. ? , , . ( ,
). . ,
. StrTolntO int.
? ++ ,
, ( ), -
48
. , .
. , StrToInt
. ,
.
StrToInt StrToInt
Dollars. ,
, Dollars>Text, ,
StrToInt :
StrToInt(
Dollars->Text
, StrTolntf) Dollars
. ?
, , .
, ,
++, . (, , ).
,
. ,
, .
:
= ;
,
I
10;
I, , :
int
I;
DollarsNum , StrTolnt(). ,
, :
DollarsNum = S t r T o l n t f
Dollars->Text
);
49
2.
RateValue :
RateValue = S t r T o I n t ( Rate->Text
);
. . ,
++ , :
<<+ ();
- ();
* ();
V ();
().
, , . DollarsNum
RateValue Result :
R e s u l t = DollarsNum * RateValue;
++:
= ( + z) / 2 + 10;
_123 = * + Y2000( d l , 1 2 ) - 32000;
Y2000( d 1,12 ) ,
.
++
++ . . , Rate Value, S t r To
I n t 1 0 0 0 . - >
Dollars->Text,
Dollars-
>Text
->
{) ++, , = () - (-
50
C++
). ,
. ++ ,
, , =.
.
:
Dollars -> Text
Dollars->
Text
Dollars
->Text
Dollars
->
Text
. ( ).
. ,
Result = DollarsNum * RateValue;
:
Result=DollarsNum*RateValue;
, , ( ):
int
Result;DollarsNum=StrToInt(Dollars->Text};
, . :
intResult;
, ,
int .
.
.
.
51
2.
, Result. (, - ),
Label!. ,
Text, Caption, .
,
, Label 1.
Caption? .
, , . .
Result , Caption . ?
lntToStr(), , .
:
Labell->Caption = IntToStrf
Result
);
( ,
) :
{
int
DollarsNum,
int
Result;
DollarsNum
RateValue;
StrToInt(
RateValue
Result
DollarsNum
StrToInt(
Labell->Caption
Dollars->Text
Rate->Text
);
);
RateValue;
IntToStrf
Result
);
++ ,
. .
++ ,
.
.
52
Save All ( ) Project
MakeCalcProject ( CalcProject)
CTRL+F9. C++Builder
Background Compiling (
), . 10,
.
T5 onpite Unit
Alt*F3
C++Builder 5 . Information for Ca:cProject
' Maks Ail Projess
, - *5 Build All Pro-.BBs
,
options.
3hflCtrl*F11
. Windows,
. , , , ,
. ,
Tools Environment ( )
Preferences () Background Compilation ( ).
Project () , Compiling () ++; Current Line (
) ,
, ; Total
Lines: ( ) ,
++.
. 10.
53
2.
Errors: (),
Warnings: (), Hints: ().
C++Builder ,
,
. ,
DollarsNum RateValue, RateValue , :
int DollarsNum,
int
RateValue;
Result;
RateValue
, .
, .
. , , - . ,
R e s u l t = 2;
R e s u l t = DollarsNum * R a t e V a l u e ;
R e s u l t = 2;
, Result 2, DollarsNum *
RateValue.
. ,
.
() , ,
.
.
C++Builder , ,
54
(). , .
,
. , , , , ,
, .
, ,
,
.
.
.OBJ. . ,
Calc.cpp
Calc.obj. .
Calc.exe.
.
,
StrTolnt(). , LIB ( Library ).
, ,
.
, Windows. , , ,
,
++.
, Compiling () Linking (). , , Borland C++Builder
.
. , , , ,
.
55
2.
,
.
, - (Linker). .
,
-:
. . ,
C++Builder Done: Make,
. , , .
Done: There are errors , ,
- .
.
, .
, . Compiling (),
, Run () F9. Borland C++Builder . ,
. 11.
Ifj-ormi
"5
. 11.
100 (100 ), 30
( 30 ), >. , , 3000 . . 12.
56
. 12.
. . ,
Windows Borland C++Builder, , - .
, , :
, . .
. Label ( ),
. ,
Label 1 Delete () Label 1 .
Edit ( ). Roubles.
,
. C++Builder
, , ,
. , ,
, Caption Label 1, ,
, Text Roubles:
Roubles->Text = I n t T o S t r ( R e s u l t
);
57
2.
. ,
. ,
.
Dollars Rate , .
ConvertButton, <.
.
.
Dollars
Rate, , Roubles
Rate.
RoublesNum.
, , . ,
TotalButton, Windows ( CTRL+C),
( CTRL + V)
:
{
int
RoublesNum,
int
Result;
RoublesNum -
RateValue;
StrToInt(
Roubles->Text
R a t e V a l u e = StrToInt(
Rate->Text
Result
RateValue;
= RoublesNum /
Dollars->Text
IntToStr(
Result
);
);
);
Dollars.
,
, . ,
- , . ,
58
Result = DoliarsNum * RateVaLue;
DolLarsNum HaRoubLesNum * /, ,
,
, , , , ,
.
Result?
, TotalButton,
,
.
, ++ ,
, .
, .
,
, ,
. , ,
{...} ,
. . (, ) .
Result
, .
. , Form 1,
.
Calccpp.
.
( , C++Buitder ). , ,
,
.
59
2.
, ?
, . , ,
,
. , , .
:
//
{//
int T;
= 1;
{//
float ;
- 3.14;
}//
// 1
{//
double ;
- 3.3333;
{//
int T;
= 50;
}//
// 3.33
}//
// 1
} //
/*
*/
60
F9 ( ). C++Builder
, ,
, .
, .
3 0 ( ), 3 000 (
), <.
100. ! .
. 13.
, ,
1000, ,
33 (). ? , ! ,
1000 33 , .
, 33,33333...
, int, , ,
-2 147 483 648 2 147 483 647, . ++ ,
( ). 33,3333 33.
-2147 483 648
2 147 483 647?
61
2.
, Pentium 32-.
? , , 0 2 3 2 -1,
0 4 294 967 295 ( ++ , unsigned
long). , -2 147 483 648
2 147 483 647.
++ . , Borland C++BuiLder.
, , .
. C++Builder
, ,
int64,
-9 223 372 036 854 775 808 9 223 372 036 854 775 807.
.
. , int64,
i64, :
3000000000i64
!
:
3000000
3000000000164
:
3 000 000
3,000,000
, - ?
++ , C++Builder (
), (!):
int
i;
i = 3000000000;
?
62
3000000000
int -1 294 967 296. ,
, , !
, ,
, 3000000000, 4 294 967 296 2.
++ .
, , , , , . ,
++ ,
,
.
,
, ,
?
,
, , .
++ .
.
;
. 67+24 0 . 66+25
, (
);
, ,
; + .
:
3000000000 = 9
10 - 11
0.03000000003 = -12
63
2.
, , ++, , .
++
(- , , ). ,
-:
123.45
1.23452
1234.5-1
, () ,
.
float
++ float ( ).
1.18-38 3 .438.
?
, 38 .
, .
, 120 .
double
double ( ),
2,23~308 1.798.
long double
, 120 . , -
. ? , C++Builder
long double ( ), 3 . 4-4932
1 . 2 4 9 3 2 . .
64
.
, 7-10 , 1,23456789
1,234567412 . .
float double , ,
,
float.
, ,
. , ,
, , .
++ , ,
.
, .
, ++ , 80- ,
.
, ,
++,
,
, ,
.
. int float.
,
.
.
Replace All ( ). CTRL+R,
,
, . 14.
Text to find: ( ) i n t ,
lntToStr(), Replace
with: ( ) : f l o a t ( ), Origin
( ) Entire scope ( )
Replace All ( ).
, :
65
2
(Replace Text
" sensitive
" i*$mie words only
<"" gackwatd
" on feolace
-Scoper
ram cursor
Cancel
. 14.
float
float
RoublesNum,
RateValue;
Result;
- , , float,
CTRL+Z ( Undo , Windows)
.
, lntToStr() StrTolnt(), .
, , .
? , 1,0 1.
,
. , 1,0
, 3,14 3
, .
( ), , ,
, , .
66
. C++Builder, , ,
lntToStr().
, , , :
int m;
m = (int)3.14;
, m
3.
, .
. :
float x;
= 5; //
, ++
, . , , , float double
( ).
:
int N ;
N = (int)(5.5 + 4.4);
( 5 . 5 + 4 . 4 ) , 9,9, int ( 9, ).
, :
int ;
N = (int)5.5 + 4.4;
,
5.5, .
67
2.
++ ,
(
).
2*2 + 3*3
,
. ++ , , .
++ ,
. ( i n t ) 5 . 5 + 4 . 4
5.5 + 4 .4,
9.9 int.
,
. 2*2 + 3*3 , (int)(5.5 + 4.4).
. ,
, .
, lntToStr<) StrTolnt()
, ,
. int , . FloatToStr() StrToFloat{)
( ) lntToStr() FloatToStr{), a StrTolntO StrToFloatQ.
( )
.
10 0 (100 ), , 25,5 .
68
, , ++
, Borland C++Builder,
Windows, .
Windows
, Windows
WIN.INI, [intl] sDecimal. Windows . ,
Windows
, :
sDecimal-,
, .
, Windows, ++,
.
2 5 , 5 ( 2 5 . 5 ) .
> 2550 ().
29,9 ? ?
<.
85,2842788696289. ,
( 85,284280936454),
.
1000 30. 33,3333320617676 ( ).
85,2842788696289 . .
C++Builder ?
, ! FloatToStrFQ.
.
:
69
2.
;
( ), ;
,
ffFixed;
, ( ) , (
, 10 );
, ,
.
. ++
. ,
Windows C++BuHder,
,
Windows. FloatToStrF()
, .
, .
, , . ,
C++Builder .
:
Roubles->Text
FloatToStrF(Result,ffFixed,10,2);
Dollars->Text
FloatToStrF(Result,ffFixed,10,2);
, , , 1000 30
33,33.
, ,
. ,
. , 9,9 ,
9 .
, C++Builder , . f!oor(),
, (int).
, .
, :
floor(+0.5)
.
,
: Result .
:
// :
R e s u l t - f l o o r ( DollarsNum * R a t e V a l u e + 0 . 5 );
// :
R e s u l t = f l o o r ( RoublesNum / RateValue + 0.5 );
.
: Call to undefined function floor (
floor).
? , ,
?
, , f loor() .
.
(LIB-),
( , / . .).
C++Builder
. , , ,
?
, ,
, , floor().
. Help
Contents ( ). Index ()
: f l o o r (. . 15).
71
2.
floor, floor!
1
(floor
Headei File
math.h
Category
Math Routines
Syntax
#include <n
double floe
long double
Description
Rounds down,
ffoorfinds the !
floorf\$, the Ion
""
Fbor
Canvas
[boil
flow control routines
[lush sire dm
flush streams
FlushBuffei
TFJer
TReader
T Writer
FlushBulfeis
TBDEDataSe!
FlushSchemaCache
___
i
T Database
Nvover help, database navigator
FMAXEXP
FMdXPOWTWD
ii result
Return Value
floor returns thi
. 15.
, , floor ,
. (. . 16).
^Borland O + Builder Help
;
] ".* | j s
floor, floor!
Header File
math h
Category
Math Routines
Syntax
Slnclude <roach.h>
double Hoot (double y.) ;
long double f l o o d (long double x) ;
Description
Rounds down
floorfinds Ihe largest integer not greater than x
toarfis the long double version, Ft takes a lony double argument and returns a long double result
Return Value
the integer found as a double. Tloorf returns the integer found as a long double.
Puc. 16.
72
: Header File .
. ,
(math.H).
. . ( .).
.
, ,
,
.
, .
. , ,
. . , floor() :
double
f l o o r ( d o u b l e ) ;
. .
, , floor()
:
double
floor(double);
math.h ,
f 1(),
. ,
, , , .
?
:
#include
- >
#include
"-"
,
, ,
(
C++BuiWer).
73
2.
,
.
:
#include
<math.h>
math.h.
.
Calc.cpp.
vcl.h ( Visual Component
Library) Calc.h, .
math.h vcl.h:
#include
<vcl.h>
#include
<math.h>
( F9),
1000 30 33,00.
,
FloatToStrF{) , , , .
, . , ,
:
.
1. . , . ,
8 ( ).
, Tools Environment Options ( > ) C++Builder (. . 17).
Preferences (), Grid size X: (
) Grid size Y: ( ) , , 5. , .
74
Lnvironmorvt Options
Cancel
Hep
l
:. 17.
2.
.
, , .
,
.
. , .
,
Align to grid ( ).
.
3. .
,
Align ().
.
Creation Order...' .
Rip Children ' . >
Addta ftepci&rtory.,.
yiewasTexi
TextPFM
. (Horizontal), (Vertical).
, -
75
2.
. ,
Tops ( ),
No change ( ). , .
4.
, .
,
Size () (
Width) ( Height).
[Alignment
-Wli
ghmft to smallest
<* to largest
Caned
. 18.
76
, 50 . .
5.
,
.
Ok
<*&*
.
, , , . Windows
. ( ,
). , - ,
TAB . , (
).
,
Tab Order ( ).
Edit Tab Order ( ) . 19.
.
.
TAB ,
.
Edit Tab Order
jQntrate. listed HI tab fade*
Dollars TEdil
Rale' i t
TotalButton- T Button
Roubles'
Cancti
. 19.
77
2.
, .
6.
,
. , . 3, Align ()
Space
equally ( ) Horizontal ( ).
.
,
Center in window ( ).
(. . 20).
! 31
InseH
PMC. 20.
7. , , ,
. ,
, .
(, Label).
78
, (. . 20).
8.
Form 1, Borland + Builder
. ,
, Caption .
. .
.
. , , ,
Calc. 14 , C++Builder. , , ,
.
.
.
.
. , ,
, .
Windows . . :
:\WINDOWS\SYSTEM\sheI132.dll
:\WINDOWS\SYSTEM\pifmgr.dll
:\WINDOWS\SYSTEM\moricons.dll
:\WINDOWS\SYSTEM\progman.exe
.
, , . ,
, C++Builder, 24 !
79
3.
,
. C++Builder File Exit
( ) , CalcProject, C++Builder
. ,
. File Open Project (
) ( CTRL+F11), CalcProject File Reopen (
), , (. . 21).
Edti earchyeiwgrqedBunComponent0aa
fbasec
Irasl
f.-'C++Buildor
. Q blew
A fSST
. 21,
80
. 0,
,
.
( F9) , , 1000. (
, ). , C++Builder
(. . 22).
Project CalcP"3JBc?.e*B raisae exception class
EZeroZiNiie sdi rreseaga 'Floating by
zerc'. Prccass stopped Use Step crRt-nto '.^.
OK
. 22.
}' ? ,
RoubiesNum (
1000) RateValue ( 0).
, !
, , . ,
.
Calc cpp
//
__, _*-._____,
void
f a s t c a l l TFornil: :ConvertButtonClick(TCtoject "Sender)
'(
float RoublesNum, RateValue;
float Result;
RoubleaNum - StrToFloat( Roubles->Text );
RateValue - StcToFloat( Rate->Text );
DollaE3->Text - TloatToStrF( Result, J l x e d , 10, 2
iLJ
43 1
"itnsert
. 23. ,
81
3.
, C++Builder ,
, ,
(. . 23).
.
?
,
. , ,
, , .
. ?
, , ,
Windows, (
).
, . F9,
, Floating point division by zero (
), . 24.
iC;jlc|)rojec)
Floating point division by zero
, 24, ,
?
. C++Builder
, . .
-. , , ,
, . ,
Calcexe C++Builder, Windows,
,
82
. , , .
, (, ).
"" is not a valid floating point value ("" ).
, C++Builder.
C++Builder ,
. ,
, .
. , , ,
.
F5. , .
0,'ilc cpp
>
ivoid
<
float RoublesHuiti, ReteValue;
f i o a t Result;
RoufclesNum = StrToFloatl Roublea->Text );
RateValue = StrToFloatf Rate->Text );
10, 2
Puc. 25.
{Breakpoint).
,
, ,
.
83
3.
|
^
,
, ,
.
.
F5
.
, 1000 () . , , ++,
. .
RateValue, ,
(. . 26).
, ? , RateValue
,
.
View Erajsct Qm omponent
. 26.
84
. , ,
CTRL+F2 ( Run Program
Reset), C++Builder ,
. .
, ?
, , C++Builder , , , .
No (), , , ,
++ . ,
, C++Builder ,
. ,
,
.
.
CTRL+F2.
85
4.
, , . ,
, .
, , . , Result, DollarNum
StrToFloat (
DollarsNum). RateVafue,
. :
Result = floor( StrToFloat( Dollars->Text ) * StrToFloat
( Rate->Text ) + 0.5 );
StrToFloat
! :
f l o a t DollarsNum;
f l o a t RateValue;
float Result;
Result = floor( StrToFloat( Dollars->Text ) * StrToFloat
( Rate->Text ) + 0.5 );
Roubles->Text = FloatToStrF(Result, ffFixed, 10, 2 ) ;
( CTRL+F9). ,
Done: There
are warnings ( ). ?
86
C++Builder
, Project Project Options
( ), Compiler () Warnings () AIL ().
Compiling
ftqec*- 0 ^twoki tie<^boatcsNdess-ub54>tDC:teftoB
i ct tp
Done. Then: ore wommg.
Cuiranllme:
Huts
0 ^Totalities
S Waning^
4 *
173
Q
. 27. Warning
. , , (. . 28).
void
float
float
float
25 I
Insert
Puc. 28.
,
. .
"RateVafue" is declared but never used
"RateValue" , . , ,
87
4.
RateValue ( DollarsNum)
. ? , RateValue .
, .
Parameter
"Sender" is never used ( Sender ). ,
Sender TotaLButtonCLick ConvertButtonClick
. , , ,
C++Builder .
Compiler Warnings Selected ()
Warnings
. ,
, , .
, :
float Result;
Result = floor( StrToFloat( Dollars->Text )
StrToFloat( Rate->Text > + 0.5 );
Roubles->Text = FloatToStrF(Result,
ffFixed, 10, 2) ;
Sender.
? Result
.
Result f 1():
Roubles->Text = F l o a t T o S t r F ( f l o o r ( S t r T o F l o a t
(Dollars->Text) * StrToFloat(Rate->Text) + 0 . 5 ) ,
f f F i x e d , 10, 2 ) ;
Result ,
.
( ! )
.
88
(!) ++,
,
.
?
, ( , ),
- ++? , ,
,
. ? (
) .
, . , , , .
,
(RoublesNum, RateValue), .
, (
),
. ,
, .
! ,
, .
++.
5-10 , .
,
.
, ! , , , ,
. ,
++. , .
89
5.
.
, , ,
, ,
float. , .
, .
++ . , , ,
, .
, . Roubles Rate
StrToFloat().
, , ,
EConvertError.
,
( Exception ). C++Builder 5 .
90
,
- , (Help).
StrToFloatQ ,
, EConvertError.
, . , ,
.
. ,
,
, . , RoatToStrF()
- ,
"NAN".
. , try,
:
try
{
Roubles->Text
FloatToStrF(
floor(StrToFloat(Dollars->Text)
c a t c h {), :
c a t c h (const - &)
:
c a t c h (const E C o n v e r t E r r o r &)
, ( ) EConvertError.
:
91
5.
try
Roubles->Text = FloatToStrF(
floor( StrToFloat( Dollars->Text
StrToFloat( Rate->Text ) + 0.5 )
ffFixed, 10, 2 );
}
catch (const EConvertError &)
/*
*/
?
. ,
,
,
, ,
.
Windows ,
ShowMessage() .
, , ++ . :
" ++"
, :
"" ( , )
, . ,
\ ( ):
" \" ,
\". "
, C++ ,
ShowMessageQ:
92
catch
( c o n s t E C o n v e r t E r r o r &)
ShowMessage("
");
, , C++Builder ( , ). ,
( )
, ,
. 29.
CalcpFOject
' ' ,
,._-
. 29. ,
? StrToFloat()
StrToFloat{ Roubles->Text) , EConvertError. StrToFloatO ,
( try), ,
EConvertError (
c a t c h ) . , try .
93
5.
try , , catch, . . ,
catch-.
? , . ++ catch-,
.
catch- (
), EConvertError
, , EOverflow ( ), . :
try
Roubles->Text = FloatToStrF(
floor(
StrToFloat( Dollars->Text
94
1 el 0 0 0 (
), 1,
, , {).
, catch- ,
, catch-, try.
95
6.
StrToFloat().
. ,
atoi(), ++ , . ,
, , .
( string.h),
,
, ,
.
C++Builder AnsiString.
,
, ,
, .
--Builder 3 ,
, , ,
.
++ . :
(Caption), (Name), (Text)?
96
TButton TEdft,
.
, , ,
- : , ,
, .
, , . ,
.
, , . , , .
++ .
.(), " . "
, open ( ) . ( ,
) .
. ,
A. Get Width () , .
, ++, .
, , . , .() ,
, true,
, false, .
ErrorCode = .();
:
.();
, ( ), , .
, , ,
, , , ? , , Roubles->Text. ?
4 3 1064
97
6.
,
, ,
,
.. Roubles
Calc.h,
,
Open Source/
Header File ( / )
CTRL+F6.
Calc.h
:
TEdit
Qcse Page
Open Ftie at CLiratr
NJsw Sdtf Wn
i dow
Add Tc-Oo item...
Sir.VCtri+T
Paste
Iaggle EookmeK
is
OtrirV
Oeoug
Message View
view EvplDrer
*
S-^CtrKE
*Roubles;
98
AnsiString () . StrToFloat() ToDoubleQ:
RoublesNum = R o u b l e s - > T e x t . T o D o u b l e f ) ;
,
EConvertError (
ToDoubleO), try- catch-.
, , CTRL+F4.
, , , ?
, . AnsiString c_str(),
AnsiString
, ,
.
atof(). , C++Builder ,
s t r i n g (). string to
floating-point conversions ( )
atof{). ( ) AnsiString (
c_str()) double.
,
( ):
RoublesNum = a t o f ( R o u b l e s - > T e x t . c _ s t r ( )
) ;
.
?
atof () . errno. ,
99
6.
,
errno.h, .
, atof() ,
- ,
ERANGE.
atof() (, EZERO), ERANGE, ,
ERANGE, .
++. , , C++BuiLder.
, atof () , ERANGE. ,
, ( Roubles) , .
++,
( ?), , .
++
.
100
7.
. , ,
C++Builder ,
. , , -2,
, , . ,
, ,
,
. , ,
.
, -
. , Microsoft Internet
Explorer 4.x :
Web- 255 ( ++
unsigned char 0 255;
, , ),
Windows , ( )
.
(,
, ). ,
101
7.
.
. ,
. , ,
.
. .
, .
( ), .
,
.
++ . ++ ( ), .
:
if
( )
- ;
if . , , ,
, .
( , true), ( ,
false). true 1, . false 0, .
++ boot, , true false (
).
02
, ?
:
i f ( )
{
-1 ;
-2 ;
// . .
}
, .
, - , . , ,
.
(
) .
==
!=
>
<
>=
<=
, ( ,
).
103
7.
:
> 5
R a t e V a l u e <= 2 9 . 5
2 != 3
(*3)
<
(+50)
*3
+50. , :
*3 < +50
10, 0, *3 < +50 (10*3 < 0+50) false 0.
. , , .
.
>, >=, <, <= = !=.
,
, .
( ) . , ,
100.
, && ||. && true, , true (
false). ||
true, , true.
:
R a t e V a l u e > 0 && RateValue < = 100
&& j | ,
RateValue .
RateValue 101, :
(RateValue > 0) true;
(RateValue <= 100) false.
true && false f a l s e .
104
(
, ++)?
*3 < +50 > z/3
, ,
+50, *3, +50, z/.
. , ( )
, . C++ ,
.
/
^
++, ,
. ( ) .
, 10, 0, z 120,
:
10*3 < 0+50 > 120/3
30 < 50 > 40
(30 < 50)
, true.
t r u e > 40
++ : ,
t r u e 1,
t r u e > 40
1 > 40
f a l s e ( 0).
true false 1 0! ,
.
105
7.
, *3 < +50 > z/
, Sugest parentheses
to clarify precedence ( ,
).
, , :
(*3
<
+50)
ScEc
(+50
>
z/3)
RateValue
DollarsNum RoublesNum .
:
RateValue > 0 && RateValue <= 100 && RoublesNum >= 0
&& RoublesNum < 100000
RateValue 30, RoublesNum -100, :
30 > 0 && 30 <= 100 && -100 >= 0 && -100 < 100000
106
:
Ra-eValue > 0 && R a t e V a l u e <= 100 &&
ChangeRate(RateValue)
ChangeRate() , : RateValue , RateValue
110,
faLse && ChangeRate(RateValue)
, false && -
false. ChangeRate{).
, RateValueQ . . .
.
++, .
. ,
Result :
i f ( RateValue > 0 &&
RateValue <= 100 &&
RoublesNum >- 0 &&
RoublesNum < 100000 )
( ), Result Dollars
:
R e s u l t - f l o o r ( RoublesNum / RateValue + 0 . 5 ) ;
Dollars->Text = FloatToStrF(Result,
ffFixed,
10,
2);
107
7.
:
i f f RateValue > 0 &&
RateValue <= 100 &&
RoublesNum >= 0 &&
RoublesNum < 100000 )
{
Result =
Dollars->Text = FloatToStrF(Result,
ffFixed,
10,
2);
,
(, 2 00) .
.
, - , . ,
?
, . .
.
,
, ,
== . :
f l o a t , ,
z,-
z = 0;
= 3.1415927;
- 3.1415927;
i f ( == ) 2 = 10;
, 10,
3.1415926,
3.1415929.
108
, ,
.
, ,
(
). , ( ,
; -2 +2, -0,001
+0,001, +3,14 +3,14). 4-5 - 1 ,
- 1 .
++
abs().
,
, :
i f ' a b s ( x-y ) < 0 . 0 0 0 1 ) z - 10;
z , 10,
0,0001. . C++, .
109
8. .
?
- . ,
. ++.
,
, . .-. ,
.
1. ( ,
).
2. 0 .
3. .
4. ( ).
5. 2 , , . ,
. ,
. , .
6. 1,
, .
7. , 100 .
, ++ . ,
, .
110
, ,
.
- .
CalcProject (
C++Builder) File Close All ( ).
, - , C++Builder ,
(. . 30).
(Yes),
. 30.
.
, File New Application (
). ,
, C++Builder.
, Save All ( ). ,
.
++ DiceUnit.cpp, DiceProject.bpr.
!
.
,
.
, ,
, .
111
8. .
, ,
! , ,
, , , , .
( , ).
.
1. ( )
( ).
2. , .
3. , : ,
, .
4. , .
, , . 31.
X/ 1
LasfDice
LastHumanScoia LestComputer Score
ComputeiScore : .
GameFn
i tsh
. 31.
Name, :
HumanScore ( );
ComputerScore ( );
Last HumanScore ( );
LastComputerScore ( );
LastDice ( ).
ListBox ()
TotalScores ( ).
. MainMenu .
?
.
C++Builder .
, , , ,
. .
,
.
.
.
1. ENTER
,
Caption.
2.
ENTER
C++Builder .
(.
. 32).
^ropwtw | Everts j
:
'. AutoHotkeyi
meParent
I Btroap
Bteax
f Captitm
^Checked
jfUB
rraNane
0
! .Hint
'All shown
3.
ENTER
. ENTER
(. . 33).
4.
, ENTER , 2 3, (. . 34).
113
8. .
( oiml->MamMenul
'.
. 32.
Foim1->MamMenu1
]
. 33.
. 34.
, Caption.
114
, ,
INSERT. , - ,
, INSERT
Caption ( ).
,
?
&. ,
, :
&
,
, ,
.
, .
, .
, , , Windows
,
.
.
.
1. Win32.
2. ToolBar (
).
3.
(. . 35).
4. , . Additional, SpeedButton
( ToolBar).
.
, , C++Builder.
115
8. .
[V;"'* Builder 5 - DicePr<
Fila Fdit Search V-ew &O|8ct Run CompQnant Qetabosti j.ogls Help
Cab
ECctWiant
7: oral: :.1
v" **-
Tnr'Bail ['""odl
5.
.
1. Glyph , . 35. ,
.
2. Load (), ,
C++Builder, \Borland Shared, \lmages,
\Buttons. .
.
, . -
( ).
3. , .
phonerng.bmp. ,
, .
116
. 36.
4. .
dooropen.bmp,
arrow3r.bmp comppc1.bmp.
,
. Hint.
.
: , ( ).
.
, , , .
, .
.
?
, , , .
, , .
8. .
?
, ,
,
. .
, ,
. .
.
, .
.
:
;
;
, ;
, :
.
:
.
:
;
1,
;
:
;
118
, :
;
.
:
;
, :
;
.
( ) ,
++.
,
File New ( ), New () Unit () . . 37.
" Now Itorrr.;
j
Nw'
Projects
AavtAi j
}
Data Modules
)
MJSief j DcePtojec*
f
j
Farm
me
PackagePo
rejctG
O
ILE
H
aderF
e
li
K
atn
RepotrResou
crW
ezad
irDL SecvrieSecvrieAppSc
ft
e
b
TextThe
radOb
ec
jt W
Ap
p
cia
oitrSevre
LtixarJ
j
Puc. 37.
,
CTRL+S
DiceProject Game.cpp.
119
8. .
.
(, , ),
,
, .. Game.cpp Game.h. Game.cpp
#include
"Game.h"
Game.h,
CTRL+F6.
#endif
.
( ) , ++, :
class
// ,
};
,
( ; ).
(, , , )
. , , ,
. .
,
.
, .
++ public private, . ,
120
, , , .
( , , )
.
( ) public private , (public)
, (private).
.
, GetDiceValuef).
int ( 1 6),
.
LastValue,
.
class
TDice
public:
int LastValue;
int GetDiceValue();
};
Game.cpp , . GetDiceValue() Game.cpp.
, ,
:
int
TDice::GetDiceValue()
, , Game.h
,
, ,
.
int
TDice::GetDiceValue()
121
8. .
++ .
,
. ,
C++Builder,
(::).
, (, ),
.
C++Builder randomQ, ,
0 -1.
random(6) +1.
random() Game.cpp stdlib.h:
#include
<stdlib.h>
GetDiceValue() ,
?
return. :
return
_;
, , , return.
return,
. ,
return 10;
= 5;
= 5 UnreachabLe
code ( ).
, , :
// 1 6
i n t TDice::GetDiceValue()
{
LastValue = random(6)+1;
return LastValue;
122
, , , .
,
. ,
. ++, , .
C++Builder , ++. ,
.
( )?
,
, 50 . ,
.
Game.h,
TDice:
class
TPlayer
public:
int Scores, CurrentScores, WinNum;
Scores, CurrentScores WinNum
, ,
.
(public)
?
, - .
( )
fnit{),
. , , . , ,
123
8. .
. ?
++ void,
. , ,
, void:
void
Init();
lnit(), , , TPlayer:
class
TPlayer
public:
int Scores, CurrentScores, WinNum;
void I n i t ( ) ;
};
lnit() Game.cpp :
//
void T P l a y e r : : I n i t ( )
TPlayer .
, ++
:
-1 = -2 = ... = ;
.
TPlayer
:
S c o r e s = C u r r e n t S c o r e s = 0;
WinNum?
, ,
, , , 0 .
?
124
, .
, ,
( , ), . ,
, (),
.
,
- .
:
-();
:
class
TPlayer
{
public:
int Scores, CurrentScores, WinNum,TPlayerf);
void Init f) /
(public) ,
,
, .
Game.cpp , :
TPlayer::TPlayer()
{
WinNum = 0;
, TReferee. TPlayer - -,
TDice , NewGame ( ), ComputerMove
( ) GameFinish ( ):
125
8. .
class TReferee
{
public:
TPlayer Human, Computer;
TDice Dice;
void ComputerMove();
bool GameFinish();
void NewGame () ;
};
GameFinishO true,
100 , false .
, ,
. .
,
, .
NewGame() Game.cpp ,
.
, ,
. , 1,2
3, , ,
,
NewGameQ.
//
void TReferee::NewGame()
{
Human.Init();
Computer.Init();
if( Dice.GetDiceValueO <= 3 }
ComputerMove();
126
ComputerMove() ,
.
, , .
,
. Scores CurrentScores
TPlayer ( Computer). ,
- > . , , . ( ,
) . , Scores, Computer
TPlayer,
Computer.Scores
- , ., >?
.
.
, ,
. , ,
.
,
, ,
. (16-
) (32- ) .
, ,
, .
, , , -
, .
.
127
8. .
- ,
,
( )
, .
,
.
++.
, ,
.
++ , , , . C++Builder 5
CodeGuard ( ). .
, Java,
++, .
, , , > ,
( , ) .
. , ( ).
, ,
,
. ,
,
. .
+ + Builder ( ),
,
>,
..
, ?
. DiceUnit.cpp Forml . Forml
TForml ( ), Forml
*:
TForml *Forml;
128
, Forml
TForml, ,
TForml.
:
int i; // int
int * i; // - int
TPLayer Computer; // TPlayer
TPLayer* Computer;//- TPLayer
:
double * Compute( int * X);
, ,
.
:
//
void
TReferee::ComputerMove()
// :
Computer.CurrentScores = 0;
// , ...
if( Dice.GetDiceValue{) != 1 )
//
Computer.CurrentScores - Dice.LastValue;
// :
Computer.Scores - Computer.Scores +
Computer.CurrentScores;
// ,
// :
Human.CurrentScores = 0;
5 3LIK 1064
] 29
8. .
, Scores Current Scores.
++ :
Computer,Scores
+- Computer.CurrentScores;
<+= , , , .
+=, ++ -=, *= /=.
:
- = 5; // , = - 5;
*= 2; // , = * 2;
/= +1; // , ~ / (+1);
GameFinish(). ,
, , ,
, .
100. :
Human.Scores >= 100 I I C o m p u t e r . S c o r e s >= 100
return,
true false:
//
bool
TReferee::GameFinish()
II C o m p u t e r . S c o r e s >=
,
(100), . 100
, , ,
. (Search Replace)
, 100
.
130
100
. ,
.
, . :
c o n s t _ = ;
, ,
.
,
.
_.
GAME_FINISH_SCORE Game.h:
c o n s t GAME_FINISH_SCORE = 100;
GameFinish():
r e t u r n {Human.Scores :>= GAME_FINISH_SCORE I I
C o m p u t e r . S c o r e s >= GAME_FINISH_SCORE);
, .
, , .
.
, , ,
, .
131
9.
-
DiceUnit.cpp.
TFormi (
) Referee TReferee, , .
, ? , .
DiceUnit.h, TForm 1 (
class TFormi) . public: // User declarations ( ) .
, , , Referee:
public:
//
User d e c l a r a t i o n s
fastcall
TReferee
TFormi(TComponent*
Owner);
Referee;
He fastcaU.
C++Builder, . .
DiceUnit.h TPIayer?
132
-
, ( ) , .
DiceUnit.h Game.h (
TPIayer). :
#inelude
"Game.h"
,
,
.
.
, (
). , C++Builder.
.
1.
(. . 38).
2.
(Name) GameExitltem.
3.
.
V , ! 1!
LesHurtanScoc
L aitCoinputerS aoie
ComotiofSca-e
SarAeFnsh
. 38.
C++Builder GameExitltemClick()
TFormi . ,
.
133
9.
Terminate()
Application ( TApplication). C++Builder
.
, -,
. .
Application~>Terminate();
Application , >.
NewGameltem. ( NewGameltemClick())
NewGame() Referee,
.
. ,
.
(
Game.cpp).
.
Showlnfo()
TFormi. Showlnfof)
DiceUnit.cpp:
// :
void
TForml::Showlnf()
DiceUnit.h ( TForml):
void
134
Showlnf() ;
.
LastDice.
,
lntToStr().
, , , ,
lntToStr().
AnsiString, , , ++
, ,
( = ) , (+) ,
++. , AnsiString
*- ( = ) (!=), +, . , " 123" + "45"
"12345".
, ++
, . , const .
,
, .
.
C++Buitder ,
, .
,
.
1. File New ( > ), New () Header File ( ) (. . 39) .
Filei.h.
2. File Save As
( > ), Text.h ( , ,
).
135
9.
New Items
Elaags
*'*
j
I
ActiveX
j
. '
Report
&4
f irre-'t
j
Oats Modules
{
H-Miei
j
DicePrqeet
I
e x
Bwinett
}
|
ram*
!
1.4
I
Lb
i rary
Package
Projecl Group
Resource DLL
Wizard
Service
Service Application
I'-.-;
. 39.
3. . const . , (int)
:
c o n s t A n s i S t r i n g LASTJDICE_STR =
";
"
, .
,
_STR.
4.
#include
"Text.h"
DiceUnit.cpp, DiceUnit.h.
, C++Builder
(, ). , .
C++Bui4der Integrated Translation Environment.
136
LAST_D!CE
LastValue, Dice (
LastValue Dice.LastValue). Dice ,
TReferee. :
Referee.Dice
LastValue :
Referee.Dice.LastValue
, ++, .
Referee Dice TDice:
Referee.Dice
Dice LastValue.
LAST_DICE_STR
intToStr{) :
LAST_DICE_STR + I n t T o S t r ( R e f e r e e . D i c e . L a s t V a l u e )
?
Caption LastDice, .
.
Las~Dice->Caption = LAST_DICE_STR + I n t T o S t r
( R e f e r e e . D i c e . L a s t V a l u e );
:
c o n s t A n s i S t r i n g HUMAN_CURRENT_STR ";
const AnsiString
" ;
HUMAN_ALL_STR
"
"
c o n s t A n s i S t r i n g COMPUTER_CURRENT_STR =
";
c o n s t A n s i S t r i n g COMPUTER_ALL_STR =
" ;
"
"
ShowlnfoO :
L a s t D i c e - > C a p t i o n = LAST_DICE_STR + I n t T o S t r
( R e f e r e e . D i c e . L a s t V a l u e );
137
9.
LastHumanScore->Caption = HUMAN_CURRENT_STR +
IntToStr( Referee.Human.CurrentScores ) ;
HumanScore->Caption - HUMAN_ALL_STR + IntToStr
( Referee.Human.Scores );
LastComputerScore->Caption = COMPUTER_CURRENT_STR +
IntToStr( Referee.Computer.CurrentScores ) ;
ComputerScore->Caption - COMPUTER_ALL_STR + IntToStr
( Referee.Computer.Scores );
ShowlnfoO ,
.
,
Referee.NewGameO ShowlnfoO -
. TFormi
, :
fastcall
TFormi::TFormi(TComponent*
Owner)
: TForm(Owner)
{
Referee.NewGamef);
Showlnf();
EndGameTestO. TForm 1 DiceUnit.h
ShowlnfoO.
void
EndGameTest f ) ;
-
if , .
AnsiString:
AnsiString
s;
,
.
, .
, ,
, . :
i f ( Referee.Human.Scores >= GAME_FINISH_SCORE )
.
100, s (
Text.h:
c o n s t A n s i S t r i n g HUMAN__WON_STR = " " ;
, :
c o n s t A n s i S t r i n g COMPUTER_WON_STR = "
";
(Human Computer).
, ,
, , ,
, . ++
if:
i f (
else
-1;
-2;
-2 , false.
if :
i f ( Referee.Human.Scores >= GAME_FINISH_SCORE )
{
Referee.Human.WinNum += 1;
S = HUMAN_WON_STR;
139
9.
else
Referee.Computer.WinNum +- 1
S = COMPUTER_WON__STR;
, WinNum TPlayer,
Human Computer,
.
. ++ ++. , , Referee.Human.WinNum ,
:
Referee.Human.WinNum ++;
, (
), ++ .
++ .
, , .
s
, .
:
ShowMessage(s);
TotalScores. s , ,
"8 : 5".
WinNum IntToStrO,
:
s
s = s + ;
140
-
. ++,
+, +- (
). , :
s += ;
s +- " " + IntToStr(Referee.Human.WinNum) + " : " +
IntToStr(Referee.Computer.WinNum);
TotalScores . .
TListBox ListBox
. , , .
, , Items () TListBox.
TStrings ( ,
). Add() ().
Add() ( AnsiString) .
TotalScores Items ,
C++Builder, :
TotalScores->Items->Add(s);
TotalScores
s.
, : , ,
. ,
, , .
, ,
.
NewGameltem. -
141
9.
,
.
,
. , . , ,
, .
// , :
i f { Referee.GameFinish()
// , :
Referee.NewGame{);
// :
Showlnf();
}
, ?
, . ,
, else
, .
Text.h:
c o n s t A n s i S t r i n g GAME_NOT_STOP_STR =
";
"
:
else
ShowMessage(GAME_NOT_STOP_STR);
UseDiceltem . UseDiceltemClick.
? ,
. , ,
,
:
142
if f Referee.GameFinishf) )
ShowMessage(GAME_STOP_STR);
GAME_STOP_STR Text-h:
const AnsiString GAME_5TOP_STR = " ";
?
return. ,
UseDiceltemClick(), ,
void (, , ). return
, . :
return;
, .
, , (
, void),
return
.
:
i f { Referee.GameFinish() )
{
ShowMessage(GAME_STOP_STR);
return;
}
, ,
. , ShowMessage() ,
:
c o n s t A n s i S t r i n g ONE_STR =
" " ;
: Text.h.
,
, .
143
9.
:
// ...
i f f Referee.Dice.GetDiceValue()
//
ShowMessage(ONE_STR);
//
// ( )
Referee.ComputerMove();
}
Referee.Human.CurrentScores (
Referee. Dice. LastValue):
// :
e l s e Referee.Human.CurrentScores +=
Referee.Dice,LastValue;
:
Showlnf();
//
EndGameTest(); // ,
Nextltem .
, , ,
, . , , , , ,
, , :
Referee.Human.Scores = Referee.Human.CurrentScores;
Referee.ComputerMove();
Showlnfo();
EndGameTest()
.
,
.
144
-
.
1.
2.
Events ().
3.
OnClick ,
. , .
4.
.
1 NewGameltemClick ( ).
2 GameExitltemGick ().
3 UseDiceltemClick ( ).
4 NextltemClicK ( ).
Hint . , ,
. ,
, ShowHint true.
, , . -
,
.
All shown
,
(. . 40).
. , , ,
, .
. 3 . ( 5), 145
9.
fT-Hlpd E)
* & 1
0
W H D M K 0
3
0
. 40.
. 8,
, ,
. ( 4),
, .
;)
, .
? 4. , , ,
12(8+4), 4. , .
.
C++Builder.
.
. ,
.
,
, 8 , .
C++Builder NextItemClick(), .
F5
.
, ,
(. . 41).
Referee.Human.Score Referee.Human.CurrentScore,
, , 8 4.
146
, , , ,
.
DiceUnit
DfceLJnU of I OtceProtecLcpp j Game }
void
if ( Referep.'JwneFinish ()
ShovHessaee (GAItE_3TOP_-3TR) ;
return;
Kefieree.ComputerHove();
Ehovlnio!);
EndGeuneTeat ( ) ;
116: 1
. 41.
,
, ,
. , ,
, F8. , ,
.
Referee.Human.Scores,
, 4 ( 12),
ShowlnfoO .
, .
F9.
, . ,
Referee.Human.CurrentScores Referee. Hu man. Scores.
. = +=:
Referee.Human.Scores
+= R e f e r e e . H u m a n . C u r r e n t S c o r e s ;
, ? .
147
9.
, CTRL+F2, ,
.
12. .
F8 .
F7 , , , , .
,
Referee.ComputerMove();
F7 ComputerMovef).
, NextItemQick().
, , ,
, .
, ?
? ?
, , , , , .
?
, , . randomQ.
. , , , .
.
, , . , C++Builder
randomizeO,
,
random() . randomizeO , :
148
'
randomize();
Referee.NewGame();
Showlnf();
DiceUnit.cpp :
#inelude < s t d l i b . h >
#include <time.h>
. .
, ,
, , . ,
.
.
. ,
ComputerMoveO TReferee .
, ,
: , 20
, (
).
,
, .
,
. . ?
. ++ ( ),
( ) . :
149
9.
for( -1; -; -2 )
-__~;
.
1. 1.
2. () (false),
.
3. ____6 .
4. 2.
5. 2.
, , , , . 1
, .
-1 . .
, ,
.
.
2 .
.
? , :
i n t i ; // -
f or ( i = 1; //
// 1
i <= 5; // ,
// i 5
i ++ ) / /
// 1
{
// ,
150
?
, . (
) , . , , . .
, 20 ( ) , .
:
// , . . .
i f l Dice.GetDiceValueO
!= 1 )
//
C o m p u t e r . C u r r e n t S c o r e s += D i c e . L a s t V a l u e ;
, ,
:
e l s e C o m p u t e r . C u r r e n t S c o r e s = 0;
? , Computer.CurrentScores
, ( , , ),
, .
, , .
for,
break ( :
break;
break,
, for. :
else
Computer.CurrentScores = 0;
break;
151
9.
. ,
20 , ,
, ,
:
// 20 ,
i f f Computer.CurrentScores >= 20 )
//
break;
ComputerMove() :
v o i d TReferee::ComputerMove()
{
int i ;
Computer.CurrentScores - 0;
for( i = 1; i <= 5; i ++ )
{
if ( Dice.GetDiceValueO != 1 )
Computer.CurrentScores += Dice.LastValue;
else
{
Computer.CurrentScores = 0;
break;
}
if( Computer.CurrentScores >= 20 )
break;
}
Computer.Scores += Computer.CurrentScores;
Human.CurrentScores - 0;
}
.
, !
for , .
152
f o r ( ; i < 5; i ++ )
( )
for( i = 1;
i < 5;
i
, :
for( i = 1; i < 5;
i ++;
:
f o r t i = 1; ; i ++ )
,
true,
, break.
.
true, .
Windows.
for. ,
:
for(;;)
{
// ,
break
}
. ,
, for,
, break.
100 ,
.
153
9.
, . , .
File New Form ( ).
Form2.
,
, .
.
InputForrn
( Name),
(
Caption).
Save All
ILJnit.cpp.
Input 100 ( Text), -
Cancel ().
, C++Builder Additional ()
BitBtn ( ), TBitBtn.
.
Kind ( ) bkOk
( ), bkCancel.
.
.
& Pltem ( Name ). .
C++Builder ,
InputForm.
JBi'Bhi TctBtn
Fropeftw j Ettrtt (
1 Km)
bkCK
[ L^out
bkCc
lse *
Ufi
bkH-sm
i'
1
MrtaHesdt gno e
Home
1
bkfiet'u
-\
Talse""
Al shown
, .
154
( return?)
, ,
, ( ) .
Referee.GameFinish().
,
. ?
++ && ||,
,
! (), ,
,
. ,
true, , :
!
Referee.GaraeFinish{)
Referee.GameFinish() ( , false),
!, false true.
!
booL Itrue false, Ifalse true.
( ) ,
Show() :
InputForm->Show() ;
InputForm ( )
DiceUnit.cpp, 'Unit.h:
tinclude
"iunit.h"
,
. ,
. ,
, , , .
, , (
, , . ).
155
9.
C++Builder Show() ShowModalQ (
):
InputForm->ShowModal();
InputForm , .
. ,
BorderStyle ( ) InputForm bsDialog
( ).
, ? ShowModal()
mrOk mrCancel. , :
//
i f ( lnputForm->ShowModal()
== mrOk )
Input (, 50 1000).
, ,
input:
// InputForm :
i f ( InputForm->ShowModal()
== mrOk )
int input;
//
? GAME_FINISH_SCORE, .
, , , ,
- .
156
,
.
. ( ),
. . ,
, . , ,
, . , , ,
.
,
, , .
GAME_FINISH_SCORE. Game.h ,
TReferee :
int
GAME_FINISH_SCORE;
, , ,
. TReferee
:
GAME_FINISH_SCORE = 100;
,
i f ( R e f e r e e . H u m a n . S c o r e s >= GAME_FINISH_SCORE )
Undefined symbol "GAME__FINISH_SCORE"
( GAME_FINISH_SCORE ).
, GAME_FINISH_SCORE
( ) ,
Referee:
Referee.GAME FINISH SCORE
157
9.
i f f Referee.Human.Scores >= Referee.GAME_FINISH__SCORE )
, InputForm
- 100, ,
. , . ,
( GameFinish),
Showlnfo() :
GameFinish~>Caption = POROG_STR + I n t T o S t r
(Referee.GAME_FINISH_SCORE );
POROG_STR , , Text.h:
c o n s t A n s i S t r i n g POROG_STR = " " ;
Referee.GAME_FINISH_SCORE
Input InputForm, PltemClick() (
) Text input , :
InputForm->Input->Text =
IntToStr{Referee.GAME_FINISH_SCORE);
,
Referee.GAME_F!NISH_SCORE.
Referee.GameFinish()
Referee.GAME_FINISH_SCORE,
, , .
i f ( i n p u t >= 50 && i n p u t <= 1000 )
{
Referee.GAME_FINISH_SCORE = i n p u t ;
Referee.NewGame();
Showlnfo();
}
, input
, ,
:
else
158
ShowMessage (BAD_NUMBER_STR) ;
.
.
.
,
if. , , , :
// ,
if( InputForm->ShowModal() !* mrOk ) return;
int inputinput = StrToInt( InputForm->Input->Text );
if( input >= 50 && input <= 1000 )
{
Referee.GAME_FINISH_SCORE - input;
Referee.NewGame();
Showlnfo();
}
elseShowMessage(BAD_NUMBER_STR);
if , .
, ,
( ) (
,
). Formi Position () poScreenCenter .
( Caption)
.
,
, C++Builder.
.
159
9.
1.
Project Options ( ).
2.
Application ().
Windows
. , ,
C++Builder
( ,
). \lmages
\Buttons, \lcons. .
factory .
ProjtJcl Option1.
| Lrk I Artvanced Ljnjtei J Diecto'ies/
Vascninfo j e4ckages j 'stir- ] CORBA j
Fein Apjrfcaaor [ CcncFer | Adarce Conwa
ir
1*.
Help file.
Puc. 42.
. Title
, .
. , ,
.
, , , . , ,
. , -
160
,
. , ( Run-Time Libraries, RTL,
) .
, C++Builder.
RTL , ,
, . , ,
(
36 ).
O+Builder ( ) Debug
Release. .
.
1.
Project > Options ( ).
2. Compiler ().
3. Full debug ( ) Release () , .
4. (Release) , RTL Linker (
) Use dynamic RTL ( RTL).
.
,
.
Advanced Compiler ( ) Instruction set ( ).
386,486, Pentium Pentium Pro. ,
,
. . ,
, .
9.
5. Project Build (
). , Ctrl+F9 () ,
,
.
Build () .
Release Full debug
, ( , . .) .
RTL 91
, ,
Windows 9x.
++
,
, . .
C++Builder,
. .
162
10.
?
,
C++Builder
? , , . ,
,
, , . - , .
, ( ),
, , , 2,..., , N-
, , ,
iV .
, ? , , , , ,
.
++ .
.
,
.
163
10.
. :
_ [ _ ]
, , :
i n t x l , 2,
/* ... */ 2 0;
:
int
[20];
,
20 int. ,
(), ,
+-, int.
++ , .
0, 1,
19. , , .
. ( )
( ) . ,
, , ( ++)
,
. , , 1 ( ), 0. 1 . . ,
, , .
, , .
164
, ,
++ .
/^gk
41
, :
[0]
:
[9]
():
[19]
:
1 = 5;
++
. ,
, . :
l e n = 20;
int x [ l e n ] ;
// !
165
10.
++, , ,
, . , -
,
:
TDice d i c e s [ 1 0 0 ] ;
, { ; ) Dice TDice,
GetDiceValueO .:
Dice.GetDiceValuef)
, , dices?
,
:
d i c e s [ 4 9 ] .GetDiceValueO
49, ++, , ( ).
C++Builder . ,
AnsiString () ()
, , ,
.
:
AnsiString
s;
s - "12345";
s[0] "1", a s[4] = "5".
C++BuiLder , ,
, , [](
). s[0]
AnsiString, . .
166
.
, . , ,
. , : . .
,
++? . ,
,
1024 256 .
:
int
excel
[256][1024];
[100][100]
excel :
int
excel
[1024][256];
(1024 256 ).
, .
, . ,
, X, Y.
(, ) 64 ( X)
128 ( Y) :
int Map [64] [128];
X, Y:
[-4][+1]
.
167
10.
[][]
, ,
.
, , .
,
:
int
World[20][30][10];
++ . , - ( ,
, ). , , .
.
int
x[20][2];
:
[10]
[1]
, , :
[1]
[10]
, , : , 10.
- ( 2*20 -40 ,
1*10 = 10- ,
). ,
( ,
, ).
, . ++ :
int
x[10] ;
= [50];
168
,
.
50- , 10
( , 10*4 int 4 32 ),
50 , ,
, int.
, , :
i n t x[10] ;
[50] = ;
, 50 (50*4 )
. , . ,
- , , , , , , Windows.
++
. .
, C++Builder 5
.
CodeGuard ( ).
, .
CodeGuard Configuration
File Help
[Preferences % Offons | Function Options j Ignored Modules j
is Enacted
J2
*
:
Slacjj^frequency
|7 Statistics
p" Resowcal,9*s
" SendtafiUpulDeDiigStrins
fiepeated
Eras
Eua Message Bo
(7 Enable
epfion
jCodeGuard Error
Message _ jCodeJuard detected error(5] in the program A log hie Mill be created
Cancel
1 6 9
10.
, (
Project Options, CodeGuard) , , ,
.
CodeGuard, Tools CodeGuard Configuration ( > CodeGuard) ,
. , (, Enable ()
"CodeGuard is Enabled").
Code Guard
, , , : [ 5 0 ] = ; .
, . ,
int
x[100];
++:
i n t i,
sum;
sum - 0;
// i -
//
?
. -, .
170
-, C++Builder,
, , ,
( ). -,
, - (shareware) .
- , ,
C++Builder ( File
Close All), ( File New Application).
, ++ MainUnit.cpp, a
WellProject (Well - ).
.
1. 52 .
2. .
3. 4 11 .
4. .
5. .
6. 60 () .
7. () . .
8. , .
9. , ,
.
10. , .
11. 104 .
171
10.
12.
( , , ,
. .). , .
.
13.
( ,
, . .).
14. ,
5 . , .
15. 5 .
16. ,
, ,
4 , .
17. 3, 2
.
18. , ,
.
, . 36 , .
?
, , 52 , .
Microsoft, cards.dll. \Windows\System.
cards.dll , , .
,
Windows. ,
. , . , cards.dll.
72
, - . Workshop,
C++Builder.
( setup.exe \Workshop\disk1)
( Resource Workshop),
File Open Project ( ),
FileType ( ) DLL, VBX, CPL Library,
cards.dll .
BITMAP ( ) cards.dll
. 1 52 , 53 58 , 678 684 .
(. . 43).
Resource Workshop - cards,dlt
fcNp
id
Ready
. 43. DLL
. .
1. .
2. .
3. Save resource as (
).
4. .bmp.
,
, 58,
173
10.
53
53.bmp,
( 54.bmp).
. ,
.
Color () Formi
clGreen.
Piepeies [Event
BorierVaJfr
Form 1
( Caption).
,
.
, WindowState ( )
wsMaximized.
.;
CtenfHeTghf
1 Co
i -
,233
Black
Warcon
A oil
Navy
Purple
Teal
I ^...jy^Gray
I
- J
cards.dll 71x96 .
,
800x600 . ,
.
MainMenu
,
,
.
, ImageList ( ) Win32.
, .
""
ImageList
. , , ,
, .
ImageList .
1. ImageList .
2. ( )
54 (52 , ).
j Litt 'I'-ags-S
zi
Fropertw j TenS*|
; AtocBv
QetWhta
|
All shown
3. BkColor clWhite (
).
4. DrawingStyle ( ) dsNormal ().
5. Height ( ) 96 ( cards.dll).
6. imageType ( ) itlmage ().
7. Masked (
, ) false ().
175
10.
8. Name ( ) IList (
).
9. Width ( ) 71 ( cards.dll, ).
10. ImageList.
(. . 44).
h-oim1->IList Imagei ist
- Selected
i? O.h
Puc. 44.
Add ()
( cards.dll .bmp) . Images (. . 45).
Forml->IList ImageList
^elected Irna
-aw
r
V
mage's --
- t-i
j d i
gear
. 45.
,
I.bmp, 2.bmp, 52- 52.bmp.
176
, .
,
0 ( ),
Selected Image ( ).
,
. , , .
Transparent Color ( )
cINone ( ),
Fill Color ( ) cINone, Options () Crop ( , ).
,
.
, .
, , .
_, , ( TCard). , ,
, .
( )
(, 52), ,
, ,
( ),
, .
,
.
177
10.
. , ( Project > Add To Project).
( ) File New ( >
) Unit (). CardUnit.cpp.
CardUnit.h
. :
class TCard
{
private:
int
Suit; //
int
Value; // 0- , 1- 2 , 2- 3, ..., 10- ,
11- , 12-
public:
void
int
GetSuit();
int
GetValue();
bool is;
};
Suit (,
: 0 , 1 , 2 , 3 ). Value (0 , 1 ,..., 9 ,..., 12 ).
.
52
TCard, , . Suit Value
protected , TCard
. GetSuit() GetValuef). InitQ.
178
Is (public)
. . Is
true, .
:
class
TPack
private:
TCard Cards[PACKJTOTAL];
public:
TPack();
void
Shufflef);
, () (
, )
(), , ,
, (, 4 ,
8 , ),
:
179
10.
c o n s t SUIT_NUM - 4;
//
c o n s t VALUE_NUM = 1 3 ;
//
?
, .
c o n s t PACK_LEN = VALUE_NUM*SUIT_NUM;
,
.
, , ,
,
.
, . :
c o n s t PACK__NUM = 2;
//
c o n s t PACK_TOTAL = PACK_NUM*PACK_LEN;
//
:
const KING = 12;
const
//
- 0; //
,
.
CardUnit.h, TCard.
CardUnit.cpp.
InitQ.
Is true ().
void
TCard::Init(int
Suit ~ suit;
Value = value;
180
suit,
int
value)
Is = true;
}
, Suit Value, ;
int TCard::GetSuitf) { return S u i t ; }
i n t TCard::GetValuef) { return Value; }
( 0 51, 52 103).
, ,
, ,
, . ( 0 3),
( 0 12). 4*13 - 52 , .
:
int
suit,
value;
:
for( s u i t = 0; s u i t < SUIT_NUM; s u i t ++ )
, ,
suit :
for( s u i t = 0; s u i t < SUIT_NUM; s u i t ++ )
{
:
for( s u i t = 0; s u i t < SUIT_NUM; s u i t + +
181
10.
for( value = 0; value < VALUE_NUM; value ++
// suit
value
.
, ,
, .
, , ,
(52 ):
f o r ( pack_num = 0; pack_num < PACK_NUM; pack_num ++ )
f o r ( s u i t = 0; s u i t < SUIT_NUM; s u i t ++ )
f o r ( v a l u e = 0; v a l u e < VALUE_NUM; v a l u e ++ )
{
// suit
// value
}
, - pack_num .
, ? Cards,
card_num,
, , .
:
::()
{
int card_num, pack_num,
card_num =
value;
0;
for(pack_num for(
suit,
0;
suit = 0;
p a c k _ n u m < PACK_NUM;
suit < SUIT_NUM;
182
p a c k _ n u m + +)
suit ++ )
v a l u e ++
//
Cards[card_num].Init(suit,
value)
//
card_num ++ ,-
Cards 104 .
, , ,
, .
.
,
.
,
.
( ) (104-) . ,
. ,
, 104, , 1000.
.
void
TPack::Shuffle{)
int n, rnd;
TCard card;
// " "
f o r ! n = 0; n < PACK_TOTAL; n ++ )
C a r d s [ n ] . I s = true;
183
10.
// PACK_TOTAL
f o r ( n = 1; n <^ PACK_TOTAL; n ++ )
{
// 0
// PACK_TOTAL-1
rnd = random(PACK_TOTAL);
//
card = Cards[PACK_TOTAL-1];
// rnd
Cards[PACK_TOTAL-1] = Cards[rnd];
// rnd ,
// :
Cards[rnd] - card;
random() <stdLib.h>,
CardUmt.cpp
#include <stdlib.h>
, (TCard). = ++ .
c a r d = Cards[PACK_TOTAL-1];
, Cards[PACK_TOTAL-1], , card. , < ==,
, .
, <<=, .
184
.
Cards, , , Is
false.
. , 0. 1 . . , ,
Cards, , Is
. Is, true (
), , ,
GetCard() .
, , Is, true, . ,
GetCard() - . ,
.
, .
, GetCard() (
) , , return, , , . ,
, , TCard. Function should return a value (
), .
TCard
T P a c k : : G e t C a r d f)
int
i ;
185
10.
ShowMessage(" ");
return Cards[ 0 ] ;
}
,
.
TCard T P a c k : : G e t I n d e x C a r d ( i n t i)
return C a r d s [ i ] ;
i Cards.
, Cards,
protected, .
, ,
Cards Is,
false ( ),
. Cards
(, 0 ). Cards ,
, Is true, ( ,
) .
Cards , , ,
.
v o i d TPack::AddCard(TCard
card)
int i ;
for( i = 0; i < PACK_TOTAL; i ++ )
if( !Cards[i].Is &&
Cards[i].GetValue() = = card.GetValue() &&
Cards[i].GetSuit() == card.GetSuit() )
{
Cards[i].Is = true;
return;
}
ShowMessage("He ");
186
, .
Cards, , ( Is true), true,
. , ,
false.
bool
TPack::IsCard()
int i ;
f o r ( i - 0; i < PACK_TOTAL; i ++ )
iff C a r d s [ i ] . I s ) return true;
return f a l s e ;
}
,
CardUnit.cpp CardUnit.h,
, .
.
,
, .
;
.
, , (, 100 15 )
( 20),
.
( , ). , ,
, ,
.
187
10.
,
. , : , , , . ( Well
TCard), ,
:
TCard Well
[5] ;
? , . , Well
5:
TCard
Well
[5][5];
,
, Well , - , ,
.
,
104 (_1_).
PACKJTOTAL:
TCard Well
104 ,
5*5*104 , 25 . .
, ? .
5*5*104 = 2600 . TCard int 4 , booL (1 ).
200*(2*4 + 1) = 23400 ,
23 . 64 ! , .
Well TFrom 1
Formi, MainUnit.h, public-.
188
Well , ,
Pack:
TPack Pack;
TFormi TCard
TPack, MainUnit.cpp
MainUnit.h CardUnit.h:
#include
"CardUnit.h"
tinclude
"MainUnit.h"
, ,
( 14-17)
. Cycle:
int
Cycle;
? , ,
, /
, , . ,
- .
IList
( , 0 51) .
:
int
GetPacklmagelndexf) ;
IList ,
int
Getlmagelndex(int
line,
int
pos);
, pos
line ( , : 0 , i ,
2 , 3 , 4 ).
MainUnit.h :
c o n s t BACK_NUM = PACK_LEN;
c o n s t NONE^NUM = PACK_LEN+1;
BACK_NUM, 52, ,
NONE NUM .
189
10.
GetPacklmagelndexO , , , ,
( Is true),
IList, :
*13 +
, IList
, ( ) .
, NONE_NUM,
, .
int
int
TForml::GetPacklmagelndex()
i;
for(
1 = 0 ;
i < PACK_TOTAL;
i ++
i f ( Pack.GetlndexCard(i)-Is )
return Pack.GetlndexCard(i).GetSuit*VALUE_NUM +
Pack.GetlndexCard(i).GetValueO;
return NONEJSJUM;
GetlmagelndexQ .
, ,
Well. ,
Well[line][pos]
. :
for( i = PACK_TOTAL-1;
i >= 0;
i )
i 103 ( 104
, ), 0 >>.
int
TForml::GetImageIndex(int
int
i;
f o r ( i = PACK_TOTAL-1;
i >= 0;
line,
int
pos)
i )
190
Well[line][pos][i].GetValue();
r e t u r n NONE_NIM;
}
pos line
TCard G e t C a r d f i n t
line,
i n t pos,
bool view);
, ( view
true).
.
TCard T F o r m l : : G e t C a r d f i n t
line,
i n t pos,
b o o l view)
{
int
i ;
// :
iff Iview ) Well[line] [pos] [i].Is = false;
return Well[line][pos][i];
ShowMessage(" " ) ;
return Well[0][0][0];
}
Getlmagelndex()
, (_1_ 1) ,
. , GetCardQ ,
, .
:
v o i d AddCardfint l i n e ,
i n t pos,
bool pack,
TCard c a r d ) ;
10.
, (
) , Is false
( ), () . Is , ,
true .
void TFormi::AddCard(int l i n e , int pos, bool pack,
TCard card)
{
IPack.lsCardO
return;
int i;
forf i = 0; i < PACK_TOTAL; i ++ )
if(
! Well[line][pos][i].Is )
{
i f ( pack ) w e l l t l i n e ] [ p o s ] [ i ] = Pack.GetCard();
else
.
.
, , TFormi MainUnit.h:
void MoveCard(int l i n e l , int p o s l , int I i n e 2 , int
pos2);
MainUnit.cpp:
void TForrnl: :MoveCard(int l i n e l , int p o s l , int Iine2 ,
int pos2)
{
TCard card;
card = GetCard(linel,
AddCard(line2,
192
pos2,
posl,
false,
false) ;
card);
. pos1 linei
GetCard{) ( view false),
card,
AddCard() pos2 Iine2 (
false).
, , MoveCard(),
. :
v o i d NewGame () ;
(Pack.Shuffle()), Cycle
( ) 5. Is
Well false ( ).
.
4 11 .
AddCard(). 0 ( 0
), (4 , 0 3),
true ( ), card,
.
,
.
MoveCardO 0 0-3 0-3 2 ().
void
TForml::NewGame()
int
i,
j,
p;
TCard card;
card.lnit(0,0);
Pack.Shuffle();
Cycle = 5;
7 . 1064
193
10.
// :
for( i = 0; i < 5; i ++ )
for( j = 0; j < 5; j ++ )
for( p = 0; p < PACKJTOTAL; p ++ )
W e l l [ i ] [ j ] [ p ] . i s = false;
// 4 11 :
for{ i = 0;
i < 4;
i ++ )
0, 2,
0);
MoveCard(0,
1,
1);
2,
MoveCard(0, 2, 2, 2 ) ;
MoveCard(0,
3,
2,
3);
,
. ShowAII().
void
ShowAll{);
IList,
. Draw(),
IList .
Draw() ( TCanvas).
, , ,
. . , ,
. C++Builder , , .
194
.
TCanvas ( ) C++Builder Canvas.
Draw() ( ,
X , ,
, , ), ,
. ,
.
IList.
Getlmagelndex().
true. , , ( false,
, ).
,
,
, .
MainUnit.cpp,
. , , : X LEFT, . :
( 1). , - () LEFT32, -
13.
//
c o n s t CARD_WIDTH - 7 1 ;
c o n s t CARD_HEIGHT = 96;
//
const LEFT11 = 314;
const = 232;
const LEFT12 = 402;
const TOP12 = 288;
195
10.
const
const
const
const
LEFT13 = LEFT11;
TOP13 = 334;
LEFT14 = 226;
TOP14 = TOP12;
//
const LEFT21 = LEFT11;
const TOP21 = 128;
const LEFT22 = 490;
const TOP22 = TOP12;
const LEFT23 = LEFT11;
const TOP23 = 438;
const LEFT24 = 138;
const T0P24 = TOP12;
//
const LEFT31 = LEFT14;
const TOP31 = 184;
const LEFT32 = LEFT12;
const TOP32 = TOP31;
const LEFT33 = LEFT32;
const TOP33 = 400;
const LEFT34 = LEFT31;
const TOP34 = TOP33;
//
const MAIN_LEFT = 24;
const MAIN_TOP = 10;
//
const INV_LEFT = MAIN_LEFT;
const INV_TOP = MAIN_TOP + CARD_HEIGHT + 20;
196
//
LEFTll,TOPll,
GetImageIndex(0,0),
:
void
TForml::ShowAl1()
IList->Draw(Canvas,
LEFTll,,
Getlmagelndex(0,0),
IList->Draw(Canvas,
true);
LEFT12,TOP12,
Getlmagelndex(0,1),
IList->Draw(Canvas,
true);
LEFT13,TOP13,
Getlmagelndex(0,2),
IList->Draw(Canvas,
LEFT14,TOP14,
Getlmagelndex(0,3) ,
IList->Draw(Canvas,
true);
LEFT21,TOP21,
Getlmagelndex(2,0),
IList->Draw(Canvas,
true);
LEFT2 2,TOP2 2 ,
GetImagelndex(2,1),
IList->Draw{Canvas,
true);
LEFT2 3,TOP2 3 ,
GetImagelndex(2,2),
IList->Draw(Canvas,
true);
LEFT24,TOP24,
Getlmagelndex(2,3),
true);
true);
197
10.
IList->Draw(Canvas, LEFT31,1, GetImagelndex(1,0),
true);
IList->Draw(Canvas, LEFT32 ,TOP32 , Getlmagelndexd, 1) ,
true) ,IList->Draw(Canvas, LEFT33,TOP33, Getlmagelndex(1,2),
true);
IList->Draw(Canvas, LEFT34 ,TOP34 , Getlmagelndexd , 3) ,
true);
IList->Draw(Canvas, LEFT41,TOP41, Getlmagelndex(4,0
true);
IList->Draw(Canvas, LEFT41+SHIFT5,TOP41,
Getlmagelndex(4,1), true);
IList->Draw(Canvas, LEFT41+SHIFT5*2,TOP41,
Getlmagelndex{4,2), true);
IList->Draw{Canvas, LEFT41+SHIFT5*3,T0P41,
Getlmagelndex(4,3), true);
IList->Draw(Canvas, LEFT41+SHIFT5*4,TOP41,
Getlmagelndex(4,4}, true);
//
if(
Pack.IsCardO
MAIN_LEFT,MAIN_TOP,
//
if(
IsCards(3,0)
IList->Draw(Canvas, INV_LEFT,INV_TOP,
Getlmagelndex(3,0) , true);
else IList->Draw(Canvas,
true);
198
INV_LEFT,INV_TOP, NONE_NUM,
:
,
;
,
.
ShowAll(), , - , ,
: ,
, ,
. . , - . ? !
-2
, , C++Builder OnPaint().
, , .
Form 1, Events
OnPaint.
C++Builder FormPaintO,
, , . , , FormPaintO
ShowAII().
void
f a s t c a l l TForml::FormPaint(TObject
*Sender}
{
ShowAllO ;
}
.
OnPaintf) ,
.
, ,
, Caption.
199
10.
?
ShowAll()
lsCarcls(). , :
bool I s C a r d s ( i n t l i n e , i n t p o s ) ;
true, pos line
. :
bool T F o r m l : : I s C a r d s f i n t
line,
i n t pos)
int
i ;
200
int X,
int Y)
*Sender,
,
( , , - !),
. .
TMouseButton
Button
i n t X, i n t Y
, , , , ,
.
.
FormMouseUpO
. , , , .
TShiftState
Shift
,
CTRL, ALT SHIFT. ,
Shift ssAlt, ssShift ssCtrl.
ssDouble , .
TShiftState Contains(), ,
,
( TShiftState), . , ,
CTRL SHIFT, :
S h i f t . C o n t a i n s ( s s D o u b l e ) && S h i f t . C o n t a i n s ( s s C t r l )
Shift.Contains(ssShift)
&&
, FormMouseUpO
, , . ( C++Builder OnMouseDown)
( OnMouseUp). -
201
10.
, , , Windows
FormMouseDown(). FormMouseUpO
, .
FormMouseDown()
, , ,
.
, ,
, . TForm! :
i n t Line,
Pos;
TForml::TForml(TComponent*
Owner)
: TForm(Owner)
{
Line = - 1 ;
}
, , ,
. ,
Line (-1) (
) return .
,
. . , ,
0 0, , ,
, , (LEFT11, 11),
202
(LEFT11+CARD_WIDTH,
TOP11+CARD_HEIGHT):
if { X > LEFT11 &'& X < LEFT11+CARD_WIDTH &&
Y > ScSc Y < TOP11+CARD_HEIGHT )
{ line = 0; pos = 0 ; }
line top.
18. :
if( X > LEFT12 && X < LEFT12+CARD_WIDTH &&
Y > 12 && Y < TOP12+CARD__HEIGHT )
{ line = 0; pos = 1 ; }
. ., , , .
, .
, 18 (18 ), 4 (
):
int
? ,
++ , ,
. , ,
,
( ), :
i n t Coords [18] [4]" =
{LEFT11,,0,0} ,
//
{LEFT12,TOP12,0,1},{LEFT13,TOP13,0,2},{LEFT14,14,
0,3},
203
10.
{LEFT21,21,2,0},{LEFT22,22,2,1},{LEFT23,23,
2,2},{LEFT24,TOP24,2,3},
{LEFT31,TOP31,1,0},{LEFT32,TOP32,1,1},{LEFT3 3,,
1,2},{LEFT34,TOP3 4 , 1 , 3 } ,
//
{LEFT41,TOP41,4,0},{LEFT41+SHIFT5,41,4,1},
{LEFT41+SHIFT5*2,41,4,2},
{LEFT41+SHIFT5*3,TOP41,4,3},{LEFT41+SHIFT5*4,
TOP41,4,4},
{I1W_LEFT, INV_TOP, 3 , 0 }
//
};
41, SHIFT5, + 10 .
Coords . :
c o n s t i n t C o o r d s [ 1 8 ] [4]
= // ...
Coords MainUnit.cpp
.
Coords ,
- .
return.
- ( Line 1),
,
(), .
, Line Pos
.
, Line Pos (
, ),
, Pos Line
pos line, .
204
, ,
.
if ( X > MAIJSLJLEFT && X < MAIN_LEFT+CARD_WIDTH &&
Y > MAIN_TOP && Y < MAIN_TOP+CARD_HEIGHT )
,
Cycle.
, ,
.
, Cycle. .
void
fastcall
TForml::FormMouseUp(TObject
*Sender,
TMouseButton Button,
TShiftState Shift,
int X,
int Y)
{
int
i,
line,
pos;
TCard card;
card.Init(0,0);
//
i f ( Button == mbRight )
{
Line = - 1 ;
return;
// // (4-
// )
if( X > MAIN_LEFT && X < MAIN_LEFT+CARD_WIDTH &
Y > MAIN_TOP && Y < MAIN_TOP+CARD_HEIGHT )
{
int j, k;
205
10.
if( !Pack.lsCard() ) //
// :
{
//
for{ j - 4; j >= 0; j - )
for{ k = 0; k < PACK_TOTAL; k ++ )
if( Well[4][j][k].Is )
{
// :
Well[4][j][k].Is = false;
//
Pack.AddCard(Well[4][j][k]);
}
Cycle -;
// "Cycle"
// (4- )
for{ j = 0 ; j < Cycle; j ++ )
AddCard(4, j , true, card);
ShowAlK) ;
return;
206
// , :
line = -1;
for( i = 0; i < 18; i ++ )
i f { X > Coords [ i , 0 ] EcSc X < Coords [i,0]+CARD_WIDTH
ScSc
Y > Coords[i,l] && Y < Coords[i,1]+CARD_HEIGHT
)
{
line = Coords[i,2];
pos = Coords[i,3];
// - :
break;
}
// ,
:
if( line == -1 ) return;
//
if( Line == -1 && IsCards(line,pos) && line i= 1 )
{
Line = line;
Pos = pos;
return;
//
if( Line l= -I && (Line != line II Pos != pos)
CanMoveTo(1ine,pos) )
{
MoveCard{Line, Pos, line, pos);
ShowAlK) ;
207
10.
//
// , :
Line = - 1 ;
}
PACK_USED_STR
Text.h, :
const AnsiString PACK__USED_STR = "
";
MainUnit.cpp:
#include "Text.h"
#include "CardUnit.h"
#include "MainUnit.h"
CanMoveToO, .
, FormMouseUp() ,
, . - , -
FormMouseUp()
, , , .
CanMoveToO .
FormMouseUpO , CanMoveToO .
CanMoveToO TFormi :
bool
CanMoveTo(int
line,
int pos);
line (
) pos ( ), . , ,
Line Pos TFormi.
208
bool true,
.
CanMoveToO
. ,
( ), ,
.
bool
TForml::CanMoveTo(int
line,
int
pos)
// :
i f ; l i n e == 1 )
{
// :
//
if( !IsCards(I,pos) &&
//
GetCard(Line,Pos,true).GetValuef) -- KING &&
//
Line != 1 )
{
/*
: */
int king__suit, i;
//
king_suit = GetCard(Line,Pos,true).GetSuit();
/* ,
: */
for( i = 0; i < SUIT_NUM; i ++ )
209
10.
if{ IsCards(l,i) &&
GetCard(l,i,true).GetSuit{) == king_suit )
// , false
return false;
//
return true;
// :
//
if( Line 1= 1 &&
//
IsCards(l,pos) &&
//
GetCard(Line,Pos,true).GetSuit() ==
GetCard(l,pos,true).GetSuit() &&
//
OnBig(Line,Pos,1,pos,true) )
//
return true;
// :
if( line == 2 )
{
// :
//
210
if( Line == 0 &&
//
pos == Pos &&
//
!IsCards(2,Pos) )
//
return true;
// :
// ,
// :
if( (Line = = 0 1 1 Line == 2 I I Line == 4) &&
//
IsCards(2,pos) &&
//
GetCard(Line,Pos,true) .GetSuitO = =
GetCard (2 , pos , true) . GetSuit () &&
// 1
OnBig(Line,Pos,2,pos,false) )
//
return true;
// :
iff iine == 3 )
211
10.
// :
//
if( HsCards (3,0) &&
/ /
GetCard(Line,Pos,true).GetValuef) == ACE
//
return true;
// :
// ,
// :
if( (Line = = 0 | | Line == 2 I I Line == 4) &&
//
IsCards(3,pos} &&
//
GetCard(Line,Pos,true).GetSuit() ==
GetCard(3 ,pos, true) .GetSuitO &&
/ / 1
OnBig(Line,Pos,3,pos,false) )
//
return true,-
//
return false,-
212
CanMoveTo() OnBig(), ,
. , ,
CanMoveTo(), ,
.
,
. , ++,
, ,
, ,
. . , , .
,
.
OnBigO :
bool OnBigfint
on_big);
11,
int pi,
int
12,
i n t p2,
bool
, .
on_big, true,
.
.
bool TForml::OnBig(int
bool on_big)
11,
int pi,
int
12,
i n t p2,
i f ( on_big &&
G e t C a r d ( l l , p l , t r u e ) .GetValueO = =
GetCard(12,p2,true).GetValueO-1
II
G e t C a r d ( l l , p i , t r u e ) . G e t V a l u e O == KING &&
GetCard (12, p2 , t r u e ) .GetValueO == ACE )
return
true;
i f ( !on_big &
&
213
10.
GetCard(ll,pl,true).GetValueO =
GetCard(12,p2,true).GetValue()+1
GetCard(11,pi,true).GetValueO == ACE &&
GetCard(12,p2,true).GetValueO == KING )
return true;
return false, , , .
.
, , .
GameFin():
v o i d GameFin() ;
, , ,
, 1- () .
GAME_WIN_STR: Text.h:
c o n s t A n s i S t r i n g GAME_WIN_STR =
";
"
,
void TForml::GameFin()
i f ( Pack.IsCard()
int
i,
return;
j;
for( i - 0; i < 5; i ++ }
for(
j = 0 ; j < 5 ; j + + )
i f ( lsCardsfi,j)
) return;
ShowMessage(GAME_WIN_STR);
NewGame();
ShowAll{);
214
?
: ,
, ,
(
FormMouseUpO).
,
randomize(), ,
, :
fastcall
TForml::TForml(TComponent*
Owner)
: TForm(Owner)
{
randomize();
NewGame();
Line = - 1 ;
}
randomizeQ ,
:
# include <stdlib.h>
# i n c l u d e <time.h>
( ).
.
:
Application->Terminate();
:
NewGame{);
ShowAlI();
! . , ,
,
.
215
10.
.
, - .
, ,
.
,
(, ), , , . .
216
11.
?
. , , , .
. C++Builder, , ; , . .
, .
.
: , , , .
.
++
C++ . ,
,
.
/ ,
, ++,
Windows . .
?
217
11.
, , , .
99% - /
, 1%
, .
C++Builder ,
SysUtils (
) .
/ , , ,
, .
:
1.
.
2. .
3. .
. , .
, , , ,
.
. 46.
, : -
218
. Saveltem Loadltem.
C++Builder .
,
, .
int
FileCreate(AnsiString
FileName);
. ,
(,
), , .
- 1 , - (, ).
, FileCreate() ( int), Windows, . (
)
. ,
.
, game.sol,
c:\tmp. MainUnit.cpp:
const
AnsiString
FILE_NAME_STR
":\\tmp\\game.sol";
, ++
\ \\.
++:
int
iFile;
i F i l e = FileCreate(FILE_NAME_STR);
iFile FileCreate(). :
i f { i F i l e == -1 ) { ShowMessage(CANT_CREATE_STR +
FILE_NAME_STR); return; }
, (
Text.h:
219
c o n s t A n s i S t r i n g CANT_CREATE_STR = "
";
, ,
return.
, , .
, , .
bool F i l e E x i s t s ( A n s i S t r i n g FileName);
, , , true.
, ?
MessageBox() Application, .
Windows . MessageBox()
, -, :
MB_ABORTRETRYIGNORE
MB_OKCANCEL
OK
MB_RETRYCANCEL
MB_YESNO
MB^YESNOCANCEL
.
, . ++ |
( ). :
220
MB_ICONWARNING
MB_ICONINFORMATION
I)
( i ]
MB_ICONQUESTION
MB_ICONSTOP
( ?)
( - )
,
MB_YESNO I MB_ICONQUESTION
MessageBoxO 0 (
), , ,
.
IDOK
IDCANCEL
IDABORT
IDRETRY
ID1GNORE
IDYES
IDNO
, MessageBoxO
C++Builder AnsiString.
, MessageBoxO Windows, C++Builder,
char.
Windows , 0. char . MessageBoxO AnsiString,
char (, char *), AnsiString,
c_str().
, .
,
const AnsiString STR = "";
STR AnsiString (
):
STR.c_str()
. .
221
11.
Text.h :
c o n s t A n s i S t r i n g HEADER_STR =
"!";
c o n s t A n s i S t r i n g FILE_EXIST_STR =
";
"
MessageBox():
if(
FileExists(FILE_NAME_STR)
{
AnsiString
text
text;
= FILE_EXIST_STR + FILE_NAME,_STR +
"
?";
if( A p p l i c a t i o n - > M e s s a g e B o x ( t e x t . c _ s t r ( ) ,
HEADER_STR.c_Str(),
M B _ Y E S N O I MB_ICONQUESTI0N)
!= IDYES )
//
return;
FILE_EXIST_STR + FILE_NAME_STR
AnsiString,
c_str():
MessageBox((FILE_EXIST_STR + FILE_NAME_STR).c_str(), ..
.
, MessageBox() , .
++ .
FileWrite(). . ( - iFile),
,
( ), ,
. FileWritef) ,
.
222
, : Cycle, Line, Pos, Pack Well.
, , , ,
.
Cycle,
FileWrite(). ++ &,
, Cycle &Cycle.
&, . , , ,
.
Cycle (
) ? ++ sizeof().
sizeof() , , , =,
+ &. sizeof() , , , sizeof ++.
sizeof() ,
. , sizeof (Cycle),
4 (4 ), sizeof(int) ( int),
Cycle int.
Cycle :
FileWrite(iFile,
&Cycle,
sizeof(Cycle));
,
Pack:
FileWrite(iFile,
&Pack,
sizeof(Pack));
Well . , Well
, TCard. Well, ,
5*5*_1_.
sizeof(TCard)*5*5*PACK_TOTAL
.
( (0, 0, 0)) &Well[0][0][0],
223
11.
. ++ ,
Well. :
FileWrite(iFile,
Well,
sizeof(TCard)*5*5*PACK__TOTAL);
( )
Well.
, .
, , , - , ,
. FileWrite()
(-1) . :
int
err;
:
err = FileRead(iFile, Well,
Sizeof(TCard)*5*5*PACK_TOTAL);
if( err == -1 )
ShowMessage("Well" + BAD_OUTPUT_STR);
FileClose(iFile);
return;
}
Text.h :
const A n s i S t r i n g BAD_OUTPUT_STR = " ";
.
void F i l e C l o s e ( i n t i F i l e ) ;
:
224
void
fastcall
*Sender)
TForml::SaveltemClick(TObject
if f FileExists(FILE_NAME_STR)
{
AnsiString
text;
"
?";
Application->MessageBox(text.c_str(),
HEADER_STR.C_str(),
M B _ Y E S N O I MB_ICONQUESTION)
!= IDYES )
return;
}
int
iFile,
iFile
iff
err;
FileCreate(FlLE_NAME_STR);
iFile == -1
{
ShowMessage(CANT_CREATE_STR + FILE_NAME_STR)
return;
}
err = FileWrite(iFile,
iff
err == -1
{
&Cycle,
sizeof(Cycle));
ShowMessage("Cycle"+BAD_OUTPUT_STR);
FileClose(iFile};
return;
&Line,
}
sizeof(Line));
if( err == -1 )
{
ShowMessage("Line"+BAD_OUTPUT_STR);
FileClose(iFile);
return;
}
err = F i l e W r i t e ( i F i l e ,
iff
{
&Pos,
sizeof(Pos));
err == -1 )
ShowMessage("Pos"+BAD_OUTPUT_STR);
FileClose(iFile);
return;
225
1.
, .
, FileReadQ.
.
.
i n t F i l e O p e n ( A n s i S t r i n g FileName,
i n t Mode);
(, ,
-1), . fmOpenRead, ,
.
(, , Text.h):
226
const A n s i S t r i n g BAD_INPUT_STR = " " ;
. :
void
fastcall
^Sender)
TForml::LoadItemClick(TObject
&Cycle,
sizeof(Cycle));
i f ( e r r == -1 )
{ ShowMessage("Cycle"+BAD_INPUT_STR);
FileClose(iFile);
return;
}
err = FileRead ( i F i l e , &Line, sizeof(Line));
i f ( e r r == -1 )
{ ShowMessage("Line"+BAD_INPUT_STR);
FileClose(iFile);
return;
}
1.
FileClose(iFile);
return;
}
err - FileReadfiFile, Well,
sizeof(TCard)*5*5*PACK_TOTAL);
if( err == -1 )
{ ShowMessage("Well"+BAD_INPUT_STR);
FileClose(iFile);
return;
}
FileClose(iFile);
ShowAl1();
}
ShowAII(), , .
,
, . ,
.
.
.
/ .
,
,
, /
.
-. . ,
TSolData:
class
T6olData
{
int Cycle,
TPack
228
Pack;
Line,
Pos;
TCard
Well[5][5][PACK_TOTAL];
TForm 1 :
TSolData
SolData;
, Pack, a SolData.Pack . .
( )
:
FileWrite(iFile,
&SolData,
sizeof(TSolData) ) ;
TSolData,
/
TSolData.
, ,
TSolData ( ), TSolData -
.
.
, .
Windows,
.
, C++Builder File Open ( ).
C++Builder OpenDialog
DecisionCuba I DfieotHt ^Wmat I Samdes I AaBwKj St*X*.
SaveDialog,
DWoasfwiBSI I ! | S t i L *
SaveDielogf
229
11.
Dialogs.
,
.
(. . 47).
""
. 47.
, MainMenu ImageList, .
,
.
OpenDialogi SaveDialogi (,
, Name).
, Title. , .
.
.SOL ( solitaire
). , .
Filter (). , ,
,
*.soi, j.
, ,
. DefaultExt, ( ) SOL.
230
,
.
, ,
, . ofFileMustExist ( ),
Options.
ofFileMustExist
true.
Ot)|i;nt Inspector
| jDirCiaoiji TDpriCa
' bg
Properte
i s JEwert*|
p Opo
tins
d
O
verw Prompt false
t
, otHdePeaaOJ.j t(UB
< _0fNuCh<re
jCtr
'fab*
i
dbeeF-J
ofSharaAwuie
Thidds"-"
1
(1
"4
ExecuteO . true, . false.
? ExecuteO true,
FileName.
, FILE_NAME_STR (
),
FILE_NAME_STR ( , ).
AnsiString FILE_NAME_STR;
LoadltemClickO :
// , :
if (
!OpenDialogl->Execute()
return,-
//
AnsiString
FILE_NAME_STR;
FILE_NAME_STR = OpenDialogl->FileName;
FILE_NAME_STR
, , .
SaveltemClick()
:
231
// , :
if ( !SaveDialogl->Execute() ) return,// :
AnsiString FILE_NAME_STR;
FILE_NAME_STR = SaveDialogl->FileName;
.
C++BuiLder
, C++Builder.
, .
.
1. FileName
. ,
, , ,
Windows.
FileName .
iFile.
2. - 1 ,
. .
3. ()
TDateTime,
, ,
( DateStringO) ( TimeStringO), :
TDateTime d t ;
// :
dt.CurrentDateTime();
// Text
//
Text = d t . D a t e S t r i n g O ;
Text , , : 22/11/2000.
232
int FileAge{AnsiString FileName);
FileName.
TDateTime
FileDateToDateTime():
i n t age;
TDateTime d t ;
age - FileAge ( "c : Wcomrrand.com") ;
dt - FileDareToDateTirr.e (age) ;
iFile.
Age
iFile. Age
TDateTime
DateTimeToFileDate():
inc age;
TDateTime dc;
dt = FileDateToDateTime(age);
age = DateTimeToFileDate(dt);
Name
DirList (
). ,
,
"" .
if ( FileSearcht"referat.doc",
" : \\terrp; : \ \doc ; : \ \inet")
FileName.
false.
OldName
NewName, :
RenameFiie{"start.doc",
"start2.doc"};
false.
233
11.
bool CreateDir(AnsiString Dir);
Dir.
false.
, ,
CreateDir(":\temp\web\koi");
c:\temp\web.
void ForceDirectories(AnsiString Dir);
Dir.
, ,
, :
temp,
ForceDirectories(":\temp\l\2"
\temp,
\1\2.
, Name.
AnsiString GetCurrentDir();
Dir
:
SetCurrentDirf":\\tmp");
false.
bool RemoveDir(AnsiString Dir);
Dir.
.
false.
.
Drive :
0
1
2
3
4 D . .
Drive .
234
12. ,
,
C++Builder,
, ,
.
, C++Builder.
Standard
, , , ,
.
C++Builder 5. ,
,
C++Builder. , , .
.
235
12. ,
Windows ,
. C++Builder
PopupMenu TPopupMenu ( , ).
, , ,
(), X Y , :
PopupMenul->Popup{250,250);
, - , . Memo.
Lines. : Count
Strings AnsiString,
, Count. , Memol, :
s
- Memol->Lines->Strings[
Memol->Lines->Count-l
];
, .
(CheckBox) Windows.
Checked, bool
true, .
Caption (
Alignment taRightJustify), (taLeftJustify).
, OnCiick
( ).
(RadioButton) , , i
, , , - L_
236
Standard
.
, , Checked.
Alignment.
, RadioButton.
()? RadioGroup.
Items ( TStrings, ) ,
. (. . 48),
Items.
String List <;di)or
1
2
3
. 48.
, Columns.
, ,
Itemlndex, ( ).
, Items.
Itemlndex - 1 , , . Itemlndex ,
, Itemlndex
.
237
2. ,
( ScrollBar)
, , , .
(GroupBox) ( Caption).
.
, ,
( Panel).
,
. : (
Bevellnner) (BevelOuter),
238
Additional
(bvRaised), (bvLowered) (bvNone).
BevelWidth,
BorderWidth.
Additional
(BitBtn) (SpeedButton).
MaskEdit , , - |
(). ,
,
Input Mask Editor.
StringGrid .
, .
(
) ,
ColCount ( ) RowCount ( ). ,
(/
).
Cells . ,
"123 , 45" (2,3) StringGrid 1,
:
S t r i n g G r i d l - > C e l l s [ 2 ] [3 3
= "123,45";
239
12. ,
123,45.
, (
), Col Row (
).
DefaultColWidth DefaultColHeight.
, , , , [
- .
DrawGrid StringGrid,
Cells.
,
. , DrawCellO, , (
C++Builder). DrawCell()
.
, ,
, Image ().
Picture, , .
. C++Builder
Shape.
(stRectangle),
(stSquare), (stRoundRect),
(st Round Square), (stEllipse) (stCircle).
Shape.
( ),
, Color () Width (
240
Additional
).
( Brush), Color ( ).
Width Height.
C++Builder ,
( )
.
ScrollBox .
.
, , /.
8
. C++Builder StaticText.
Caption,
, StaticText BorderStyle, .
C++Builder
. , , .
ControlBar.
9 1064
241
12. ,
,
. .
Chart . ,
. .
, ++.
'lt.-oCti.irt Gallery
. 49.
Win32
, ImageList ( ),
, ToolBar
, .
PageControl () ,
.
242
Win32
, C++Builder ,
. ,
, , .
PageControl . .
1. PageControl.
2. .
3. New page
.
4. (
!), .
5. Caption ,
.
,
.
( !)
DEL.
Win32 TabControL.
, TabControl,
, .
Memo . , , ,
. . RichEdit.
. RichEdit , ,
243
2. ,
.RTF, .
TrackBar
Min, Max Position.
Frequency ( ). , , Min = 0, = 10, a Frequency = 2, 6
( ). Orientation , (trHorizontal)
(trVertical). ThumbLength,
LineSize, PAGEUP/PAGEDOWN
PageSize.
,
SelStart SelEnd. , SelStart
3, SelEnd 8. 3 8
, ,
, .
ProgressBar , ,
, .
Min, Max
Position, Step, ,
Steplt()
, .
Position StepByO.
.
, , ,
1 25.
, ,
.
TUpDown, .
244
Win32
, Position
.
, ,
-, ,
Associate ( ) .
,
.
, Min, Max, Orientation Position,
Increment (
Position ), Thousands
, ( )
, , : 1,000 9,876,543.
, ,
,
( ArrowKeys true).
. , Windows, ,
ALT+TAB ,
CTRL+ S
. . THotKey.
, : SHIFT+CTRL+A,
SHIFT+CTRL+A. , , HotKey,
,
C++Builder.
245
12. ,
FileName. :
(aviFindFolder);
(aviFindFile);
(aviFindComputer);
(aviCopyFiles);
(aviCopyFile);
(avi Recycle File);
(aviEmptyRecycle);
(aviDeleteFile).
CommonAVI.
, AVI-,
, Open true, ,
true Active. Repetitions
, Transparent , .
StartFrame ( ) StopFrame ( ).
.
, Seek(),
.
Stop(), Active true.
/ ,
, . TDateTimePicker.
/.
Kindio
dtkDate,
dtkTime. ,
.
246
J111
.OO
.G
! "
1
3
i
1 2
1 9 10
! 1G 17 18
? 23 24 25
30 ?1
l i b .
(1
1 | =* g
6
12
19
13
20
?7
21
7
11.10.00
1
22
Win32
,
Date Time ( TDateTime).
( DateFormat) dfShort
( ,
2000 XXI ) df Long,
. ,
MinDate ( ) MaxDate (
).
MonthCalendar
.
( Date)
( MultiSelect true;
EndDate).
,
FirstDayOfWeek.
, WeekNumbers true.
HeaderControl
, , , .
, HeaderControl, Sections Editor.
(
StatusBar).
( false SimplePanel,
SimpleText), , ,
Panels Editor.
CoolBar ToolBar.
247
12. ,
,
. ,
Bands Editor .
C++Builder 640x480 ,
,
.
PageScroller.
Control ( ) ,
. , PageScroller
-.
.
System
.
, -, . Windows
. ,
. , ,
.
Microsoft , . Windows,
.
Microsoft C++Builder Timer.
.
248
System
, Enabled true,
false. ,
OnTimer, , Interval. , , ,
, .
, Windows
Windows-,
,
OnTimer .
. ,
( ).
, PaintBox.
.
OnPaint.
AVI- ,
C++Builder MediaPlayer,
( !) , , ,
.
C++Builder , DeviceType ( ) .
MediaPlayer ,
( , , , ).
Panel. ,
, MediaPlayer Display.
249
12. ,
, , FileName.
, 1(), Stop(). TMediaPlayer
, (Play,
Stop, Next . .).
1 ! 41
, , VisibleButtons, , .
false, . ,
Play.
, , , MediaPlayer .
, , ,
,
. MediaPlayer ,
, , Visible ().
false, , .
OLE-
, OleContainer
.
OLE Microsoft
Windows , 16- .
OLE Windows, ( C++BuiLder),
, . . , ,
OLE-.
Windows 9x OLE.
Word, Excel, Paint, . ,
, OleContainer,
.
250
Dialogs
OleContainer
,
OLE-.
Insert Object ,
.
Microsoft Wofd
WoidPad
Microsoft Excel
MIDI
Microsoft PnwetPoint
WAVBVBVQ^IZI
v
; Aria Cyr
ac
JE >
'
"
_ij
.- .. * - ^ -
!
1 leant 11
2
.
~
5"
OLE : . .
Dialogs
,
Windows, . (OpenDialog SaveDialog). OpenPictureDialog SavePictureDialog,
,
.
FontDialog ( Font)
, .
ColorDialog (
Color).
251
12. ,
PrinterSetupDialog.
( ,
, . .), PrintDialog.
FindDialog.
FindText,
Options.
ReplaceOialog, . FindText, , ,
ReplaceText.
,
. , , , ,
. . , , .
Executed) true, .
!
C++Builder 200 ,
, . ,
-, . Web- www.torry.ru (,
).
,
O+Builder?
www.torry.ru Components Page ( ). ,
,
. ,
, .
252
!
Buttons & Check Boxes # 2 ( -2) Torry's Button,
. 81 . .
Zip- : torrybtn.inf ( ), torrybtn.pas ( ) torrybtn.d32
( ).
,
++?
-
Delphi , C++Builder,
.
C++Builder 4- , 1999 .
, , . ,
C++Builder ++, ,
.
Torry's Button Component Install Component.
. Into
New Package ( ), Unit file name ( )
Browse () torrybtn.pas (
: .PAS, .!),
Package file name: t o r r y .
jlnstall Component
Into rxBtng package Into new package j
UrtsVJOF-irR-SPAE
Search petht js 3U3J4 c.$;l
Eeskaae Fe
li name pv
deicrittwn
Canoe!
Puc. 50.
, .
C++Builder , torry.bpl ( torry.pas ).
253
12. ,
Yes. C++Builder
, ( ,
) TTorryButton ( TorryButton). C++Builder , , TForm, TButton .
.
? ,
.
.
QHeoortJ DteJooslWr3l! Samotes] ActiveX] Servei Ton* \ JJ
, ,
. TorryButton ( Caption).
, ,
. !
. , , TorryButton, .
1. Component Install Packages. ( ).
2. , (
torry), .
, .
C++Buitder!
3. Remove () Yes.
4. .
TTorryButton .
.
254
C++Builder
C++Builder
, C++Builder. .
1.
,
, .
2.
, Parent (), ,
. ,
, ? .
, . .
.
ActiveControl
,
( )
Align
.
:
aINone ;
alTop no ;
alBottom ;
alLeft no ;
alRight no ;
alClient
Alignment
:
(taLeftJustify);
(taRightJustify);
(taCenter)
Anchors
,
. ,
akLeft akRight,
.
to Hotkeys
255
12. ,
AutoScroll
true,
,
AutoSize
true,
BiDiKeyboard
BiDiMode
(bdLeftToRight, )
(bdRightToLeft)
Borderlcons
BorderStyle
. :
bsNone ( );
bsSingle ( );
bsSizeable (,
);
bsDialog ( );
bsToolWindow ( bsSingte, );
bsSizeToolWin ( bsSizeable, )
BorderWidth
Cancel
,
OnClick, ESC
( Cancel true).
Caption
. ,
,
(, )
Checked
, {true )
Color
Columns
Constraints
Ctl3D
( Windows 95 )
Cursor
( )
256
C++Builder
Default
,
OnClick, ENTER
( Default true)
DockSite
,
. . (true),
.
(. Drag Kind)
Down
(true )
DragCursor
DragKind
,
(dkDrag)
(dkDock),
DragMode
, (
dmAutomatic) (dmManual, no )
, DragKind
Enabled
. Enabled false,
(,
, )
FileName
.
,
,
. .
Flat
(true )
Font
,
.
FormStyle
. :
fsNormal ( );
fsMDIChild ( ):
fsMDIForm ( );
fsStayOnTop ( )
Glyph
, (,
, , )
Height
257
12. ,
HelpContext
,
F1
( Windows)
HelpFile
HorzScrollBar
Highlighted
Hint
,
. ,
ShowHint true
HintFont
Icon
Images
,
, . .
ItemEnabted
Itemlndex
Items.
. ,
Itemlndex 1
Items
, .
, ,
Kind
() .
Left
Lines
.
. Items
,
, . .
Max Length
MenuAnimation
,
Windows 2000
258
C++Bui!der
MenuFont
Min
,
, . .
ModalResult
,
. mrNone (
), mrOk, mrCancel, mrAbort, mrRetry, mrlgnore, mrYes,
mrNo mrAII.
, mrNone,
Name
( ,
)
Options
Orientation
.
(udHorizontal) {udVertical)
OwnerDraw
,
(true)
Picture
PixelsPerlnch
() .
. , Scaled
true
PopupMenu
,
.
Position
. :
poDesigned
;
poDefault Windows;
DefaultPosOnly ,
;
poDefaultSizeOnly ,
;
poScreenCenter
;
poDesktopCenter .
, . .
259
12. ,
ReadOnly
true,
. ,
ReadOnly
,
Scaled
true, PixelsPerlnch
ShowHint
, ,
Hint
Sorted
. (true),
Style
. (,
, . .)
TabOrder
TAB.
TabStop
,
TAB
Tag
, .
int. Tag
Text
( . .)
Title
() , ,
Transparent
. ,
Transparent true ,
-,
,
VertScrollBar
260
C++Builder
Visible
,
( true)
Width
WindowState
. :
wsNormal ,
;
wsMinimized ;
wsMaximized
261
Borland C++Builder
Borland C++Builder Inprise.
{desktop)
, , , ,
, , , , , .
C++Builder,
Inprise C++Builder Delphi.
.
,
( Data Access, Data Contrlos, InterBase ADO),
, ,
.
, , ,
(
- ),
, , ,
, . , , {)
. , , .
262
,
,
(,
),
- ,
( Decision Cube).
.
C++Builder ( QReport) .
. (, , ), , ,
. .
Internet FastNet
, ,
, . .
, , ,
.
,
.
( Midas Internet Express),
263
() ,
, , ().
, , . ,
, , ,
.
Inprise JBuilder 4. Java, , ++
, . ,
Windows ,
, Unix . Inprise Kylix.
C++Builder Delphi.
264
: Windows Linux. He , , . ,
.
, C++Builder Web-
www.borland.com www.borland.ru ( Borland
Inprise).
265
Associate, 247
Active, 248
ActiveControl, 257
ActiveX, 28
Add(), 145
Additional, 27, 241
Align, 257
Alignment, 239
Anchors, 258
Animate, 248
AnsiString, 98
Arrow Keys, 247
atoi(), 98
atof(), 102
AutoHotKeys, 258
AutoScroll, 258
AutoSize, 258
I Background, 55
Bevel, 243
BiDiKeyboard, 258
BiDiMode, 258
BkColor, 177
bool, 104
Borderlcons, 258
BorderStyle, 258
BorderWidth, 258
Borland C++, 14
Borland C++Builder 18
24
20
Build, 164
Button, 40
c_str(), 101
C++Builder Direct, 26
Cancel, 258
Caption, 39
catch- 96
Cells, 241
Chart, 244
Checked, 258
Col, 258
ColCount, 241
266
FindDialog, 254
FindText, 249
FirstDayOfWeek, 258
FormMouseUpO, 204
Flat, 259
FloatToStrO, 70
FloatToStrF(), 71, 93
float, 66
Font, 32, 259
FontDialog, 254
FormStyle, 260
Frequency, 246
Glyph, 118, 260
GroupBox, 240
HeaderControl, 249
Height, 177, 260
HelpContext, 260
HelpFile, 260
Highlighted, 260
Hint, 260
HintFont, 260
HorzScrollBar, 260
HotKey, 247
I
Icon, 260
IDE, 25
Images, 242, 260
Imagelndex, 260
ImageList, 177, 244
ImageType, 177
Increment, 247
Interval, 251
IntToStr(), 68
ItemEnabled, 260
Itemlndex, 260
Items, 260
(
Kind, 260
Kylex, 266
Label, 39
Left, 260
Lines, 2610
Linker, 58
Linux, 17
long double, 66
MainMenu, 115
Masked, 177
MaskedEdit, 241
, 247, 261
MaxLength, 261
MediaPlayer, 251
Memo, 246
MenuAnimation, 261
MenuFont, 261
MessageBox(), 223
Microsoft Outlook Express, 29
Microsoft Visual Basic, 18
Microsoft Visual C++, 18
Midas, 28
Min, 247, 261
ModalResult, 261
MonthCalendar, 258
MultiSelect, 249
N
Name, 39, 261
3
ObjectPascal, 18
Object Inspector 30
OleContainer, 252
OnChange, 31
OnClick, 31
OnMouseDown, 204
OnMouseUp, 203
OnPaint, 251
OnTimer, 251
Open, 248
OpenDialog, 231
Options, 261
Orientation, 261
OwnerDraw, 261
>
PageControl, 245
PageScroller, 250
PaintBox, 251
Panel, 252
Picture, 261
PixelsPerlnch, 261
Play(), 252
PopupMenu, 261
Position, 247, 261
PrintDialog, 254
PrinterSetupDialog, 254
ProgressBar, 246
QReport, 28, 265
RAD- 17
RadioButton, 238
267
RadioGroup, 239
random(), 124
randomize(), 150
Readonly, 262
Repetition, 248
ReplaceDialog, 254
ReplaceText, 254
RichEdit, 246
Row, 242
RowCount, 241
RTL- 163
SaveDiaiog, 231
Scaled, 262
ScrollBar, 240
ScrollBox, 243
Seek(), 248
SelEnd, 246
SelStart, 246
Shape, 242
ShowHint, 147, 262
ShowMessage(), 145
ShowModal(), 158
SimplePanel, 250
SimpleText, 250
sizeof(), 225
Sorted, 262
SpeedButton, 241
Standard, 239
StartFrame, 248
StaticText. 243
StatusBar, 249
Step, 246
StepBy(), 246
Steplt(), 246
Stop(), 248, 252
StopFrame, 248
StringGrid, 241
StrToFloat(), 70
StrToInt(), 50
Style, 32, 262
TabControl, 245
TabOrder, 262
TabStop, 262
Tag, 262
TApplication, 136
TButton, 199
TCanvas, 197
TDateTimePicker, 248
TEdit, 99
Terminate(), 136
268
V
VertScrollBar, 263
Visible, 263
VisibleButtons, 252
W
WeekNumbers, 249
Width, 178, 263
Win 3.1, 28
Win32, 27, 244
WindowState, 176, 263
Windows 95, 19
Windows 98, 19
Windows NT, 19
Workshop, 175
13
248
13
>
22
16
76
44
57, 73
43
61
43
17
29
161
54
76
77
77
77
78
78
I
44
161
42
20
30
18
14
16
16
16
189
83
95
197
47, 98
139
121, 131
123
124
124
122
121
121, 168, 256
13
18
20
117
37
20
14
14
14, 57
17
13
14, 53
54
137
55
17, 29
36
36
18
{)
27
44
24
46
72
182
132, 182
137
138
127
133
105
156
37
165
167
170
205
169
170
167
170
167
168
168
20
115
238
115
116
98
125
123
192
146
159
18
)
29
OLE 253
36
59
30
30
59
29
157
269
()
161
72
142
17
202
52
51
56
104
151
52
83
106
15,148
148
15
94
29
25, 240
239
25
25
27
25
26
26
25
, 18
238
239
42
142
119
141
139
61
43
86
61
45
61
45
168
43
143
42
97
38
270
108
56
56
36
39
49
30, 240
166
169
113
33
149
56
251
14
58
- 129
56, 91
89
33
57
119
16
104
215
- 17
33
38
143
135
175
33
29
29
49
29
29
264, 266
17
30
30
73
17
143
27
75
()
27
116
94
184
79
20
157
76
29
29
155
32
237
237
73
70
56
50
50
36
45
43
45
50
63
85
14
/
129
103
Borland C++Builder 5 20
21
21
21
21
21
12
75
234
57
57
234
231
220
138
57
109
103
109
153
183
189
153, 188
153
111
70
66
32
32
32
17
17, 29
13
++ 15
271
,
,
BHV -
. (. ), . , 32.
. 955-90-13. E-mail: dess@aha.ru
World Wide Web: http://www.dess.ru/
272