Академический Документы
Профессиональный Документы
Культура Документы
O+Builder 6
1
C++
2002
004.43
32.973.26-018.1
87
..
C++
C++Builder 6: , , . , ,
, , , , . Windows. 650 ,
C++, API Windows, 300 .
STL: ,
, -.
, .
: .
ISBN 5-9518-0007-2
.., 2002
, 2002
15
1. C++
17
1.1 C++
17
1.2 C++
18
1.2.1
18
1.2.2
19
1.2.3
22
1.2.4 ,
25
1.2.4.1 ,
25
1.2.4.2
27
1.2.4.3 ,
28
1.3
29
1.4
31
1.4.1 #include
31
1.4.2 #define #undef
32
1.4.2.1
32
1.4.2.2
33
1.4.2.3 #undef
36
1.4.3 :
#if, #endif, #ifdef, #ifndef, #else, #elif
36
1.4.4 #error, #line, #pragma
38
1.4.5 # ##
41
1.5
41
1.5.1
41
1.5.2
42
1.5.3 (manifest)
43
1.6
45
1.6.1
45
1.6.2
45
1.7
48
1.7.1
48
1.7.2
51
1.7.3 const
53
1.7.4
54
1.7.5
55
1.7.6 inline
57
1.7.7
57
1.7.8
59
1.8
60
1.8.1 ,
60
1.8.2 namespace using . . . 64
1.9 .
65
1.9.1
65
1.9.2
66
1.9.3
67
1.9.4 , Assign. . . . 71
1.9.5
72
1.9.6
73
1.9.7
74
C++Builder 6
1.9.8 ()
75
1.9.9 (?:)
75
1.9.10 sizeof
76
1.9.11 typeid
77
1.9.12 (&) ( * ) . . . .
77
1.9.13 (::)
77
1.9.14 : (.) (>)
77
1.9.15 () ()
78
1.9.16
81
1.9.17
82
1.10
85
1.10.1
85
1.10.1.1 if
85
1.10.1.2 switch
86
1.10.1.3 goto
87
1.10.2
88
1.10.2.1 for
88
1.10.2.2 do...while
90
1.10.2.3 while
91
1.10.2.4 : break, Continue, return, Abort . . 92
1.11
93
1.12
97
1.12.1
97
1.12.2 try ...
finally
exit
98
1.12.3 VCL
101
1.12.4 VCL Exception
106
1.12.4.1
'.
107
1.12.4.2
107
1.12.5 try ... catch
109
1.12.5.1 try ... catch
109
1.12.5.2 ,
111
1.12.6
113
1.12.6.1 throw. .
113
1.12.6.2 EAbort Abort
115
1.12.7 C++
116
1.13
119
1.14 Windows
121
1.14.1 C++Builder
121
1.14.2
122
1.14.2.1 SendMessage, PostMessage Perform
122
1.14.2.2
123
1.14.3
124
1.14.4
126
2. C++
2.1 ,
2.2
2.3
2.4
2.5
2.5.1
2.5.2 AnsiString
2.6
2.7
2.8
2.8.1
129
129
132
134
136
137
137
140
143
144
147
. 147
2.8.2
149
2.8.3
151
2.9
^ 154
2.10
154
2.10.1 /
154
2.10.2 /
156
2.10.2.1
156
2.10.2.2
156
2.10.2.3
160
2.10.2.4 /,
163
2.10.3 / C++
165
2.10.3.1
165
2.10.3.2
169
2.10.3.3
172
2.11
174
2.11.1
174
2.11.2
176
2.11.3 ,
177
2.12
179
2.12.1
179
2.12.2
180
2.12.3 C++
182
2.12.4
183
2.13
184
2.14
185
2.14.1
185
2.14.2 -, ,
. 188
2.14.3 -, , . . . . 190
2.14.4
191
2.14.5
194
2.14.6 , ,
196
2.14.7 ,
C++Builder
200
2.14.7.1
200
2.14.7.2
203
2.14.8
204
207
207
211
212
212
216
217
220
221
223
223
223
225
*
227
227
227
O+Builder 6
WM_CANCELMODE
.228
WM_CLOSE
228
WM_GETMINMAXINFO
228
WM_GETTEXT
229
WM_SETFONT
230
WM_SETTEXT
230
3.1.6 AnsiString
231
3.1.7 TDateTime
235
3.1.8 TStringFloatFormat -
236
3.2
237
3.2.1 ,
237
3.2.2
238
3.2.3
241
3.2.4
243
3.2.5
244
3.2.6 FPU
246
3.3
247
3.3.1
247
3.3.1.1 char *
247
3.3.1.2 ,
SysUtils.hpp
249
3.3.2 . :
252
3.3.3
261
3.4
262
3.4.1
262
3.4.2
264
3.4.2.1
264
3.4.2.2
265
3.4.2.3 AnsiString
272
3.5
275
3.5.1 ,
275
3.5.2 , FILE . . . 277
3.5.3 , . . . . 281
3.5.4 /
284
3.5.5
290
3.5.6
293
3.6
302
3.6.1
302
3.6.2
304
3.6.3
306
3.7
307
3.7.1
307
3.7.2
311
3.7.3
314
3.7.4 C++ C++Builder
317
3.7.5 API Windows
322
3.8 Windows
323
4.
abort
Abort
abs
AnsiCompareStr
AnsiCompareText
AnsiLowerCase
AnsiPos
AnsiStrComp
AnsiStrlComp
AnsiStrLower
AnsiStrPos
AnsiStrUpper
325
325
325
326
326
327
327
328
329
330
331
331
331
AnsiToOem DOS
AnsiUpperCase
assert
Bounds
calloc
ceil
Ceil
ceill
cgets
CharToOem, CharToOemBuff DOS
_clear87 FPU
_clearfp FPU
CompareDate
CompareDateTime
CompareText
CompareTime
Compare Value
_contro!87 FPU
_controlfp FPU
cprintf
cputs
CreateMessageDialog
CreateProcess
_crotl
_crotr
cscanf
cwait
Date
DateTimeToStr
DateTimeToString
DateToStr
DayOf
DayOfTheMonth
DayOfTheWeek
DayOfWeek
DaysBetween
DaySpan
DecodeDate TDateTime
DecodeDateTime TDateTime
DecodeTirae TDateTime
div
DivMod
EncodeDate TDateTime
EncodeDateTlme TDateTime
EncodeTime TDateTime
EnsureRange ,
exec...
fabs, fabsl
f getc /
_fgetchar
fgets
'.
fgetwc
_fgetwchar
fgetws
FindClose
FindExecutable API Windows
findfirst
FindFirst C++Builder
FindNext
FloatToStr
FloatToStrF
floor, Floor, floorl
fmod, fmodl
Format
FormatDateTime
fprintf
f putc
_fputchar
fputs /
f putwc
,
_fputwchar
fputws
free
frexp, frexpl, Frexp
fscanf
9
331
331
332
332
334
334
334
334
334
335
336
337
337
338
338
338
338
339
341
341
341
341
341
348
348
349
349
350
351
351
353
354
355
355
355
355
356
356
357
357
357
358
358
360
360
360
360
363
363
367
367
367
367
367
367
367
368
370
373
374
374
375
375
376
377
377
380
380
380
382
382
382
382
, . . . 382
383
10
C++Builder
fwprintf
fwscanf
get - ifstream
Get8087CW FPU
getc
getch
getchar
getche
GetExceptionMask
getline - ifstream
GetLastError API Windows
GetNextWindow API Windows
GetPrecisionMode
GetRoundMode
gets
getwc
getwchar
GetWindow API Windows
GetWindowText API Windows
_getws
HourOf
HourOfTheDay
HoursBetween
HourSpan
InputBox
InputQuery
InRange
IntPower
IntToStr
Islnfinite
IsNan
IsToday ,
labs
Idexp, Idexpl, Ldexp 2
Idiv
LnXPl
log
loglO, loglOl, logl
LoglO, Log2, LogN
LowerCase
_lrand
_lrotl
_lrotr
main
malloc . . .
MaxlntValue, MaxValue
_mbscpy
_mbslwr
_mbsncpy
_mbsupr
Mean
MeanAndStdDev
memccpy
memcpy .'
memmove
memset
MessageBox TApplication
MessageDlg
MessageDlgPos
MilliSecondOf
MilliSecondOfTheSecond
MilliSecondsBetween
MilliSecondSpan
MinlntValue, MinValue
MinuteOf
MinuteOfTheHour
MinutesBetween
MinuteSpan
MomentSkewKurtosis
MonthOf
MonthOfTheYear
MonthsBetween
MonthSpan
_new_handler
Norm
383
383
383
385
385
385
385
385
385
387
388
388
389
389
390
390
390
390
391
392
392
392
392
393
393
394
394
395
395
395
396
396
396
396
397
397
' . . . . . 397
397
397
398
398
398
398
398
400
401
402
402
402
402
402
402
403
403
404
405
405
407
411
411
411
412
412
412
412
413
413
413
413
414
414
414
415
415
415
11
Now
415
OemToChar, OemToCharBuff DOS
415
Point
416
poly, polyl, Poly
417
PopnStdDev
418
PopnVariance
418
PostMessage API Windows
419
pow, powl
420
powlO, powlOl
420
Power
420
printf
420
putc
420
putchar
420
puts
421
putwc
421
putwchar
421
_putws
421
raise
421
rand, randomize, Randomize, RandG
421
random
421
realloc
423
Rect
423
RegisterWindowMessage API Windows
423
_rotl
423
_rotr
424
RoundTo
424
Same Value
425
scanf
425
SecondOf
428
SecondOfTheMinute
428
SecondsBetween
429
SecondSpan
429
SelectDirectory
429
SendMessage API Windows
432
set_new_handler
433
Set8087CW FPU
434
SetExceptionMask .
434
SetPrecisionMode
434
SetRoundMode
434
ShellExecute API Windows
435
SHGetFilelnfo
437
ShowMessage
440
ShowMessageFmt
441
ShowMessagePos
441
Sign
441
signal
442
SimpleRoundTo
444
Sleep
444
SmallPoint
445
spawn...
445
sprintf
. 450
srand
450
sscanf
450
_status87 FPU
450
_statusfp FPU
451
StdDev
451
StrCopy
451
strcpy
453
StrECopy
453
StrLCopy
453
StrLower
453
strlwr
45,3
StrMove
'
453
strncpy
453
StrPos
453
StrToCurr, StrToInt, StrToFloat . . . . 453
StrToDate
454
StrToDateDef
456
StrToDateTime
456
StrToDateTimeDef
456
StrToTime
456
StrToTimeDef
456
Strtlpper
456
strupr
456
Sumlnt Sum
456
SumOfSquares
457
12
C++Builder 6
SumsAndSquares
swprintf
swscanf
system
Time
TimeToStr
_tmain main
Today
Tomorrow
TotalVariance
TryEncodeDate TDateTime
TryEncodeDateTime TDateTime
TryEncodeTime TDateTime
_tWinMain
ungetc
ungetch
ungetwc
Uppercase
va_start, va_arg, va_end
Variance
vfprintf
vfscanf
vfwprintf
vprintf
vscanf
vsprintf
vsscanf
vswprintf
vwprintf
wait
wcscpy
wcsncpy
_wcslwr
_wcsupr
_wexec...
_wfindfirst
_wfindnext
WinExec API Windows
WinMain
wmain
_wmemcpy
_wmemset
wprintf
wscanf
_wspavn...
_wsystem
wWinMain
YearOf
YearsBetween
YearSpan
Yesterday
5. STL
5.1 STL?
5.2 STL C++Builder
5.3 STL
5.4
5.4.1
5.4.2
5.4.3
5.4.4
5.4.5
5.4.6
5.4.6.1
5.4.6.2 multiset set
5.4.6.3 multimap
5.5
5.5.1
5.5.2
5.5.3
457
458
458
458
458
458
458
459
459
459
459
459
459
459
460
460
460
460
460
461
462
462
462
462
462
462
462
462
462
462
462
463
463
463
463
463
463
463
466
466
466
467
467
467
467
467
467
467
467
468
468
469
469
469
470
472
472
474
477
482
486
490
490
491
494
495
495
499
. 501
13
5.5.4 ,
504
5.6 string
505
5.7
509
5.7.1
509
5.7.2
510
5.7.3
510
5.7.4 . . . 513
5.7.5
514
5.7.6
516
5.7.7
516
5.7.8
519
5.7.9
520
5.7.10
521
5.7.11
524
5.7.12 '(heap)
526
5.7.13
527
5.7.14
528
5.8 -
529
C++ C++Builder 6
533
541
, ? . , C++. .
,
, ,
, . . , , , .
. , -, , , ,
C++, .
, , :
, ,
, , . ,
,
. C++ ++ilder,
. STL
. .
. -, ,
, ,
C++. , ,
.
[3] [4] C++
C++Builder 6. -,
[2], C++
C++Builder 6. , , .
, . , . . ,
. (. [2]).
, . , ,
. , .
, C++Builder 6
[1], , , .
[1] C++ . , C++, , , ,
Windows,
, . , C++
, [1] .
16
C++Builder
C++ API
Windows. (
), , ( 300).
5,
C++. [1] .
, C++ [1],
2/3 ,
. ,
.
1
C++
C++, C++Builder. , , C++Builder, , C++. , , Object Pascal. ,
, , C++Builder. ,
,
- C++.
, STL C++. , , C++ , , ,
.., . 5.
1.1 C++
C++
. ,
, C++ .
, ,
C++. C++ , , , , , .
, , C++ . . 2 . 2.14. ,
, , , . 2.14.8 1.7.8.
. 1.9.17. . 1.12.
C++, .
C++
:
. , , DATABASE, DataBase, Database database
, . , ,
_". . ,
.
(, , , ) , .
18
/* */.
, ,
, .
. , ,
"*/". , C++Builder 6 . Nested
Comments Advanced Compiler .
, .
.
"//" ,
, . , "//" .
";". .
.
. , , , , , , .
, .
{ } . , , .
, , , .
.
1.2 C++
1.2.1
C++ (, , ,
, ) . main ( WIN32) WinMain Windows. . C++Builder
, .
-
.
, . .
- ,
.
C++Builder .
, , C++Builder
. . , . , ,
. .
.
C++
19
, , ,
.., , .
.. .h.
, (). .
, . , .
,
.
.
() .
. , .obj.
, ,
.. .
1.2.2
C++Builder , . ,
Windows, WinMain. , main.
, . . , ,
. - , +- l-Builder. ,
, - , .
, C++Builder Project | V i e w Source.
Windows ( ):
//
__________________________________________
^ __________ ______
//
#include <vcl.h>
#pragma hdrstop
// , ^
USERES ( " P r o j e c t l . r e s " ) ;
USEFORM("Unitl.cpp", Forml);
USEFORM("Onit2.cpp", F o r m 2 ) ;
/
/
__________________________________________________________
// main
WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)
try
Application->Initialize () ;
Application->CreateForm( _ classid (TForml) , SForml)
20
1
Application->CreateForm(
Application->Run();
classid(TForm2) , &Form2);
}
catch (Exception Sexception)
{
Application->ShowException(.exception);
}
return 0;
, "#".
(.
. 1.4). #include. . , . , #include <vcl.h> vcl.h, , C++Builder.
USERES
USEFORM. ,
, . .
USEFORM, . C+4-Builder USEFORM , .
, (,
"Unitl.cpp"), .
- - WinMain.
. , Windows
. API Windows (API Windows Windows, ). WinMain - -
( ). , , .
WinExec. . ShowWindow.
WinMain . 4. main, . , . , WinMain, main .
WinMain ,
. Application>Initialize
. Application>CreateForm .
, .
.
Application>Run
. , .
WinMain try, catch. , -
C++
21
, . , ,
catch. Application>ShowException.
. 1.12.
WinMain return(O),
0.
. , USEFORM Application>CreateForm,
. .
- , , , , , . , - (, ). - . , .
, ,
extern (. . 1.6.2). , ,
, (. . 1.8).
, . , , , Form2
, Y. WinMain
:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR S, int)
S, .
Application->CreateForm(
classid(TForm2), &Form2);
if
(S[OJ
'Y')
Application->CreateForm(
classid(TForm2), &Form2);
, Projectl
Projectl Y, Form2 .
.
, , .
( MessageBox . . 9):
if (Application->MessageBox(.
" ?",
" ",
MB_YESNOCANCEL + MB_ICONQUESTION) == I D Y E S )
Application->CreateForm( c l a s s i d ( T F o r m 2 ) , S F o r m 2 ) ;
, . 1.1. ,
.
22
. 1.1
,.4 .
, , ,
.. , , .
, . , - , , C++Builder File | New Unit.
, . , , , - , , .
, , , begin, ,
. Unitl.cpp,
Unitl.h (
. . 1.2.3).
#include " U n i t l . h "
Unitl.h, WinMain
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR S,
int)
.. S, ,
WinMain :
begin(S);
begin .
begin :
void b e g i n ( S t r i n g s)
{
//
}
, ,
, .
: Projectl,
Project2 .. .
. .
WinMain, Windows. main, , . . 4.
1.2.3
, . : , ,
. , -^
( TLabel) (
C++
23
TButton). ,
.
:
//
tfifndef UnitlH
#define UnitlH
//
#include Classes.hpp>
#include <Controls.hpp>
tinclude <StdCtrls.hpp>
#include <Forms.hpp>
//
// ( , include),
//
//
// TForml
class TForml : public TForm
{
published:
// IDE-managed Components
//
TButton *Buttonl;
TLabel *Labell;
void
fastcall ButtonlClick(TObject *Sender);
private:
// User declarations
//
// , , ,
// ,
public:
// User declarations
//
// , , ,
//
fastcall TForml(TComponent* Owner);
};
//
:
//
finclude <vcl.h>
#pragma hdrstop
#include "Unitl.h"
//
tpragma package(smart_init)
tpragma resource "*.dm"
//
// ( , include),
//
// Forml
TForml *Forml;
//
24
// Forml
fastcall TForml::TForml(TComponent* Owner)
: TForm(Owner)
^, {
// ,
//
}
//
// ,
//
// ;
// ,
// ,
// ,
void
fastcall TForml::ButtonlClick(TObject *Sender)
(
Close () ;
}
. . , C++Builder
include (. . 1.4), ,
, , , ,
. .
include .
.
TForml. :
published
, , private , public
.
published : Buttonl TButton
Labell TLabel. ButtonlClick Buttonl. ,
published, C++Builder . , , . private public , , . , C++Builder public, . , private, . ,
, C++Builder public, () TForml.
PACKAGE, .
, , ,
(. . 1.8)
, .
.
Forml, . ,
- . . - .
, . ,
C++
25
, , , , .
C++Builder :
"Unitl", "Unit2" ..
1.2.4 ,
1.2.4.1 ,
, , . , : Buttonl TButton Labell TLabel.
, , , , , .
:
//
#ifndef UnitlH
tfdefine UnitlH
//
,
.
#include <Classes.hpp>
tinclude <Controls.hpp>
tinclude <StdCtrls.hpp>
tinclude <Forms.hpp>
//
class TForml : public TForm
{
published:
// IDE-managed Components
TLabel *Labell;
TButton *Buttonl;
void
fastcall ButtonlClick(TObject *Sender);
private:
// User declarations
// Fl Ch6
void
fastcall Fl(char Ch);
char Ch6;
public:
// User declarations
fastcall TForml(TComponent* Owner);
// Chi F2
// ,
//
char Chi;
void
fastcall F2(char Ch);
};
//
extern PACKAGE TForml *Forml;
// Ch2 F3
// ; Ch2 ,
// extern;
// F3 ,
//
char Ch2;
void F3(char Ch);
tendif
:
//
tinclude <vcl.h>
26
1
tpragma hdrstop
#include "Unitl.h"
//
tpragma package(smart_init)
#pragma resource "*.dfm"
TForml *Forml;
//
{
}
//
// Ch3 F4
// ; ,
// extern;
// F4 ,
//
char Ch3;
void F4(char Ch)
f
Forml->Labell->Caption = Forml->Labell->Caption + Ch +
Forml->Chl;
)
//
.
,
void
fastcall TForml::Fl(char Ch)
{
Labell->Caption = Labell->Caption + Ch + Chi;
}
//
void
f a s t c a l l T F o r m l : : F 2 ( c h a r Ch)
{
=
=
=
=
'-';
'A';
'';
'';
Labell->Caption = "";
Fl(Chi);
F2(Ch2);
F3(Ch3); *
F4(Ch4);
Labell->Font->Color = clRed;
' .)
C++
27
. ,
, .
TLabel Caption .
FlF4 , , Ch, , Chi, .
TForml::ButtonlClick, ChiCh4 "-", "", "" "", Caption Labell, , FlF4, . .
Font Labell. , Color . TForml::ButtonlClick.
1.2.4.2
,
.
. , TForml
TLabel *Labell;
Labell TLabel.
, , . 2 . 2.8,
, ,
. , C-t-+Builder
, .
( )
. ( " " ">", , .. "->")
(.).
,
.
, , F1 F2. Labell>Caption.
: Caption Labell. To Caption
(*Labell).Caption. (*Labell) ,
.
,
C++Builder . .
. . , Font , . , , Color . Labell,
Labell >Font>Color (. TForml::ButtonlClick).
: Color Font, Labell.
. , , , Hide,
. - Labell ,
Labell->Hide();
28
1.2.4.3 ,
, ,
. ,
, - -. -
C++Builder .
. 1.2.4.1 F1 F2
, Ch2, Ch3 F3 F4 . ?
(
TForml),
. , ,
"::" . . 1.9.13.
Fl, F2 ButtonlClick
TForml::Fl, TForml::F2 TForml::ButtonlClick. ,
TForml. F3 F4,
, .
, ,
.
(, F1), . ,
, F1,
- - F1, Forml::Fl. ,
, ( , ).
.
,
. , .
C++Builder . , ,
, , ,
.
, ,
, , . , , ,
, , .
F3 F4 Forml>
. Caption Label 1
Forml->Labell->Caption.
Forml ,
.
, .
TForml::Fl, TForml::F2 TForml::ButtonlClick
Labell .
, ,
TForml (
MDI), , . ( -
C++
29
1.3
: . ,
, , , .
C++Builder .
Run | R u n , , F9. , , . . , . , .
, . 1.2. .
:
( . 1.2 Unit2.cpp) (Linking). (Current
line), , (Total lines).
(Hints), (Warnings) (Errors). Cancel .
30
, . , ,
, .
. 1.2
| Project
DA..
[Compiling:
Untt2.<
CurrentIne; ....:.
i Hints:
j Total lines:
ngs:
0 j Errors:
Cancel
, , , . .
Run ,
- .
R u n Parameters
.
.
, - .
: Project Compile Unit,
Project | Make Project Project Build Project.
Compile , .
,
. ,
.obj .
Make ,
.
, .obj
. ,
.. , Make R u n , .
Build Make , , . , .
. , ,
, , . , Build, . .
: Project | Make All
Projects Project | Build All Projects. Make
Build, , .
C+-t-Builder 6 . , C++Builder 5,
.
C++
31
, , , . , . ,
, :
, . , -
, ,
. , Tools | Environment Options Preferences Background Compilation.
, ( Run) . 1.2. : "Done: Make"
": ", "Done: There are errors"
": ", "Done: There are
warnings"
": ".
C++Builder
[1].
1.4
.
: ,
,
.
"#" . , "#", .
.
1.4.1 #include
#mclude , . #include:
tinclude <_>
tinclude "_"
^include
,
include '<', ' ' '. , , , #include.
.
"<" ">", , '
(include directories).
, ,
:
, #include
, #include
34
:
_()
, #define,
. ,
.
,
.
, , :
Idefine CIRC () (3.14159 * () * ())
, CIRC (), . ,
S = CIRC ( 4 ) ;
'
:
S = (3.14159 * ( 4 ) * ( 4 ) ) ;
, S .
S = CIRC( + ) ;
:
S = (3.14159 * (a -t- b) * ( + ) ) ;
, . , .
.
(4) ..
:
S = 3.14159 * + * + ;
(. . 1.9.16) 3.14159 * , * , . ,
.
. , .
,
.
: ,
,
#define 11(,)
(3.14159 * ( ) * ( ) )
:
S = E l l ( R l , R2) ;
. ,
:
-
C++
35
double circ(double x)
{
return 3.14159 * x * x;
)
:
S = circ(a + );
, , :
.
. .
, , .
, , , . , . ,
.
+ , , . ,
. , -
, .
.
,
. , . , CIRC, , :
S = CIRC(a++)
(.
. 1.9.2) 1, :
S = (3.14159 * (++) * ( + + ) ) ;
, . 1, 2.
:
S = CIRC(++a)
1 , :
S = (3.14159 * (++) * ( + + ) ) ;
,
:
S = (3.14159 * ( + 1) * ( + 2 ) ) ;
, circ.
. , , (inline . . 1.7.6). , , , .
36
1.4.2.3 #undef
#undef, :
tundef
. ,
#undef . #define.
, :
tdefine MyConst 128
// MyConst 128
tundef MyConst
// MyConst
#define MyConst 64
// MyConst 64
defined 1, #define, 0 . , :
#if defined Debug && !defined MyConst
#endif
,
tdefine Debug
tdefine MyConst
C++
37
#undef MyConst
#if defined
#ifdef, #if ! defined #ifndef. ,
#ifdef
Size
#endif
#endif
.
#elif ( else if if)
#else ( else if). ,
#if 1
1
#elif 2
2
#else
3
#endif
1 , 1,
2 , 2, 3 , .
. , , .
, ,
#ifdef Debug
#endif
,
#define Debug
.
#define,
Debug, . , , Conditionals
Directories/Conditionals , Project
Options.
, :
Debug, true :
#if (Debug)
(
Debug false, . , -
38
, .
.
.
,
, C++Builder :
ifndef UnitlH
define UnitlH
#endif
? #include,
. Unitl.h, UnitlH
. . #include , ,
UnitlH , .
:
E r r o r : f i l e n a m e line# : Error directive: errmsg
errmsg , #. .
, .
:
tifndef UnitlH
terror He U n i t l . h
#line
. :
#line _
#line "_"
_ .
, . , , . #line , . . :
#line 100 " U n i t l . c p p "
#line C++Builder
. , ,
, .
#line.
C++
39
#pragma :
Ipragma
, .
C+4-Builder. .
#pragma . :
(finclude <vcl.h>
tpragma hdrstop
hdrstop. , , , .
#pragma hdrstop
. ,
- ,
.
#pragma:
#pragma package(smart_init)
#pragma resource " * . d f m "
,
.
, .dfm , . ^
.
:
#pragma m e s s a g e ( ) ;
tpragma message();
:
[C++] Unitl.cpp(l):
[C++] Loaded cached pre-compiled headers
[C++] TForml:rButtonlClick
[C++] TForml::ButtonlClick
[Linker]
- , , ,
.
40
1
#pragma startup _
#pragma exit __
,
, , WinMain
main. , _exit. . , , .
. ,
void
func(void);
. ,
, , ,
, , #pragma startup.
, . 64 255. 0 63 C++ .
0. 100. , , .
- , , - , . . :
void f I ( v o i d ) ;
void f 2 ( v o i d ) ;
tpragma startup f l
#pragma startup f2
A n s i S t r i n g ="";
void f 1 ( v o i d )
(
if (! InputQuery(", ",
", ", Name))
ShowMessage(" , ");
else ShowMessage(", " + Name + " !");
}
void f2(void)
(
ShowMessage(" ");
}
. , , , fl
. . 4 InputQuery. Name
.
fl f2, ,
.
f 1
#pragma startup fl 101
f2, 100,
fl.
C++
41
1.4.5 # ##
# , (). ,
. , :
#define P e r s ( x ) Labell->Caption = " " #
Pers();
Labell->Caption =
"
"
""
"" # . , , ()
,
Labell->Caption = " "
## (, ) .
,
#define C o n c a t ( x , y ) x ##
Concat(Edit,l)
Editl.
1.5
1.5.1
. 4 : , , ( ) . : 25 -5
, 4.8, 515, 515, -5.18 , '', '\0',
'\', '007' , " " - .
, . , ( 0 7). : 032. 08 , 8 .
037777777777. ,
, .
X ,
( 0 F, ). : OXF01.
OxFFFFFFFF. , , .
. char, signed char unsigned char.
. , '\0'. .
, . :
" , " " "
42
" , "
" "
" , "
, , '\'. ,
" , \
"
.
, . ,
"\"4MH\"\t XtAflpec\nMBaHOB\t \tMocKBa"
""
"\" ,
. "\t" "\" .
"\",
. ,
": \\test\\test. "
( )
"c:\test\test.cpp"
:
enum ();
,
enum color { red, yellow, green } ;
color,
red, yellow green.
color .
, : red 0, yellow 1, green 2. ,
. ,
enum color { red, yellow = 3, green = red + 1} ;
, : red 0, yellow 3, green 1. . .
C++Builder ,
true , false , NULL .
1.5.2
, . .
.
C++
43
. , 55,
- ,
if
(N > NMax)
...
,
if (N > 55) . . .
, NMax, 55,
, , .
, (. .
1.6.1), const:
const _ = ;
:
const f l o a t Pi = 3.14159;
,
. , Pi,
const f l o a t Pi2 = 2 * Pi; //
const f l o a t Kd = P i / 1 8 0 ;
//
:
const
maxint
= 12345;
, ,
int. , "const Pi = 3.14159;" Pi
3, .
-
.
:
char *const strl = "!";
char const *str2 = " ! " ;
strl, . str2 . . , . ,
str2 = strl;
,
[
strl = s t r 2 ;
1.5.3 (manifest)
C++Builder ,
(manifest) .
.
, .. ( ) ( ). . -
44
. Borland
C++Builder.
_ __ _
_ _BCPLUSPLUS_
0x0530
,
C++;
_ _BORLANDC_ _
0x0530
_ _CDECL_ _
,
cdecl
_CHAR_UNSIGNED
, ,
char unsigned char;
_ _CONSOLE_ _
_CPPUNWIND
,
;
xd
_cplusplus
C++
_ _DATE_ _
(
"Mmm dd yyyy", ,
"Jan 19 1994")
_ _DLL_ _
WD
_ _FILE_ _
_ _FLAT_ _
flat 32
_LINE_
_PASCAL_
,
Pascal
_STDC_
,
ANSI. ,
_TEMPLATES_
C++, ,
_TIME_ _
( "hh:mm:ss")
_WIN32_ _
GUI
C++
45
1.6
1.6.1
,
, . .
:
_;
,
. :
int x l , 2;
. :
int xl = 1, 2 = 2;
, , .
:
int xl = 1, 2 = 2 * xl;
, , , :
for ( int i = 0; i < 10; i++)
1.6.2
,
, . , , .
C+-l-Builder : auto, register,
extern static.
, .
( ) , (, ,
, ..) . , .
, , . . , .
, "{}".
- .
:
. auto register
. .
, ,
.
46
auto, ,
. :
auto float x, ;
, auto .
.
, , :
{
int 1 = 1;
.
i ( ) . 1 . . , - .
register ,
, . :
register int i = 1 ;
, ,
,
. .
register. ,
, . , .
register .
, , , .
,
- .
volatile. :
volatile int tik;
volatile , - . , - , , ,
.
, .
C++ volatile (. . 2.14)
-. , ,
volatile, -, volatile.
C++
47
extern static ,
.
.
.
: ,
static. extern.
- . , .
, ,
, . .
, static,
, .
, static
. ,
.
, i
:
{
static int i = 1;
i . i 1. 2. i 3. ,
, , , , .
, . , .
extern . , , Unitl Unitl.cpp Unitl.h
( )
int a = 5;
, . .
#include (. . 1.4.1), Unitl
.
. 1.8.
48
1.7
1.7.1
,
. , , , , .
, .
,
I = 5 * F(X) ;
F X, 5
I.
, . :
F(X) ;
.
:
__ _(_)
(
}
, ,
, . , .
, .
void.
, int. , .
,
main.
, .
, , ( )
_
, :
double FSum(double X I , d o u b l e X 2 , int A)
FSum, XI, 2 ,
double, int. double. XI, 2 , ..
' , .
.
. 1.7.2.
, :
void S P r i n t ( A n s i S t r i n g S)
, , - .
C++
49
,
, void. :
void F l ( v o i d )
void Fl ()
,
.
, C++
. ,
(..
, ). C++ . , , , C++.
( ),
. ,
";" . , . - ,
.
. ,
,
,
.
:
double FSum(double XI,double 2 , int ) ;
void S P r i n t ( A n s i S t r i n g S ) ;
void F l ( v o i d ) ;
int);
.
-, ,
- . , , . -, , .
. , . , , , ( ), . ,
.
, - , . , ,
#include (. . 1.4.1), , .
. , (, printf) -
50
.
"...". . :
int prf (char * f o r m a t ,
. . .) ;
format char
* (, ) .
void Fp ( . ' . . ) ;
.
, .
extern static. extern , . , extern, (.
. 1.8.1). static,
s t a t i c void F ( v o i d ) ;
.
.
.
, , , , .
. , .
, . .
- , . ,
"::", ..
.
, , . ,
static ( . . 1.6.2).
.
,
,
return. ,
return
, .
:
double FSum(double XI,double X 2 , int A)
{
return A * (XI + 2 ) ;
C++
51
, :
void S P r i n t ( A n s i S t r i n g S)
j
if (S != " " )
ShowMessage(S);
}
. , return:
void S P r i n t ( A n s i S t r i n g S)
{
if (S == " " ) return;
ShowMessage (S);
}
- (. . 1.12.6). Abort,
"" EAbort, - . , Abort .
-
. , .. . , . , n! = n x (n-1) x (n-2) x ... 1, , 1! = 1 0! = 1. for ( , , ).
n! = n x (-1)!. . factorial :
unsigned long f a c t o r i a l (unsigned long n)
{
if (n <= 1)
return 1;
else
return n * f a c t o r i a l ( n 1);
n 0 1, 1.
n , factorial, , . , 1. .
1.7.2
, , , . ,
double FSum(double XI,double X 2 , int A)
XI, X2, .
:
P r ( Y , X2, 5);
'
52
, . . XI, 2, , Y, X2 5. XI,
2, . XI, 2 ,
.
.
, .
.
- , , , .
, , ,
.
,
.
.
, .
,
;
,
.
:
. . , , "&";
. . ,
int &count
int & count
ints count
"count int". ,
. ,
, "&". .
:
void square(int & ) ;
//
void s q u a r e ( i n t & )
{
*= ;
}
//
//
. :
int xl = 2;
square (xl) ;
xl 4.
C++
53
,
, . ,
.
(. . 2.8 . 2).
"&", "*". "*", , , .
"*", (
. 2.8 . 2). , ,
"&".
square, :
void s q u a r e ( i n t * ) ;
//
void s q u a r e ( i n t *a)
//
* *= *;
//
, , int xl = 2;
square(Sxl);
1.7.3 const
.
: , , . : .
.
.
const.
( , const ) :
double F ( c o n s t & A )
,
. : "Cannot modify a const object".
, , .
: , , -
54
. .
, ,
.
.
const .
,
, , , , . , :
void F ( c o n s t char * s P t r ) ;
1.7.4
. ,
, .
"==", . , ,
, ,
V , (, ) 2.
, , ,
( , ), : F = G * V * ( P 2), G .
, , :
double A r h ( d o u b l e V = 1,double P = 0.5,double PH20 = 1,double G = 9.81)
( return G * V * (PH20 - P ) ; }
. V
1 3, 0,5 / 3 ( -
C++
55
), 2
1 /3, G 9,81 /2.
,
. ,
F = Arh();
F .
() .
, .
,
F = Arh (2) ;
, 2 3
.
F = Arh(2,2.6);
, ( 2,6 /3)
2 3 . , , ,
,
, ,
( ).
,
, .
. , :
F = Arh(2,,1.1);
//
. , .
1.7.5
.
:
_(_, . . . )
( ),
. stdarg.h va_list : va_start,
va_arg va_end.
va_start :
void v a _ s t a r t ( v a _ l i s t , l a s t f i x )
,
. lastfix
.
va_arg :
56
1
type v a _ a r g ( v a _ l i s t ap, type)
. type
. va_arg va_start va_arg. va_arg
.
va_end :
void va_end(va_list ap)
, . , va_arg . .
. average, Labell . , .
.
:
tinclude <stdarg.h>
void a v e r a g e ( A n s i S t r i n g m e s s , . . . )
{
double A = 0;
int i = 0,arg;
va_list ap;
va_start(ap, m e s s ) ;
while ( ( a r g = v a _ a r g ( a p , i n t ) ) != 0)
{
i++;
A += arg;
}
Forml->Labell->Caption = mess + "N = " + I n t T o S t r ( i ) +
", = "+FloatToStr(A/i);
va_end(ap);
}
, , :
average(" : " , 4 , 2 , 3 , 5 , 4 , 0 ) ;
Labell :
: N = 5, = 3 , 6
average ,
( 0), N, :
void a v e r a g e ( A n s i S t r i n g m e s s , i n t N , . . . )
{
double A = 0;
va list ap;
v a _ s t a r t ( a p , N) ;
for (int i = 0; i < N; i++)
A += va arg ( a p , i n t ) ;
Forml->Labell->Caption = mess + "N = " -UntToStr (N) +
", = " + F l o a t T o S t r ( A / N ) ;
va_end(ap);
, , :
, average(" : " , 5 , 4 , 2 , 3 , 5 , 4 ) ;
C++
57
1.7.6 inline
, . C++
(inline) . inline , .
(. . 1.4.2.2). , , , .
inline,
, .
inline
. inline
, . , inline , .
inline , -
, . .
inline. , ,
,
R. , :
inline double C i r c ( d o u b l e R) { r e t u r n 6 . 2 8 3 1 8 * R; )
Circ(2)
"6.28318 * 2" ( ).
1.7.7
C++ ,
( ). . C++
, .
, ,
.
.
, , ,
(char *) ,
, . , , , ToS, ,
.
:
char * ToS(char *S,int X)
(return strcat (strcat (S, " ") , IntToStr (X) . c__str () ) ; }
char * ToS(char *S, double X)
58
1
{ r e t u r n strcat (strcat ( S , " " ) , F l o a t T o S t r ( X ) . c _ s t r ( ) ) ; }
char * ToS(char *S, bool X)
( i f ( X ) return s t r c a t ( S , " t r u e " ) ;
else return strcat (S," f a l s e " ) ; }
, , :
char S[128] = " =";
char SI = ToS ( S , 5 ) ;
, double, . , , .
,
. , Area
R, , , :
double Area(double R) { return 6.28318 * R * R; }
double A r e a ( d o u b l e a, double b) ( return a * b; }
51 = A r e a ( l ) ;
52 = A r e a ( 1 , 2 ) ;
, .
.
( ),
. , . .
.
.
,
, .
; .
, , , , . ,
, , .
C++
59
1.7.8
.
, , . .
, , C++
. , .
template,
,
"<" ">".
class.
, . ,
.
.
. . class
.
,
( ) :
template <class T>
m i n ( T x l , 2, )
{
Irain = x l ;
if (x2 < Imin)
Imin = x2;
if (x3 < Imin)
Imin = x3;
return Imin;
}
, min.
( min) xl .
Imin.
, , :
int 11 = 1, 12 = 3, 13 = 2;
double rl = 2 . 5 , r2 = 1.7, = 3 . 4 ;
AnsiString si = " 1", s2 = " 2", s3 = " 3";
Labell->Caption = m i n ( i l , 1 2 , 1 3 ) ;
Label2->Caption = m i n ( r l , r 2 , r 3 ) ;
Label3->Caption = m i n ( s 3 , s2, s i ) ;
min ,
, min, C++
. . , .
60
,
:
int m i n i int x l , int x2,
{
int Imin =
xl;
if (x2 < Imin)
Imin = x 2 ;
if (x3 < Imin)
Imin = x3;
return Imin;
}
int
x3)
, <.
typename. , , ,
. C++ .
C++Builder 6 .
typename, -, class
. :
template <typename T>]
, .
,
class.
typename
.
1.8
1.8.1 ,
, . . , "{ }".
, ,
.
, ( ),
. . , , . ,
, .
( , , start:) , .
, ,
. switch (
case) goto (. . 1.10.1.2 1.10.1.3). , .
.
, ( ),
. -
C++
61
. , .
, , , , .
.
,
() . , ,
,
.
:
int i = 1, k = 4
{
int i = 5 , j = 2 ;
...
int i = 7;
...
}
...
//
//
// j , k
// i
// i
// j , k
// i
// j , k
// i
, . . ,
. , - .
i
, , 7, .
(auto) ,
static. :
s t a t i c int i = 7;
. ,
- . ,
(. . 1.6.2).
, .
"::". , ::1 I,
I.
, ,
i = : :i + 1;
i i.
62
, , ,
.
, (.
. 1.7.1). .
, . , , ,
.
,
. Unitl Unit2 Unit2 ,
Unitl. Unit2 , Unitl, .. - . ,
, ( ) Unit2
extern. , Unitl
int al = 10;
Unit2 ,
extern int al;
C++
63
.
, , . .
( )
extern.
, ,
. . , #include ,
.
, , .
.
.
( ), private,
. ,
,
, .
,
, private.
, public,
, #include .
, , .
, , protected . , protected, ,
.
, , .
, , ,
.. . ,
, .
static.
, ,
. , , ( )
extern.
,
, , , .
"::".
64
1.8.2
namespace using
. . , , , . , .
namespace using.
:
namespace _
{
,
}
:
namespace A(
int 1 = 1;
void Fl (int i)
<
Forml->Labell->Caption = " A: i = " + IntToStr (i) ;
}
}
namespace B{
int i = 2;
void Fl (int i)
<
Forml->Labell->Caption = " : i = " + IntToStr (i);
.
i F1.
- . .
.
"::". ,
: :F1 ( A : : i ) ;
F1 i .
, . ,
, .
using. using:
using namespace _;
,
using namespace A;
C++
65
. ,
, - using
Fl(i);
F1 i .
using ,
:
using _ : : ;
,
u s i n g A : : F1;
u s i n g : : i;
Fl(i);
F1 i .
namespace
, namespace, , using namespace, . , . ,
:
namespace A {
)
namespace {
using namespace ;
namespace {
. . :
using namespace : : ;
1.9
1.9.1
. . , , . ,
"+" : X + Y . . , , . , "-" X "-".
, , . . 1.9.16.
66
1.9.2
,
. :
+Y
X-Y
X* Y
X/ Y
I %6
(-
)
+7
( )
-X
++
i++; ++i
i;i
.
"+" " "
, .
.
. , , .
.
( ) . .
, , .
. . 2 . 2.8.
"*" "/" . (. . 2.2). "%" .
. , ,
, :
1. , , .
C++
67
2.
, , .
.
"++" " "
"++" " " . , . L-, ..
. , ++( + ), ( + ) , .
, . , 1, "++", = + 1 += 1, . 1.9.4 "+==".
, . ,
.
, , . , .
,
int 1 = 1 , j ;
j = 1+ + * i++;
i 3, j 1. , j, :
i, 1, , .. ; j, i 1 1
.
:
int i = l , j;
j = ++i * ++i;
: i 3, j 9. , j
: i
2; i 3; i , .. j.
1.9.3
, . . EDivByZero
, . 1.12. , , . EIntOverflow. ,
,
. , :
int i = 2147483646;
int il = 1;
68
1
int
int
int
int
12
13
14
15
=
=
=
=
2;
1 + 11;
1 + 12;
13 * 13;
.
float ;
double = 1.5-100;
= ;
,
float .
float = 120;
f l o a t = * ;
. , , , .
. FPU.
, , :
IE
DE
ZE
UE
1.
69
C++
.
:
IM
DM
ZM
PC
8, 9
RC
10, 11
. 0, ,
, .
(. . 1.12). 1, .
, :
"INF" ( ), "-INF" ( ),
"NAN" ( ). ,
.
.
SetExceptionMask, _cont!87, Set8087CW, . 4.
_contro!87, , , . 4. _contro!87 :
unsigned int _contro!87(unsigned int newcw,
unsigned int m a s k ) ;
newcw
FPU. mask . , mask 1.
.
,
__contro!87 (, ) ;
_contro!87(0, O x 3 F ) ;
unsigned int m = _ c o n t r o ! 8 7 ( 0 , 0 ) ;
m , .
, ,
. _status87.
. ,
70
1
if (_status87() & 0 x 4 )
ShowMessage(" ");
.
if (_status87() & 0x30)
ShowMessage(" ");
.
,
- , . - .
, . .
8 9 PC, . :
, float (1 )
, double (8 )
, FPU,
_contro!87. .
SetPrecisionMode . 4. , ,
double = 3;
long double z = 1 / ;
, z _cont!87 , :
PC
_control87(OxFOOO, 0x300)
0.333333343267440796
_contro!87(OxF200, 0x300)
0.333333333333333315
_contro!87(OxF300, 0x300)
0.333333333333333333
10 11 RC, . :
0
, ..
, ..
, ..
71
C++
_contro!87 ( . 4 SetRoundMode). , ,
float = 3;
f l o a t , z;
= 1 / ;
2 = -1 / ;
z _controI87
, , :
_control87(OxFOOO, OxCOO)
0,33333334327
-0,33333334327
_control87(OxF400, OxCOO)
0,33333331347
-0,33333334327
_eontrol87(OxF800, OxCOO)
0,33333334327
-0,33333331347
_contro!87(OxFCOO, OxCOO)
0,33333331347
-0,33333331347
RC
1.9.4 ,
Assign
C++ .
=Y
+=
+= Y
"=
,
, ,
,
, ,
-= Y
*=
*= Y
/=
/= Y
%'-
X %= Y
= Y
= Y
&=
&= Y
"=
~= Y
X =Y
72
"=" . , "=", .
, X += Y X = X + Y, .
: X %= Y X = X % Y .. (. . 1.9.2 1.9.6).
.
.
.
. , :
=
( = = 1)
+1;
.
1, 2. . ,
, (.. = 1). 1,
= 1. 1, 1 + 1. 2 .
Assign,
. Assign :
->!(_);
:
A->Assign(B);
( ) .
:
= ;
. Assign
. ,
. ,
( ),
. , ,
. , , , - .
1.9.5
. true , , false (0) , . :
73
C++
==
1 ==
N
<
X != Y
< Y
>
Len > 0
-^
>=
Cnt <= 1
1 >= 1
, , .
"<", "<=", ">", ">=" ,
.
"==" "!=" .
true false, .
: "==" "=". ,
i f ( == 2) ...;
\
if ( = 2)
. , C++
, , , , if. 0, false. true. = 2
true , , if . .
, C++Builder
if :
"Possibly incorrect assignment" ( ).
, . , .
1.9.6
: true false (0).
&&
&&
II
||
74
"!" true,
. , ! == 0.
"&&" true, . 0 (false), false. ,
, .
"||" true,
. 0 (false), false. ,
, .
1.9.7
, .. .
&
X&Y
I
*
| Y
X"Y
YI
" " .
"&", "|" " "
, 1 2 :
El & E 2
1 * 2
1 | 2
""
, . .
,
. .
2 .
""
, . ,
. 2.
C++
75
1.9.8 ()
",", ,
, . . void. . .
,
= 4;
b = + 5;
= 4, b = + 5;
:
_1, _2, . . . , _
, .
, . ,
f u n c ( i , (j = 1 , j + 4) , k) ;
, . : (i, 5, k).
for (.
. 1.10.2.1) . , for :
int [10] , sum, i;
sum = [ 0 ] ;
for (i = 1; i < 10; i++)
sum += A [i] ;
To :
int A [ 1 0 ] , sum, i;
: ,
( i sum),
, ( sum i).
",".
. , , .
1.9.9 (?:)
"?:" - ()
C++, . :
76
1
? 1 : 2
, , ( ),
, ( ). ,
Labell->Caption =
grade > 3 ? " " : "";
1.9.10 sizeof
sizeof ,
, . size_t (unsigned).
:
sizeof
sizeof ( )
:
sizeof *Labell;
sizeof(TLabel);
sizeof a;
sizeof (int);
,
(*Labell), (TLabel, int), ().
, , , . , , , sizeof.
, sizeof
, , .
, ,
(.. ). sizeof array/
sizeof array[0].
, , . sizeof
.
sizeof , , .
C++
77
1.9.11 typeid
typeid type_info,
. :
typeid( )
typeid( )
, typeid , . , .
1.9.13 (::)
, "::". :
:
::
:
:: _
,
. , ::1 I,
I. () . . 1.8.
- - , , . - .
, C++Builder, .
, C++Builder,
. :
78
1
Labell->Caption
Labell->Hide()
, , , , :
(*Labell).Caption
, .
1.9.15 () ()
"" ""
, cout cm,
, (. . 2, . 2.10.3.1).
,
outfile infile
.
#include < f s t r e a m . h >
// outfile, "Test.dat"
ofstreaift o u t f i l e ( " T e s t . d a t " ) ;
if(loutfile)
{
ShowMessage(" ");
return;
)
...
//
outfile.close();
//
// infile, "Test.dat"
ifstream infile("Test.dat");
if(!infile)
{
ShowMessage(" ");
return;
}
...
//
infile.close();
//
. . 2, . 2.10.3.1.
, .. "". ""
, . , , ,
,
, - , , ,
.
"" , , , . . ,
o u t f i l e "!' 1 ;
"!".
C++
79
int i = 25;
o u t f i l e i;
"25".
"" , ..
. , ,
outfile " 2 * 2 = " (2 * 2 ) ;
" 2 * 2 = 4". ,
"2 * 2 = " outfile,
o u t f i l e (2 * 2 ) ;
.
, , . Memo,
OnClick :
char sin [80];
ofstream outfile("Test.dat");
if(!outfile)
{
ShowMessage(" ");
return;
}
// , :
outfile "2 * 2 = " 2 * 2;
//
outfile.close ();
//
ifstream infile("Test.dat");
if(!infile)
{
ShowMessage(" ");
return;
}
Memol->Clear ( ) ;
while(!infile.eof())
{
infile.getline (si,80);
Memol->Lines->Add(AnsiString(si));
}
//
infile.close();
. 2.10.3.1.
, "Test.dat", outfile,
"" , .
, infile, Memol.
"". ( ) ,
. ,
"\" endl (
end line ). ,
o u t f i l e "2 * 2 : \ " (2 * 2) " \ " ;
80
int i = 25, j = 2;
char s[80] = "25 * 2 = ";
o u t f i l e s (i * j) endl;
: "25 * 2 = 50".
, char * .
AnsiString (. . 2.5.2, 3.1.6, 3.4.2.3) "" .
char * c_str:
' A n s i S t r i n g sa = " A n s i S t r i n g " ;
o u t f i l e s a . c _ s t r ( ) endl;
. Editl
Edit2, , :
int i = S t r T o I n t ( E d i t l - > T e x t ) ;
int j = S t r T o I n t ( E d i t 2 - > T e x t ) ;
o u t f i l e i (i == j ? " " : " ") " " j
endl;
"0063F610" Memol.
char *.
, , s, , . "" . , (void *). :
o u t f i l e (void * ) s endl;
"". , , "". endl. . 2, . 2.10.3.2.
"". , , ,
C++
81
. , . .
,
infile i j ;
, , infile, i j.
, .
, , . , ,
o u t f i l e i ' ' j endl;
.
o u t f i l e i j endl;
.. ,
i, j .
"" char *.
, :
char s [ 8 0 ] ;
i n f i l e s;
s. ,
, .
, 0. , , ,
, :
while (infilesl)
1.9.16
, , .
16 , .
. , , . ,
, .
, (,
), ,
.
, , .
, ,
, new delete, . 1.11.
0 -> "
+ - ++ & * sizeof new delete
82
* _> *
*/%
+
< <= > >=
i
&
I
&&
I
?:
= *= /= %= += -= &= "= = = =
, + b * / d + (( * ) / d). , , .
, b * ,
. .
, ,
.
1.9.17
C++ , ".", "*", "::", "?:" sizeof.
" = " , " [ ] " , " ( ) " "->" -. .
, -
, . ,
C++. ,
, .., , .
(
), , ,
operator, . , operator+ .
,
, . "="
. - .
, ;
C++
83
. "&"
;
. .
.
. ,
.
.
, . , , .
,
, , C++ . ; , , .
Complex, , . , , .
class Complex {
public:
double Re;
//
double Im;
//
Complex(double = 0.0, double = 0.0); //
//
Complex operator* (const Complex &) const; //
Complex operator* () const;
//
//
Complex operator-(const Complex &) const; //
Complex operator-() const;
//
Complex &operator=(const Complex &) ;
//
};
//
Complex::Complex(double R, double I)
(
Re = R;
Im = I;
}
//
Complex Complex::operator+(const Complex &X) const
{
Complex R;
R.Re = Re + X.Re;
R.Im = Im -I- X.Im;
return R;
}
//
Complex Complex::operator-(} const
{
Complex R;
R.Re = -Re;
R.Im = -Im;
return R;
}
//
84
1
Complex & Complex::operator=(const Complex SR)
{
Re = R.Re;
Im = R.Im;
return *this; //
}
-: Re
, Im . 0.
Complex o p e r a t o r + ( ) const;
,
.
.
R Complex, .
Re Im, ,
. .
Re Im. ,
*this. this .
,
. .
= , Complex, A.operator=(B). , = = ? ,
B.operator=(C).
A.operator=(B.operator=(C)). , , . ,
*this. .
, , :
Complex ( 1 , 1 ) , B ( 2 , 2 ) , C , D ;
= -;
= + + ;
D = - ;
= = ;
C++
85
1.10
1.10.1
1.10.1.1 if
if . , .
: if if...else. if :
if
()
, , .
, .
( true ), if
. if . ,
= ;
if ( > ) = ;
, =
> .
C++ ( )
( true,
false), . :
int , , ;
i f ( - /)
if( - /)
- ,
/ .
. :
if
(int v = f u n c ( a ) )
. ..;
if, .
if...else :
if () !;
else 2;
true, , . ,
else .
.
if (J == 0)
ShowMessage(" " ) ;
else
Result = I / J ;
86
, , ,
:
if (J == 0)
{
ShowMessage(" ");
Result = 0;
)
else
Result = I/J;
, else .
if , if else. , else if,
else.
,
if (!)
if (2)
!;
'else 2;
else if, .. 2
, , . ,
if (!)
{
if (2) !;
else 2;
}
else if,
:
if
(!)
!
if () !;
}
else 2;
1.10.1.2 switch
switch
.
switch :
switch (_) {
case _1 : _1;
break;
case _ : _;
break;
default : ;
)
//
//
//
, .. , , ,
.
, case, , . ":", ( -
C++
87
), ,
.
,
case, , , ,
, . , , ,
, ,
break;
switch .
, , default. ,
default switch. , ,
.
, , .
.
, .
Key char, , . FYes, FNo,
.
switch ( K e y ) {
,
,
case.
1.10.1.3 goto
goto
, .
goto . , goto
.
goto ,
. , , .
. ,
Lbegin:
, goto.
, goto, , . ,
, .
.
, , -
88
. switch ( case -- .
. 1.10.1.2).
, .
goto :
goto ;
, goto , , :
goto L1;
second: . . .
LI:
...
, , ,
goto.
1.10.2
1.10.2.1 for
for
( , ) . . (),
. ,
.
for:
for
(!;
2;
! , ,
2 ,
.
for . ! ( , ..
. . 1.9.8).
( ) .
2 . (
true ), ,
for. , . ,
2,
. - 2 false ( ), , for.
for. ,
Data 10:
int Max, Sum;
= Sum = Data[0];
f o r ( i n t i = 1; i < 10; i++)
{
if (Data[i] > Max) Max = D a t a [ i ] ;
Sum += D a t a [ i ] ;
C++
89
for i, , 1.
. ,
1, , , 9. for i 1 .
i for.
. i
.
BCC32.EXE,
, , , -Vd.
for
(. . 1.9.8).
. , i Sum ,
for:
int Sum,i;
f o r ( S u m = D a t a [ 0 ] , i = 1; i < 10; Sum += D a t a [ i + + J ) ;
for ,
Sum, , i.
for
i. for , .
. , , . . ,
, Editl, .
,
.
AnsiString s;
char Key = 'A' ;
s = Editl->Text;
, i , Length(). i 1 .
,
for
Length(), .
Length() .
for . ,
- . ,
,
. , -
goto , . 1.10.2.4. for , .
90
- ,
( ) . ,
f o r ( ; i<10;)
.
, for .
for .
for, Mat,
Mat! Mat2 . . :
int I, J, , X;
f o r ( I = 1; I <= ; I++)
f o r ( J = 1 ; J <= M; J++)
{
X = 0;
f o r ( K = 1; <= ; ++)
X += M a t l [ I ] [ K ] * M a t 2 [ K ] [ J ] ;
Mat [I] [J] = X;
}
1.10.2.2 do...while
do...while , , ,
. do...while:
do while ();
. .
,
. true ( ), . , false ().
, do...while.
, ,
. , ,
false. , ,
.. . .
- , , break , . 1.10.2.4.
do , - . , ,
.. . , , .
- , while ,
. ,
.
, .
C++
91
, while (. . 1.10.2.3).
, for (. . 1.10.2.1).
, Filel.txt ,
( ), Editl. strstr. feof.
FILE *F;
char S [ 2 5 6 ] = "";
A n s i S t r i n g SKey = Editl->Text;
i f ( { F = f o p e n ( " F i l e l . t x t " , " r " ) ) == NULL)
{
ShowMessage(" ");
return;
do
fgets(S,256,F);
while ( !feof(F) S& (strstr (S,SKey.c__str () ) == NULL) ) ;
fclose(F);
if (strstr(S,SKey.c_str()) == NULL)
, ,
strstr NULL ( ).
( ),
.
1.10.2.3 while
while
, . while:
while () ;
. , . true
( ), , , . ,
false (). , , while.
, , , .
,
false. , , .. . .
-
, , break, , , . 1.10.2.4.
while
, - .
, , ..
. , , . - , while , .
92
( ),
.
Filel.txt ,
Editl. do...while, while.
,
, .. .
, .
FILE *F;
char S[256] = "";
AnsiString SKey = Editl->Text;
while(!feof(F)&&(strstr(S,SKey.c_str()) == NULL))
fgets(S,256,F);
fclose (F);
if (strstr(S,SKey.c_str()) == NULL)
for:
for(; Ifeof (F) && (strstr (S,SKey.c__str () ) == NULL) ;
fgets (S,256,F));
while .
1.10.2.4 : break. Continue, return,
Abort
, - . ,
, - for, do while.
-
(). .
for, do while , .
break. , switch. break for, do while .
,
:
while ( Ifeof (F))
{
fgets(S,256,F);
if(strstr(S,SKey.c_str()) !=NULL) break;
}
goto, - , .
C++
93
, ,
return. break, return , , .
, , ,
- (. . 1.12).
Abort, , - .
.
Continue, , .
Continue,
. , ,
, , "*". :
w h i l e ( ! f e o f (F) )
{
fgets <S,256,F) ;
i f ( S [ 0 ] != ' * ' ) continue;
i f ( s t r s t r ( S , S K e y . c _ s t r ( ) ) ! = N U L L ) break;
}
, "*", . ,
strstr , .
1.11
. , , ,
. ,
, ..
. : , . , , ,
.
heap. : malloc, calloc,
realloc, free new delete.
stdlib.h alloc.h.
malloc :
void *malloc(size_t size);
94
. .
size = 0 nitems = 0, NULL.
realloc
. :
void *realloc(void *block, size_t size);
heap, block,
size. , block , malloc, calloc realloc. block
NULL, realloc , malloc.
size , ,
block, , NULL. ,
size 0 ,
, .
, realloc NULL. , . block,
.
free :
void f r e e ( v o i d *block);
, malloc, calloc
realloc, block.
.
malloc , , - , .
linclude <stdio.h>
tfinclude <alloc.h>
char *str;
// str ,
str = (char *) raalloc(lOO);
//
free(str);
calloc:
str = (char *) calloc(100, s i z e o f ( c h a r ) ) ;
malloc calloc , , :
str = (char *) r e a l l o c ( s t r , 2 0 ) ;
, :
realloc(str,
20);
, NULL (),
. , , , NULL.
.
:
new delete.
new malloc,
, malloc. ,
C++
95
C-H-Builder.
new :
<::> new <> <()>
<::> new <> () < ()>
.
, , . "::" new, . ( ) . .
, . :
double *A = new double;
. *. :
* = 5.1;
Labell->Caption = *;
,
:
double = *new double;
.
. :
double *A = new double (5.1);
double = *new double ( 5 . 5 ) ;
TEdit:
TEdit *Edit = new T E d i t ( t h i s ) ;
Edit->Parent = Forml;
,
this Owner. Forml. .
new
. ,
sizeof(THn).
,
new . .
,
delete .
,
bad_alloc.
catch (. . 1.12.5), ,
. ,
, ,
:
#include <iostream.h>
try
96
1
new
}
catch(std::bad_alloc)
(
}
bad_alloc,
, .
set_new_handler()
. set_new_handler
, .
,
void Fl(void)
{
ShowMessage("He ");
exit(l) ;
}
, , (, OnCreate )
set_new_handler ( F l ) ;
new,
bad_alloc, ( ).
,
.
bad_alloc, ,
set_new_handler(0);
new NULL.
, , NULL ,
new.
. .
,
double *A = new double [100];
100 .
, : A[ind]. new ,
, .
. ,
double *M = new double[100] [100];
.
, , . :
double * = new double[n] [ 100];
, . . delete.
,
free. delete . , new, delete.
97
C++
:
<::> delete <>
<>
<::> delete
delete < > [ ];
:
double * = new double (5.1);
delete A;
delete , NULL. ,
, :
delete A ;
= NULL;
1.12
1.12.1
: , , ..
.
- - ,
. .
, . - , .
(
), Application->HandleException. . . 1.3
StrToInt "1.5" .
C++Builder , , . 1.3 , C++Builder, .
, .
C++Builder . [1].
, , . 1.3
()
()
)
'i .5' is not a valid integer value.
OK
98
. , ,
. , , :
FILE *fp;
int size;
char *str;
fp = fopen("a.tmp", "w");
fprintf(fp," a.tmp");
str = (char *) malloc (size);
<, >
remove(".tmp");
free(str) ;
finally
. try ...
finally. , ,
, :
try
// ,
}
__finally
// ,
finally , , . ,
, ,
C++
99
; ,
finally.
,
:
FILE *fp;
int size;
char *str;
try
<
fp = fopen("a.tmp", "w");
fprintf(fp," a.tmp");
str = (char *) malloc(size);
// ,
//
)
finally
{
remove(".tmp") ;
free(str);
}
remove free ,
try,
. , .
, .
, :
- , ( . 1.3 , ). ,
finally , ,
, .
ExceptAddr ExceptObject, ,
finally , .
. . .
exit:
tinclude <stdlib.h>
void e x i t ( i n t s t a t u s ) ;
status . 0 , ,
. , , status : EXIT_FAILURE , EXIT_SUCCESS .
:
exit(O);
exit(EXIT_SUCCESS);
exit(l);
exit(EXIT_SUCCESS);
//
//
//
//
100
exit ( ). .
- (,
), , .
atexit:
#include <stdlib.h>
int atexit (void (_USERENTRY * f u n c ) (void) ) ;
func . atexit, .
: , .
, myexitl
myexit2:
void myexitl (void)
{
//
}
void myexit2 (void)
(
//
}
, .
:
atexit (myexitl ) ;
atexit (myexit2) ;
, , OnCreate
.
exit myexit2,
myexitl, ( ),
.
myexitl, .tmp ( findfirst,
findnext remove . . 4):
void myexitl (void)
<
struct ffblk ffblk;
int D;
D = findfirst ("*. tmp", Sffblk, 0) ;
while (!D)
{
remove (ffblk. ff_name) ;
D = findnext (Sffblk) ;
exit .
C++
101
Close,
, . , . , , - , .
1.12.3 VCL
,
, . C++Builder .
. , , Exception () VCL,
, exception C++. .
1.12.5.
Exception VCL
,
EAbort
EAbstractError
EAssertionFailed
EBitsError
ECacheError
ECommonCalendarError
TBaseArray:
,
,
, Assert VCL Pascal
TBits
,
TCommonCalendar
EDateTimeError
TDateTimePicker
EComponent Error
102
1
EReconcile-
Error
TClientDataset;
Context ,
de
, BDE
EDBEngineError BDE. Errors
TDBErrors.
Error-Count
ENoResultSet
TQue
SELECT
EUpdateError
vider
EDBEditError
EDimension
EDimlndex
External
, Windows
EAccessViolation
;
NULL, ,
,
EControlC
Ctrl+C .
, ,
EIntError
EDivByZero
C++
103
ERange
; Object Pascal
Elnt
Overflow
EMathError
; ;
EMathError
Elnvalid Argument
EInvalidOp
: ,
EOverflow
EUnderflow
EZeroDivide
EPrivilege
,
EStackOverflow
104
EExternalException
EHeapException
EInvalidPointer , ,
EOutOfMemory
; OutOfMe
EOutOf Resources
Windows,
Windows
;
Windows
EInOutError
- ; , I/O checking
Pascal ;
ErrorCode
EIntfCastError
EInvalidCast
Elnvalid
Graphic
Elnvalid , , Graphic Operation
Clipboard
ElnvalidGrid
Operation
ElnvalidOperation
;
, , , ( Parent = NULL). (,
Forml::BeginDrag).
105
C++
EListError
TStringList TStrings:
, TStringList,
Duplicates du,
,
ELowCapacity
,
; Capacity,
EMCIDevice
Media Control Interface (MCI)
EMenuError
EOleCtrlError
ActiveX
EOleError
OLE; C++Builder ,
EOleSysError
OLE,
OLE IDispatch; ErrorCode
.
EOleException
EOutlineError
OLE,
Outline
EOutOfResources
Windows, Windows ;
Windows
EPackageError ,
EParserError
,
- ( - )
EPrinter
; ,
, ,
-
EPropReadOnly OLE
,
EPropWriteOnly
OLE
,
106
EPropertyError
ERegistryException
EResNotFound .DFM
.RES .
EStreamError
EFCreateError
; ,
,
j
EFOpenError
EFilerError
EReadError
EWrite
EClassNot- Found
Elnvalid
Image
(, Synchronize Tthread
)
ETreeView View
Error
EUnsupported-
EVariantError , Variant
EWin32Error
Windows,
RaiseLastWm32Error, Windows
EStringListError
EThread
C++
107
1.12.4.1
Exception :
HelpContext
hit
- . , , , F I . 0
Message
System::AnsiString
,
;
Message ,
. , ,
Message string .
HelpContext - . , ,
, F l .
HelpContext 0.
(. ). ,
throw E x c e p t i o n ( " H e ", 4 ) ;
108
Exception(int Ident)
Message Ident
Exception(int Ident,
const System::TVarRec * Args, Message Ident
const int Args_Size)
Args
Exception(const System::AnsiString Msg, int AHelpContext)
Msg Message; HelpContext HelpContext -
Message,
Msg
Args;
HelpContext HelpContext -
Message Ident
; HelpContext
HelpContext
-
Exception(int Ident,
const System::TVarRec * Args, Message
const int Args_Size,
int AHelpContext)
,
Ident, Args;
HelpContext
HelpContext
-
:
throw E x c e p t i o n ( " H e " ) ;
throw E x c e p t i o n ( F o r m a t ( " %d %d",
OPENARRAY(TVarRec, (N1, N 2 ) ) ) } ;
C++
109
, . , .
- :
throw Exception("He ", 4 ) ;
, , F1,
4.
, :
throw E x c e p t i o n ( 6 5 3 6 9 ) ;
Message 65369
.
raise E M y . C r e a t e R e s F m t ( 6 5 3 6 9 , O P E N A R R A Y ( T V a r R e c , ( N 1 , N 2 ) ) ) ;
65369
Message N1 N2.
<
}
catch ( TypeToCatch )
{
,
}
110
catch(EOverflows)
{
Application->MessageBox("",
" ",_);
if (StrToFloat(Editl->Text) * StrToFloat(Edit2->Text) >= 0)
A = 3.4E38;
else A = -3.4E38;
}
(, , - ), StrToFloat EConvertError. .
( EZeroDivide). , catch , : .
, . 1.12.3,
,
. catch
. , EZeroDivide (
), EOverflow ( ), ElnvalidArgument ( ) EMathError. catch, , :
catch(EMathErrors)
,
{
Application->MessageBox(" ",
" ", MB O K ) ;
}
, .
, . Message, , .
C++
111
, catch
,
. .
, EMathError:
catch(EMathErrors E)
{
AnsiString S = " : ";
if(E.Message == "EZeroDivide") S += " ";
if(E.Message == "EOverflow") S += "";
if(E.Message == "EInvalidArgument") S += " ";
Application->MessageBox(S.c_str(), " ", _);
}
, Message .
, catch ,
:
catch(...)
(
ShowMessage(" .");
}
catch(...) catch,
, , .
, , , .
C++Builder . catch(...) ,
: "The handler must be last"
(" ").
catch(...).
- , .
1.12.5.2 ,
try...catch . try...catch,
try ,
try...catch. .
try...catch, . ,
try...catch ( ) ..
try...catch,
, . . , , , , .
catch, , , , try...catch.
,
. , . -
112
try...catch, ,
.
, .
OnException Application . .
MyException.
:
void
:
void
{
//
}
MyException OnException. , , , OnCreate :
Application->OnException = MyException;
.
, . MyException ,
catch .
Exception. ,
Exception .
ShowException, :
Application->ShowException();
, ,
. 1.3. ,
. , - . . ClassName. OnException , ,
:
void
{
f a s t c a l l T F o r m l : : M y E x c e p t i o n ( T O b j e c t *Sender,
Exception *E)
C++
113
. 1.4 , .
, . 1.4,
. 1.3.
. 1.4
,
()
()
.*i
1.12.6
1.12.6.1 throw
. , - , ,
try.. .catch.
, , .
throw.
:
try
//
try //
{
// ,
//
}
catch ( &)
{
// ,
throw;' //
}
// ;
//
} // try
catch ( &)
{
// ,
, , : , . ,
, . , , .
throw
, . , , , -
. , - , . , ,
. , .
114
throw, . catch,
, . ,
, ,
Editl, , , :
if(Editl->Text == "") throw "He ";
char *. .
, , catch:
catch(char * s)
Application->MessageBox(s, " ", MB_ICONHAND|MB_OK);
char *
, . 1.5.
. 1.5
,
char
*!
throw ,
. :
if
( . . . ) throw 1;
int.
:
c a t c h ( i n t & i)
{
switch ( i )
{
case 1 : . . .
break;
case 2 : . . .
break;
, ,
, . ,
, , , () . st
Pers
(st.il) .
(st.il) (st.i2) . , , st. .
C++
115
struct Pers
{
1 st = { 0 , 5 } ;
try
{
i f ( . . . ) st.il++;
. 1.6.
. 1.6
- 5
-1
: Abort - -
, abort .
EAbort (,
Esc - ). Abort , . , . , - ,
try...catch :
catch(EAbort&)
116
1.12.7 C++
, C++Builder. , . C++ .
C++ , #include ,
(. . 5),
:
using namespace std;
. , std::bad_alloc.
C++ exception,
stdexcept. , , , ,
-: what (). ,
.
exception :
bad_alloc
new
(. . 1.11)
dynamic_cast,
bad_cast
,
, bad_exception
(. )
bad_typeid
typeid
ios_base::failure
logic_error
runtime_error
<new>
<typeinfo>
<exception>
<typeinfo>
<ios>
<exception>
<exception>
. , .
<stdexcept> logic_error:
C++
117
domain_error
invalid_argument
length error
- , ,
out_of_range
..
, ,
,
.
runtime_error , <stdexcept> :
range_error
overflow_error
underflow_error
0
0
C++ , , , ,
throw .
, what().
, , F, 1 R. ,
R , , ,
.
, . ,
, ( exception) - .
:
finclude <stdexcept>
u s i n g namespace std;
double F (double R)
if (R == 0)
try
{
118
1
// F
double = F(B);
}
catch(exception & e)
(
//
ShowMessage(e.what() ) ;
}
,
,
throw, , . :
double F ( d o u b l e R) throw (overflow_error)
, , . :
double F ( d o u b l e R) throw ()
.
, - . unexpected, terminate. ,
F :
double F ( d o u b l e R)
{
throw
(overflow_error)
func);
, unexpected.
unexpected.
, :
void MyUnexpectedO
(
throw;
C++
119
. , ,
:
set_unexpected(MyUnexpected) ;
, ,
OnCreate .
, unexpected, -
, ,
:
unexpected_handler UH;
//
UH = set_unexpected(MyUnexpected);
//
UH = set_unexpected(UH);
unexpected, .
, F , :
try
// F
double = F(StrToFloat());
}
catch(overflow_error & )
{
// overflow_error
ShowMessage(e.what());
}
catch(exception & e)
{
//
ShowMessage(" : "
AnsiString(e.what ( ) ) ) ;
}
set_terminate
terminate , unexpected.
1.13
(),
. : , Ctrl-C, ,
( ), , ( ).
, signal.h ( . 4,
signal).
120
SIGABRT
(,
abort). _exit(3)
SIGFPE
, ,
, . _exit(l)
SIGINT
(, Ctrl-C).
INT 23h
tinclude <signal.h>
:
void Handl_SIGUSRl(int N )
{
if(MessageDig("?", mtConfirmation,
T M s g D l g B u t t o n s ( ) mbYes m b N o , 0 ) == m r Y e s )
// :
signal(SIGUSR1, Handl^SIGUSRl);
else e x i t ( E X I T _ S U C C E S S ) ;
}
,
. ,
. , , signal,
. , SIGUSR1 .
, . , , .
SIGUSR1
raise(SIGUSR1);
.
( . . 4,
signal) .
fptr:
typedef void
(*fptr)(int);
C++
121
signal:
signal (SIGFPE,
(fptr)Handl_SIGFPE);
1.14 Windows
1.14.1 C++Builder
Windows , , (messages). : , ,
Windows, , , , , , .
, , C++Builder , . Windows. ,
C++Builder ,
.
Windows TMessage,
. Msg , . Messages.hpp C++Builder ,
, - .
- - wParam (word
parameter word) IParam (long parameter
long) Result. , C++Builder int.
Word: WParamLo, WParamHi, LParamLo, LParamHi, ResultLo,
ResultHi. "Hi" , "Lo" - .
API Windows C++Builder . , ,
XPos YPos,
IParamLo IParamHi.
Windows . . WM_CLOSE, , .
. , . , .
.
, WM_ACTIVATE.
, . , ,
.
:
WM_ACTIVATE
fActive = LOWORD(wParam);
fMinimized = (BOOL) HIWORD(wParam);
hwndPrevious = (HWND) IParam;
122
*
.
fActive , .
:
WA_ACTIVE
WA CLICKACTIVE
WA_INACTIVE
fMinimized , , . .
hwndPrevious , , , , ,
, .
, , .
, .
1.14.2
API Windows , .
1.14.2.1 SendMessage, PostMessage Perform
SendMessage , . PostMessage, .
SendMessage:
Int SendMessage(HWnd hWnd, unsigned int Msg,
WPARAM wParam, LPARAM IParam);
hWnd , .
HWND_BROADCAST,
, , .
Msg . wParam 1ram . ,
, , .
PostMessage :
bool PostMessage(HWND hWnd, unsigned int Msg,
WPARAM wParam, LPARAM IParam);
SendMessage, . , PostMessage
, .
hWnd Msg SendMessage. hWnd = NULL, (
) .
PostMessage .
GetLastError.
, . Perform, :
P e r f o r m ( u n s i g n e d int Msg, WPARAM wParam,
LPARAM IParam);
C++
123
, ,
, C-H-Builder.
1.14.2.2
, . , Forml Form2,
, UlMessl U2Messl , PMessl. Forml , Form2.
#include "U2Messl.h"
WM_ CLOSE (
SendMessage) Form2. SendMessage
, Handle. WM_CLOSE ; wParam IParam .
:
Form2->Perform(WM_CLOSE,0,0);
.
. ,
Show Form2 Form2,
Close Form2 . Forml .
, ,
Form2 , Windows, Hide. . , Caption " Pmess2" ( )
PMess2, UlMess2. . .
Forml
PMessl. PMessl Forml ,
"Exec Pmess2" "Close Pmess2".
WinExec("Pmess2.exe",SW_RESTORE);
, , PMess2 . . Close
Pmess2
SendMessage(FindWindow("TForml"," P m e s s 2 " ) , W M _ C L O S E , 0 , 0 ) ;
FindWindow
, , SendMessage WM_CLOSE.
. , Exec Pmess2,
PMess2, -
124
. Close Pmess2
PMess2.
.
(TForml) ,
. FindWindow, , . ,
- ? ,
Windows , ,
, ,
WM_CLOSE (, , ).
. (, SciCalc ) WinSight 32 , :
SendMessage(FindWindow ("SciCalc",""),WM_CLOSE,0,0);
1.14.3
Windows . . ,
, .
Windows :
1.
() , .
2. .
3. .
, :
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(parameter!, parameter2, parameters)
END_MESSAGE_MAP
BEGIN_MESSAGE_MAP ,
END_MESSAGE_MAP ,
MESSAGE_HANDLER .
MESSAGE_HANDLER ,
, -.
Windows . , WM_CLOSE. , "". , TWMClose.
,
,
Result, . - , "WM_" "On".
, OnClose.
C++
125
PMess2
Form2 PMessl WM_CLOSE,
Forml. Forml
PMess2 Form.2 PMessl Labell,
, ,
. (
Form2; Forml Form2
Forml):
// U2Messl.h
class TForm2 : public TForm
{
published:
// IDE-managed Components
TLabel *Labell;
private: // User declarations
void
fastcall OnClose(TWMCloseS Message);
public:
// User declarations
fastcall TForm2(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_CLOSE, TWMClose, OnClose)
END_MESSAGE_MAP(TComponent)
};
//
// U2Mess 1. cpp
void
fastcall TForm2::OnClose(TWMCloseS a)
(
Label2->Caption = "! !";
if (MessageDlgPos(" . ?",
mtConfirmation, TMsgDlgButtons() mbYes mbNo mbCancel,
0,BoundsRect.Left,BoundsRect.Bottom) == mrYes)
Close ();
else Label2->Caption = "He !";
a.Result = 0;
}
U2Messl.h public ,
WM_CLOSE. OnClose TWMClose.
private . , message .
OnClose WM_CLOSE ,
, . MessageDlgPos,
, . Close. a.Result = ,
WM_CLOSE.
PMessl.
Show Form2 Form2
Exec Pmess2 PMess2, , Form2
PMess2 , ,
: Close Form2 Close Pmess2, .
.
, .
Close Pmess2 , , ,
, Forml
Close Pmess2. . -
126
, , Close
Pmess2. , , .
, WM_CLOSE . ,
, , . (. 1.14.1) WM_ACTIVA. . , , f Active. WA_INACTIVE , . , .
(Forml Form2 PMessl,
Forml PMess2) WM_ACTIVATE.
, , Label2, .
( Form2):
// U2Messl. h
class TForm2 : public TForm
<
published:
// IDE-managed Components
TLabel *Labell;
TLabel *Label2;
private:
// User declarations
void
fastcall OnClose(TWMCloseS Message);
void
fastcall OnActivate(TWMActivateS Message);
public:
// User declarations
fastcall TForm2(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_CLOSE, TWMClose, OnClose)
MESSAGE_HANDLER(WM_ACTIVATE, TWMActivate, OnActivate)
END_MESSAGE_MAP(TComponent)
};
//
// U2Mess 1.cpp
void
fastcall TForm2::OnActivate(TWMActivateS a)
{
if (a. Active == WA__INACTIVE)
Label2->Caption = " !";
else Label2->Caption = "! !";
a.Result = 0;
}
'
OnActivate , .
Active ,
. .
PMessl.
, , .
1.14.4
, API Windows.
, .
C++
127
WM_USER, .
,
tdefine WM_MyMessl WM_USER
#define WM_MyMess2 WMJJSER + 1
TMessage.
:
struct TMessage
(
unsigned int Msg;
long WParam;
long LParam;
long Result;
};
WParam LParam .
PMessl
Forml CSpinEdit , . PMess2, ,
CSpinEdit.
, UlMessl.h
, , WM_MyPost:
#define WM_MyPost WM_USER
SendMessage(FindWindow("TForml"," Pmess2"),
WM_MyPost,0,CSpinEditl->Value);
! . :
, SendMessage WM_MyPost
WM_USER. .
PMess2.
, :
//
UlMess2.h
f d e f i n e WM_MyPost VWMJSER
/ /
class TForml : public TForm
private:
// User declarations
void
f a s t c a l l OnMyPost(TMessage& Message);
public:
// Wser declarations
f a s t c a l l TForml(TComponent* O w n e r ) ;
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MyPost, TMessage, OnMyPost)
END MESSAGE MAP(TComponent)
128
1
//
UlMess2.cpp
void
f a s t c a l l T F o r m l : : O n M y P o s t ( T M e s s a g e S a)
{
Label2->Caption = " " + I n t T o S t r ( a . L P a r a m ) ;
}
TMessage Windows.
, . ,
. switch .
C++
, STL, , (. 2.14.7). , STL, . 5.
2.1 ,
, C++Builder, :
Aggregate
Array
struct
union
class
Function
Scalar
Arithmetic
Enumeration
Pointer
Reference
void
. : void, char, int, float double,
short (), long (), signed ( )
unsigned ( ). , unsigned char, unsigned int, signed int ( signed ).
C++ :
char
unsigned char
-128 126
0 255
short
130
unsigned short 2
0 65 535
enum
long
unsigned long
int
long
unsigned int
unsigned long
float
double
long double
10
bool
true false
int8,
int!6,
int32,
int64,
. . 2.3.
, C++Builder,
C++, bool , . C++. . 0
false, true.
- ,
- , , , , .
, , , , , .
, . , , .
(. . 1.6.1 1.7.1). :
double = 5 . 4 , b = 2;
int ;
void F l ( d o u b l e A ) ;
.
. , (. . 1.8).
:
typedef _ ;
, _ . ,
typedef double A r [ 1 0 ] ;
10 .
. :
= { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ;
typedef , C++. -
C++
131
bool Boolean;
int Integer;
short Smallint;
unsigned char Byte;
C++
Shortlnt
signed char
typedef
Smallint
16
short
typedef
Longlnt
32
int
typedef
Byte
unsigned char
typedef
Word
16
unsigned short
typedef
Integer
32
int
typedef
Cardinal
32
unsigned int
typedef
Boolean
true/false
bool
typedef
ByteBool
true/false
8
unsigned char
typedef
WordBool
true/false
16
unsigned short
typedef
LongBool
true/false
32
BOOL (WinAPI)
typedef
AnsiChar
char
typedef
WideChar
Unicode
wchar_t
typedef
Char
char
typedef
AnsiString
AnsiString Delphi
AnsiString
Delphi, SmallString<n>
n = 1..255
ShortString Delphi, SmallString<255>
255
AnsiString
AnsiString Delphi
String
float
Single
32
String[n]
typedef
typedef
typedef
Double
64
double
typedef
Extended
80
long double
typedef
Real
32
double
typedef
132
Delphi
C++
Pointer
32
void *
typedef
PChar
32
unsigned char *
typedef
PAnsiChar
ANSI
32
unsigned char *
typedef
Comp
64
Comp
OleVariant
variant OLE
OleVariant
2.2
, , C++Builder
.
: , . ,
. , , ;
, ..
, . .
,
.
. ,
, .
.
double = 5 . 4 , b = 2;
int = * b;
10,
10.8. * ,
, .
!
int m = 1, n =
double A = m /
= 0. , m / n , .
int m = 1;
double n = 2;
double A = m / n;
A = 0.5. double, ,
double, double.
, :
double = 300, b = 200;
short = * b;
C++
133
, , -5536, 60 000. ,
short , 32 767.
60 000,
short .
, -'
. ,
.
()
, .
int m = 1, n = 2;
double A = m / n;
. ,
:
double A = (double)m / n;
,
, double. n double,
, . 0.5.
, : ( . . 1.7.7), . C++Builder 4
TPoint ;
. = 5;
. = 1;
arg - , - ,
. , R - , :
// R , (int)R :
static__cast<int> (R)
// R , (AnsiString)R :
static_cast<AnsiString>(R);
134
static_cast , ,
.
X Y (. . 2.8.3).
static_cast
. dynamic_cast,
.
. , ,
. 2.8, 2.9, 2.14. dynamic_cast:
dynamic__cast< > (ptr)
- (. . 2.8) (. . 2.9)
void*, a ptr - , .
void*, ptr . , .
- .
- - : --
ptr , , . :
ptr , , .
- , .
. - ,
, .
dynamic_cast static_cast: . , .
0, Bad_cast.
dynamic_cast .
2.14.6.
. const_cast:
const_cast< T > (arg)
, . , reinterpret_cas . ,
.
2.3
.
char, short, int long
signed unsigned . -
C++
135
.
, .
_
, char signed
, char unsigned
signed char
int, signed int
unsigned, unsigned int
short, short int, signed short int
unsigned short, unsigned short int
long, long int, signed long int
unsigned long, unsigned long int
signed unsigned char, short,
int, long. signed unsigned,
signed int unsigned int.
unsigned
signed. char.
C++Builder char signed
unsigned. ,
char ch;
signed char ch;
char ,
:
unsigned char ch;
136
. , ' .
()
_int8
_int!6
_int32
_int64
unsigned
18
int8 = 12718;
__intl6 s = 32767116;
int32 1 = 123456789132;
_int64 big = 12345654321164;
unsigned int64 hugelnt =
1234567887654321ui64;
116
132
164
int64 ui64
16
32
64
64
float double. 32
, 64. double long, 80 .
C+4-Builder 32
. 2.1. ANSI . , ,
, sizeof (. .
1.9.10, . 1).
2.4
(. . 2.1). , .
C++Builder AnsiChar (char) WideChar (wchar_t). AnsiChar 1 .
. AnsiChar ANSI, , . , . 192 223, - 224 255. "" ( 168 , 184 ). 65 90, 97 122. 48 (0) 57 (1). . 3.1.2
.
char AnsiChar , . . ,
char ch = ' ' ;
Labell->Caption = ch;
"". ch
Labell->Caption = (unsigned c h a r j c h ;
"193" - , "".
Labell->Caption = ( c h a r ) ( c h + 1);
C++
137
"" - , "". .. ch , 1.
.
2.5
2.5.1
C++ . , STL string, . 5. , ('\0').
.
. , , C++ . , . . . 2.11.1,
.
, char*.
char S[] = "";,
char *Sp = "";
138
1 .
, . , S[0] Sp[0]
, S[l] Sp[l] ..
. . ,
char b u f f [ 1 0 0 ] ;
buff, 99 .
.
strcat () , strcmp ,
strcpy , strstr
, strlen , strupr , sprintf
.
. 3 4. .
. buff. - ? strcpy:
s t r c p y ( b u f f , " , b u f f " ) ;
, , ,
, .
. , , S1 , S2. strcat:
char SI [ 2 0 ] = " 1", S 2 [ 1 0 ] = " 2";
strcat(S1,S2);
, ,
. , -
.
strcat , , , , . strcat,
. .
, S
S1 S2, .
:
char *S1 = " 1", *S2 = " 2", S [ 2 0 ] ;
strcat(strcat(strcat (S,SI)," " ) , S 2 ) ;
strcat S S1.
S , , strcat ,
S, , . strcat S strcat S2.
, , S
. S,
strcat
strcpy(S,SI)
C++
139
, . , ,
, ..
strstr(SI,S2)
S1 S2 , , .
, .
.
S1 S2 , ,
, S3. , S1 S2 S3.
.
char S l [ 2 0 ] , S 2 [ 2 0 ] , S 3 [ 2 0 ] , S [ 6 0 ] , *St;
// SI, S2, S3
St = s t r s t r ( S I , 3 2 ) ;
if (St)
{
*St = 0;
St += s t r l e n ( S 2 ) ;
Labell->Caption = s t r c a t ( s t r c a t ( s t r c p y ( S , S I ) , S 3 ) , S t ) ;
}
else Labell->Caption = " ";
SI, S2, S3 S, , .
St. .
strstr S2 S1 St.
strstr ( false),
" ". , . , St, 0 . S1,
. St , strlen. St
S1 . S
Labell.
strcat strcpy. strcpy. S
, S1. ,
S1 . strcat
, S, S3.
strcat S1, . St.
, . S1
" ", S2 "", S3 - "". , S1 :
'1,'','','','
','1,'','','
','','','1,'','\0'
strstr St
''. , , S1
:
' ' , ' ' , ' 1 , ' ' , ' ', ' \ 0 ' , ' ' , ' ' , ' ', ' ' , ' ' , '' , ' ' , ' \ 0 '
140
. Pt "". strcpy S
S1, :
'','','','','
','\0'
strcat S S3:
1
'','',' ,'','
strcat S ,
St, .. S1, "":
1
,'',' ,'','
','','','',' ,'','
','','','','','\0'
sprintf.
Editl,
, CSpinEditl TCSpinEdit,
. " ..., ...
..", :
. :
tinolude <stdio.h>
char S [ 4 0 ] ;
s p r i n t f ( S , " %s, %i r . p . " , E d i t l - > T e x t , C S p i n E d i t l - > V a l u e ) ;
sprintf .
( . . 3, . 3.1.3.1).
, "% ", , sprintf . Editl, %s, ,
CSpinEditl, %i, .
. . 3 4.
C++Builder C++ , .
. AnsiString,
,
, TStrings TStringList. , STL string, . 5.
2.5.2 AnsiString
C++Builder AnsiString , vcl/dstring.h Delphi. . AnsiString .
AnsiString ==, !=, >, <, >=, <=. . , , , , , . ,
, , .
AnsiString =, += () +. []. 1. , S1 = "", Sl[l] '', Sl[2] '' ..
C++
141
AnsiString , .
3.1.6. , AnsiString.
AnsiString C++Builder. , , Text , Caption ..
TStrings. ,
, AnsiString.
AnsiString.
() :
Labell->Caption = Editl->Text + ' ' + Edit2->Text;
Labell->Caption ,
Editl, ,
, Edit2.
, AnsiString "+".
sir cat,
(char *), AnsiString.
S1 , S2, S3.
, , :
A n s i S t r i n g SI, S2, S3;
// SI, S2, S3
int i = S I . P o s ( 3 2 ) ;
if (i)
Labell->Caption = S I . S u b s t r i n g ( 1 , i - 1 ) + S3 +
SI.SubString(i+S2.Length(),255) ;
else Labell->Caption = " ";
- AnsiString: Pos,
Substring, Length. ,
(.), C++Builder (>). ,
, AnsiString .
Pos.
, ( S1), , ( S2). , . 1. , 0.
if...else ,
(false) Pos . , .
: S1, , S3, , S1, . S1 Substring.
, , , , ,
. , Sl.SubString(l, i 1) S1, i 1 , .. S1, S2. , Sl.SubString(i +
142
(char *)
.
: S1 S2 S3. :
int id = 0, i = S l . P o s ( S 2 ) ;
while ( i )
SI = S l . S u b S t r i n g d , i -I- iO - 1) + S3 +
SI.Substring (i + iO + S 2 . L e n g t h ( ) , 2 5 5 ) ;
iO += i - 1 + S3.Length ( ) ;
i = S l . S u b S t r i n g ( i O + 1, 255) .Pos ( S 2 ) ;
- . . -,
10 , S1. . -, S2 S1
S1, : Sl.SubString(iO + 1,
255).
, Delete Insert AnsiString.
Delete , , , , .
Insert , , , .
, , :
int 10 = 1, i = S l . P o s ( S 2 ) ;
while(i > iO)
{
SI.Delete(i,32.Length());
// S2
SI. Insert(S3,i);
// S3
iO = i + S3.Length();
i = iO - 1 + S I . S u b s t r i n g ( i O , 255) . P o s ( S 2 ) ;
}
,
AnsiString. -
C++
143
. 3.1.6. ,
AnsiString (char *). , AnsiString (char *),
, (char *).
API Windows C++Builder, . , Application>MessageBox, ( ) (char *).
PlaySound .
AnsiString (char *) c_str() , , AnsiString, . ,
S1 S2 AnsiString,
Application>MessageBox ,
Application>MessageBox :
Application->MessageBox(Sl. c_str ,52.c_str(), _);
(char *) AnsiString.
AnsiString(char *S)
AnsiString, ,
S, .
2.6
,
.
, . ,
C-H-Builder , ,
, .
, . , , Mode,
:
, , . , ,
Mode int '
: 0 , 1 , 2
.
if (Mode == 1)
...
, Mode, 1,
. : Mode mRead, mEdit, mWrite.
:
if (Mode == mEdit) . . .
, , .
:
enum {< 1>,
144
, . , , : >, < .. , :
if(Mode > mRead) . . . ;
if(Mode < m W r i t e ) . ..;
if(Mode == mEdit)
Mode switch:
switch (Mode)
{
case mRead:
break;
case mEdit:
case mWrite:
break;
...
- , 1
. mRead 1,
mEdit 0, mWrite 2.
enum .
:
enum regim {mRead = -1, mEdit, mWrite = 2} Mode, Model;
Mode Model ,
regim. regim - , :
regim Mode3;
2.7
, , ,
. , .
+-!-Builder , vcl/sysdefs.h.
:
Set <type, minval, maxval> ;
C++
145
type .
int, char . minval maxval unsigned
char .
0, 255.
.
si
:
Set <char,
'A',
Ch, :
Set <char, 0, 255> Ch;
UPPERCASESet s2 s3 :
typedef Set <char, ' A ' , ' Z ' > UPPERCASESet;
UPPERCASESet si, s2;
Set -
. .
( ):
Set
Set&
fastcall operator
=(const Set& rhs);
,
: rhs ( )
Set&
fastcall operator
*=(const Set& rhs);
,
: rhs
( and )
*k
Set
fastcall operator
*(const Set& rhs) const; :
rhs ( and )
Set
+=
,
fastcall operator
+(const Set& rhs) const;
: rhs
( )
Set&
:
rhs ( )
146
Set&
fastcall operator
(const T el);
Set&
el
arg
ostream ( 0 1
)
el
arg
istream ( 0 1
)
fastcall operator =(coiist rhs
Set& rhs);
fastcall operator ==(const :
rhs (
Set& rhs) const;
)
fastcall operator
(const el);
friend istream& operator
(istream& is, Set& arg);
Set&
bool
!=
bool
: rhs
,
, (type, minval
maxval) . , ( +, *),
, , ,
. true , . false.
Set :
Clear
Contains
Set&
bool
fastcall ClearQ;
fastcall Contains(const el) const;
el
.
, "Yes/No". , , , "", "Y", "" "N".
:
Set <char, 0, 255> TrueKey;
' ' ' ' ' n 1 ' N ' ;
, Key , Contains:
if (ITrueKey.Contains(Key))
ShowMessge(" ");
else . . .
C++
147
. ,
Editl , .. 0 9.
, OnKeyPress :
Set <char, ' 0 ' , ' 9 ' > Dig;
Dig ' 0 ' '!' ' 2 ' ' 3 ' ' 4 ' ' 5 '
'6' '7' '8' '9';
if ( ! D i g . C o n t a i n s ( K e y ) )
{Key = 0; BeepO ; }
, ,
( ) .
2.8
2.8.1
, , .
, .
.
, ,
. :
type *ptr;
type ,
ptr . : ptr type.
,
int *countPtr, count;
. , , -
. :
Pv = countPtr;
,
. , NULL . 0
NULL . NULL , , .
:
int *countPtr = NULL;
, NULL . , .
148
(&), . ,
int = 5;
int *yPtr, ;
yPtr = &;
yPtr.
, , (*), . ,
(.. ). , ,
= *yPtr
5, .. , yPtr.
void,
, .
C++
. . ,
.
,
. :
int b [ 5 ] = ( 1 , 2 , 3 , 4 , 5 } , *Pt;
[5] Pt. ,
Pt b
Pt = b;
Pt = s b [ 0 ] ;
[3]
*(Pt + 3).
, . , Pt[3] [3].
, ,
.
.
,
. ,
, .
. (++), (), (+ +=), ( =) .
.
1 ,
, .
C++
149
. ,
Pt b ,
Pt += 2;
Pt . Pt , , 2. , b 2 , Pt (.. , Pt) 4.
.
. , Pt
, Ptl ,
Ptl Pt 2 ,
. , , ,
, 4 ( 2 ).
,
. ,
, . >, <, >=, <=
. == !=
. ,
.
,
.
,
. void (.. void*), , . void
. void
void
.
.
.
.
, :
char *Sa[2] = (" ", ""};
2.8.2
C++Builder . , , .. , (. . 2.14). , :
150
2
TForml *Forml;
TLabel *Labell;
Forml (Labell). , - . ,
TLabel ():
TLabel *Lab;
, .
. . ,
, , , , :
i f (Lab = = 0 )
... ;
, .
C++ NULL, . :
if
(Lab
==
NULL)
Lab
. :
Lab = L a b e l l ;
void
. . , ,
. , , Labell (
) Lab>Caption. Caption
((TLabel *)Lab)>Caption, Lab TLabel.
, , .
,
, -.
.
, ,
, , .. C++
.
, TControl :
TControl *Contr/
. ,
Contr = Labell;
C++
151
.
Con.tr . ,
TControl. , , , Name .
. , Contr>Caption
: 'Controls:: TControl "Caption' is not accessible. ,
, Caption TControl . ,
TControl, , :
((TLabel *)Contr)->Caption
: Contr
TLabel. .
, ,
.
.
2.8.3
, , -. +-t-Builder . , Sender , .
? , - , , Button!
OnClick, , Sender
. ,
Buttonl.
. . .
, , .
C++Builder
Sender, TObject *Sender, ..
TObject. TObject C++Builder.
,
. -
Sender
, . , , , ( Caption) Labell
: " ...". ,
, Name. TComponent. ,
Sender ( . . 2.2). :
Labell->Caption = " " +
((TComponent *)Sender)->Name;
152
((TComponent *)Sender)
Sender TComponent.
Name, . : , , .., TComponent.
. 2.2 static_cast:
Labell->Caption = " " +
static_cast<TComponent
*>(Sender)->Name;
, Sender , . , , :
TComponent *0bj = (TComponent *)Sender;
Labell->Caption="npoM3Ourno " + Obj->Name;
Obj TComponent
, Sender. Obj .
, Sender ,
-,
, . ,
, Sender, TWinControl ( ), TWinControl ScaleBy.
:
( (TWinControl * ) S e n d e r ) - > S c a l e B y ( 1 1 , 1 0 ) ;
,
Sender. ClassName,
TObject
ShortString
fastcall ClassName();
ClassName ShortString, . ,
Labell->Caption = Sender->ClassName() ;
(String(Sender->ClassName())
== "TLabel")
( )
TLabel.
ClassNamels,
TObject :
bool
true, string. :
C++
if
153
(Sender->ClassNameIs("TLabel"))
, -,
. ScaleBy, TWinControl. , Sender, TWinControl (, TLabel, TWinControl),
ScaleBy .
, , .
, ,
, ,
, . , , ScaleBy, ,
TWinControl.
InheritsFrom,
TObject , , .
:
bool
fastcall
InheritsFrom(TClass aClass);
true,
aClass, . TClass,
classid:
classid(classType)
, , TWinControl.
, , ,
Sender, TWinControl, :
if
(Sender->InheritsFrom(
classid(TWinControl)))
ScaleBy
:
if
(Sender->InheritsFrom( c l a s s i d ( T W i n C o n t r o l ) ) )
((TWinControl *)Sender)->ScaleBy(11,10) ;
ClassParent, TObject,
, .
:
TClass
fastcall
ClassParent()
154
2.9
, . , (&) ,
. -
MyObject:
MyObject *P = new MyObject;
:
MyObject & Ref = *;
Ref
MyObject. . , .
. ,
,
>, .. .
Ref.x, .. .
. , Labell, Caption
Labell->Caption = " ";
:
TLabel & ref = *Labell;
ref.Caption = " ";
. . 1.7.2.
2.10
C++Builder ( ) :
++
.
2.10.1 /
LoadFromFile SaveToFile, TStrings TStringList.
C++
155
,
.
, , . :
TStringList, ,
AnsiString, . :
TStringList *List = new T S t r i n g L i s t ;
AnsiString SFile = "Test.txt";
He , ,
(. . 1.5.1). , "c:\MyTest\Test.txt", ":\\MyTest\\Test.txt".
, ,
List->LoadFromFile(SFile);
, , ,
. ,
. :
try{
List->LoadFromFile(SFile);
}
catch(.. . ) {
ShowMessage(" \ " " + SFile + " \ " " ) ;
}
SFile .
Windows, ++ilder.
, ,
- ,
TStringList. TRichEdit.
,
RTF. Lines
TStrings, LoadFromFile SaveToFile. :
Memol->Lines->LoadFromFile(SFile);
RichEditl->Lines->LoadFromFile(SFile);
C++Builder , .
156
2.10.2 /
2.10.2.1
C++ (stream),
. , .
.
, , ,
() FILE, stdio.h.
fopen,
FILE.
.
fopen:
#include <stdio.h>
FILE * f o p e n ( c o n s t char *filename, const char *mode);
fopen ,
filename, . mode ,
. :
W+
C++
157
...
fclose(F) ;
//
//
F
Test.txt, .
(, ), .
. fclose(F).
fopenC'Test.txt", "rt+")
,
.
.
fgets:
char * f g e t s ( c h a r *s,
int n,
FILE * s t r e a m ) ;
s , , n . "\" ( ),
n 1 . .
, Memol :
char s [80] ;
Memol->Clear ( ) ;
do
{
f g e t s ( s , 8 0 , F) ;
i f ( f e o f ( F ) ) break;
i f ( s [ s t r l e n ( s ) - l ] == ' \ n ' ) s [ s t r l e n ( s ) - l ] = 0;
Memol->Lines->Add(s);
}
while(true);
fclose(F);
//
,
. , "\" Memol. .
fscanf.
int f s c a n f ( F I L E *stream,
const char * f o r m a t [ ,
address,
...]);
format ,
. . 3, .
3.1.3.2. , "%",
158
. ( . . 3.1.3.2):
i
I
d
D
u
e, E
s
,
,
int *arg
long *arg
int *arg
long *arg
unsigned int *arg
unsigned long *arg
float *arg
char arg[]
char *arg
&i2, &r)
, ,
fscanf , , . (&) ,
.
- - . , , , fscanf.
. :
if ( f s c a n f (F, "%d%d%le", & i l , &12,
{
ShowMessage ( " " ) ;
&r)
!= 3)
s , -- ,
. , , , , , Editl.
, , , , :
char s [80] , key [10] ;
strcpy ( k e y , E d i t l - > T e x t . c _ s t r ( ) ) ;
do
//
C++
159
i f ( f e o f ( F ) | | ! s t r c m p ( s , k e y ) ) break;
}
while(true);
fclose(F);
if ( ! s t r c m p ( s , k e y ) )
ShowMessage(" ");
s key,
strcpy . fscanf s . strcmp . 0, s key . ,
.
.
. fprintf:
int f p r i n t f ( F I L E *stream, const char * f o r m a t [ , argument,
...]);
fscanf,
. , "%".
. ,
, "%", . fprintf . 3 4. .
s (char *), ,
year, .
, , ..., ... ...
. :
FILE *F;
if ( ( F = fopen ( " T e s t . t x t " , " w t " ) ) == NULL)
ShowMessage(" " ) ;
return;
}
char S [ 4 0 ] ;
int year = 1960;
strcpy(s,"") ;
f p r i n t f ( F , "\ %s, %i r . p . \ n " , &S, year);
fclose(F);
fopen . , . , . fprintf
. ,
"\"; - " ", "%s", S, "%i", year,
. :
, 1960 . .
. . 3 4.
160
2.10.2.3
,
- , ..
, .
, .
.
- . , ,
: . ,
, ,
.
, . ,
- , , , .
, , .
2.10.2.1. fwrite freed:
#include <stdio.h>
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
size_t f r e a d ( v o i d *ptr, size_t size, size_t n, FILE * s t r e a m ) ;
ptr .
size , n .
.
int i = 1, j = 25, il, j l ;
FILE *F;
//
if ( (F = fopen("Test.dat", "wb")) == NULL)
{
ShowMessage(" ");
return;
}
fwrite(&i,sizeof(int),1,F);
//
fwrite(&j,sizeof(int),1,F);
//
fwrite(&a,sizeof(double),1,F);
//
fwrite(s,sizeof (char),strlen(s)+1,F); //
fclose (F);
i
j
a
s
//
if ((F = fopen ("Test.dat", "rb")) == NULL)
{
ShowMessage(" ");
return;
}
fread(&il,sizeof(int),1,F);
//
fread(Sjl,sizeof(int),1,F);
//
fread(sal,sizeof(double),1,F);
//
fread(sl,sizeof(char),strlen(s)+1,F); //
fclose (F);
i
j
C++
161
"Test.dat"
i j, s. ,
, il, jl, al si,
, , .
.
fwrite ( s , s i z e o f ( c h a r ) , s t r l e n ( s ) + 1 , F ) ;
// s
strlen(s)+l ( ).
:
f r e a d ( s l , s i z e o f ( c h a r ) , s t r l e n ( s ) + 1 , F ) ; // s
strlen(s)+l .
.
, , . , , , ?
.
:
fwrite(s,sizeof(s),1,F) ;
fread(si,sizeof(s),1,F) ;
, :
s, .
fwrite(s,sizeof(char)*10,1,F);
fread(si,sizeof(char)*10,1,F);
,
. ,
, .
- , ,
. :
//
fwrite(s,sizeof(char),strlen(s)+1,F);
//
for . ,
sl+ind. sl[ind], fread
, , .
fread fgetc, :
si[ind] = fgetc (F);
, ,
. , . :
162
2
//
int it = strlen (s)-t-1;
fwrite (Sit,sizeof(int), 1,F);
fwrite(s,sizeof (char),it,F);
...
//
fread(Sit,sizeof(int) , 1, F) ;
fread(si,sizeof (char), it, F) ;
. ,
, . () , . .
ftell, :
long int ftell(FILE *stream);
fseek:
int fseek(FILE *stream,
long o f f s e t ,
int whence);
offset ,
whence. whence :
whence
SEEK_SET
SEEK_CUR
SEEK_END
whence = 1, offset (
) ( ).
rewind ( 0). ,
f s e e k f F , OL, 0 ) ;
, . , double, , i-oe
,
fseek(F, sizeof(double)* (i-1), 0 ) ;
f r e a d ( & a , s i z e o f ( d o u b l e ) , 1, F) ;
.
.
, , , , , 10. ,
(, "rb+"), , ,
:
fread(&a,sizeof(double), 1,F);
a *= 10;
fseek(F,-sizeof(double),1);
fwrite(Sa,sizeof(double),1,F);
,
10. , fread .
, , .
:
C++
long int pos = ftell(F);
fread(Sa,sizeof(double), 1, F) ;
a *= 10;
fseek(F,pos,0);
fwrite(&a,sizeof(double),1,F);
163
//
//
ftell , , fseek .
, , , . , spers, pers persl, pers , . , ,
, persl.
struct spers
{
char N a m e [ 2 0 ] ;
int year;
};
2.10.2.4 /,
,
FILE, . , , .
:
stdin
stdout
stderr
.
, , io.h. stdio.h, fcntl.h, sys\types.h
sys\stst.h.
164
open, :
#include < f c n t l . h >
#include<io. h>
int open (const char *path,
, 0
mode :
S_IWRITE
S_IREAD
S_IREAD | S_IWRITE
,
int handle;
if ( (handle
, ( open -1) .
_creat, ,
open.
close:
int close (int h a n d l e ) ;
buf ,
len .
, , , . 2.10.2.3, i j,
s:
165
C++
#include <stdio.h>
tinclude <stdlib.h>
ttinclude <fcntl.h>
tinclude <sys\stat.h>
tinclude <io.h>
tinclude <string.h>
//
//
//
//
i
j
BINARY)) == -1)
ShowMessage(" ");
return;
}
read (handle, si-1, sizeof (int) );
//
read(handle, &jl, sizeof (int));
//
read(handle, &al, sizeof(double));
//
read(handle, si, strlen (s)+1);
//
close(handle);
i
j
, . 2.10.2.3,
, . , , . 2.10.2.3, .
, , tell Iseek, . 2.10.2.3 ftell
fseek, .
dup dup2, , , ,
. . 3, . 3.5.3, 3.5.4.
2.10.3 / C++
2.10.3.1
C++ /:
ifstream
ofstream
fstream
166
,
#include <fstream.h>
, , ,
()
().
, , . ,
ofstream outfile ( " T e s t . d a t " ) ;
if(!outfile)
{
ShowMessage(" ");
return;
outfile, "Test.dat", , , .
- , outfile
if .
, :
if stream i n f i l e ( " T e s t . d a t " ) ;
if ( ! i n f i l e )
{
ShowMessage (" ");
return;
() (), . 1.9.15. , ,
. , ,
:
int i = 1, j = 25, il, j l ;
double a = 25e6, al;
char s [40] , si [40] ;
strcpy (s, "") ;
//
ofstream o u t f i l e ("Test .dat") ;
if ( ! outfile)
{
ShowMessage (" ");
return;
)
o u t f i l e i ' ' j ' ' a ' ' s endl;
//
o u t f i l e . close ( ) ;
//
ifstream i n f i l e ( "Test . dat") ;
if ( ! i n f i l e )
(
ShowMessage (" ");
return;
}
i n f i l e il jl al s i ;
C++
167
//
infile.close() ;
"Test.dat"
i j, s, ,
endl (. . 1.9.15)
. , , . , , .
, , "1 25 2.5+07 ". ,
,
.
. 1,
. 1.9.15. , ,
. 2.10.3.2.
: put write.
put . ,
outfile.put('1);
"". put . ,
outfile.put('') .put('\') ;
"" .
write ,
, , . ,
o u t f i l e . w r i t e ( s , 5) ;
outfile 5 s.
, .
, , ,
.
read - . gcount
, .
.
() , . ,
. , ,
. ,
- . ,
.
ifstream : get getline. get : get(), get(char) get(char *, int n, char delim).
get
(, )
. get EOF, .
get , :
168
2
char s [80], ;
ifstream inflie("Test.dat") ;
if (linfile)
{
ShowMessage(" ");
return;
}
int i = 0;
while(( = infile.get()) != EOF)
(
if (c == '\n')
{
//
s[i] = 0;
//
i = 0;
}
//
else s[i++] = ;
}
//
inflie.close();
.
"\", s. "\",
, - , . , : ,
. , .
get() -
. , "$" :
while(( = infile.get ()) != EOF)
if( == '$') break;
if ( =*= '$') ...
- get (, ) . get ,
; get
, - get.
get
,
while:
while(infile.get(c))
- get :
s, delim (
'\').
, , 1 , .
, , . , ( ).
, get
, .
C++
169
:
char s [80] ;
if stream inf ile ("Test .dat") ,
if (! inf ile)
{
ShowMessage (" ");
return;
}
while(!infile.eof() )
(
inf ile. get (s, 80) ;
inf ile .get () ;
//
}
//
inf ile. close () ;
. , .
*,>
get , * ,
. getline. get . get getline (.. );
.
getline :
while ( '.infile.eof () )
{
2.10.3.2
. 2.10.3.1 . 1 . 1.9.14
endl, .
, .
, ,
Memol , OnClick :
tinclude <fstream.h>
tinclude <iomanip.h>
char s [40] ;
170
2
//
ofstream outfile("Test.dat");
if('outfile)
{
ShowMessage(" ");
return;
}
// ,
//
outfile.close();
ifstream infile("Test.dat");
if(!infile)
{
ShowMessage(" ");
return;
}
Memol->Clear() ;
while(!infile.eof())
{
infile.getline(s,80);
Memol->Lines->Add(s);
>
//
infile.close();
"31 If 37 31". 31 , , ,
.
, .. , setprecision precision.
, .
,
:
f o r ( i n t i = 0; i < 10; i + + )
o u t f i l e s e t p r e c i s i o n ( i ) s q r t ( 3 . 0 ) endl;
setprecision 0 9
3.
0 , 6. :
C++
171
1.73205
1.73
1.732
1.7321
1.73205
1.732051
1.7320508
1.73205081
, precision:
f o r ( i n t i = 0; i < 10;
precision , ,
int i = outf ile. precision ( ) ;
.
setw width (..
, , , ) . , ,
. , .. .
, , .
; 0, .. , . width, , .
setfill(char)
fill.
,
25:
int j = 2 5 ;
f o r ( i n t i = 0; i < 5; i++)
o u t f i l e s e t w ( i ) j endl;
:
25
25
25
25
25
,
, , .
, width:
f o r (int i = 0; i < 5; i++)
{
out f i l e . width (i) ;
o u t f i l e j endl;
172
setfill, . ,
f o r f i n t i = 0; i < 5; i++)
outfile s e t f i l l C * ' ) s e t w ( i ) j endl;
:
25
25
25
*25
**25
( ) .
. ,
, , ,
tab, "\t".
// tab
ostreams tab (ostreams output)
{
return output ' \ t ' ;
}
, . ,
outfile ' ' tab ' ' tab ' 1 endl;
"", "" "", :
2.10.3.3
ios / .
ios:: skip ws
ios::left
ios::right
ios::internal
ios:: dec
, dec
, oct
, hex
ios::oct
ios::hex
ios::showbase
ios::showpoint
ios::uppercase
"X" ""
C++
173
ios::showpos
"+"
ios::scientific
ios::fived
:
1
1.1
1.00000
1.10000
:
-1.1
-1.1
- 1.1
, resetiosflags
, right,
left internal .
, showbase:
o u t f i l e 63 oct " " 63 hex " " 63
setiosflags ( i o s : : s h o w b a s e ) dec endl
63 oct " " 63 hex " " 63 endl;
:
63 77 3f
63 077 Ox3f
174
:
:
0.0123 1.23-
scientific:
1.230000-02 1 .230000+06
fixed:
0.012300 1230000.000000
,
, , .
, showpos showpoint:
o u t f i l e s e t p r e c i s i o n ( 4 ) s e t w ( 3 ) 6 0 . endl
setiosflags (ios::showpos I ios::showpoint) 60.
endl;
:
60
+60.00
setiosflags .
2.11
2.11.1
, , - . , , (
), .
, .. 1.
:
[_]
,
int A[10];
, 10 .
A[i], i -- ,
, , 0-9. , [0] , [1] , [9] .
, 1 .
, 0.
.
C++
175
[ 0 ] = 1;
[1] = 1;
, 2
1, .
. ,
char S[10] ;
.
(. . 2.5.1) ,
.
, .
, , - 1, .
.
, .
:
int [10] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ;
char S[10] = ("abcdefghi\0") ;
, , . ,
int A [10] = (1,2,3);
, 0.
int [10] = ( 0 } ;
.
,
. , - .
, , , .
S . . ,
:
char S[10] = ("abcdefghi"} ;
char SI [10] = {"abc"};
10 , .
. . ,
int [ ] = (1, 2, 3, 4, 5) ;
.
char Sl[ ] = ("abc"};
.
. , ,
:
176
2
int
//
//
int Sum = A[0] ;
for (int i = 1; i < 10; i++) Sum += A[i];
, 10 ,
, , 100,
, , ( for).
. , .
:
const Amax = 10;
int A [Amax] ;
//
//
int Sum = A[0] ;
for (int i = 1; i < Amax; i++) Sum += A[i];
Amax
, . , Amax. . Amax , - .
, #define (. . 1, . 1.4.2).
fdefine Amax 10
, . .
, .
. :
const AnsiString Day[] = {"", "", "",
"", "", "",
"" } ;
2.11.2
, .. ,
. , :
int A2[10] [3];
,
, 10 3 .
, . ,
2[3][2] - - ,
(, 0).
, .
A3 4 3 2.
C++
177
A3,
, 3[0][1][0] 2, 3[3][0][1] 19 ..
- ,
.
2.11.3 ,
.
. 2.8.
, ,
.
sizeof,
, , . ,
sizeof() / sizeof([0])
.
ARRAYSIZE.
ARRAYSIZE()
. , F , :
void F (int A r [ ] ) ;
:
const Amax = 10;
int A[Amax];
F (A) ;
, . , ,
[2]. C++ (. . 1, . 1.7.2).
, ,
, .
, . ,
.
, .
:
178
2
void F f i n t Ar[], int N) ;
:
F (A, Amax) ;
, , .
:
F(A, Amax - 1) ;
, Object Pascal,
. , sysdefs.h EXISTINGARRAY, . :
F(EXISTINGARRAY(A)) ;
EXISTINGARRAY .
sizeof.
Object Pascal, C-H-Builder, ,
. sysdefs.h
OPENARRAY, . :
OPENARRAY(TVarRec,
(^!, _2,
...))
19.
.
, :
void F (const int A r [ ] , int N) ;
, , , . :
int Sum(const int A [ ] ,
I
// N
int N)
int S = A[0];
return S;
)
.
^define Bmax 10
int BflO] = {1,2,3,4,5,6,7,8,9,10};
ShowMessage(" " + IntToStr(Sum(,Bmax)));
.
- . ,
, .
Bmax, a Bmax - 2,
0 7.
- . , :
Sum( + 2, Bmax - 2)
C++
179
, . , 0 7,
, 2 9. .. , .
, , . , F2 3 3, :
void F(const int A r [ ] [ 3 ] ) ;
.
, F(A).
2.12
2.12.1
, .
. , ,
, .
. , .
:
struct TPers {
AnsiString F a m , N a m , P a r ;
unsigned
Year;
bool
Sex;
A n s i S t r i n g Dep;
struct .
TPers (, -) .
.
TPers. , . , . .
TPers . ,
.
: Fam, Nam, Par Dep , , , , . Year , Sex . ,
. , TPers
TPers.
TPers. , , , .
(. . 2.12.2).
180
; ,
. , .
TPers Pers, PersArray[10], *Ppers;
: (.) (->).
. :
Pers.Fam = "";
Pers.Nam = "";
Pers.Par = "";
Pers.Year = 1960;
Pers.Sex = true;
Pers.Dep = "";
. ,
Ppers = &Pers;
Ppers Pers.
:
Ppers->Fam = "";
Ppers->Nam = "";
Ppers->Par = "";
Ppers->Year = 1960;
Ppers->Sex = true;
Ppers->Dep = "";
2.12.2
. (. . 1, . 1.11) , ,
. , , .
. . NULL,
.
C++
181
N NULL
. 2.1.
, . 2.12.1, , :
struct TPers {
AnsiString Fam,Nam,Par;
unsigned
Year;
bool
Sex;
AnsiString Dep;
TPers * pr;
.
, :
TPers *PO = NULL, *Pnew, *Pold;
. . , :
//
Pnew = new TPers;
//
Pnew->Fam = "";
Pnew->Nam = "";
Pnew->Par = "";
Pnew->Year = I960;
Pnew->Sex = true;
Pnew ->Dep = "";
Pnew->pr = NULL;
if (PO == NULL) PO = Pnew; // PO
//
else Pold->pr = Pnew;
Fold = Pnew;
NULL)
ShowMessage(Pnew->Fam +
Pnew = Pnew->pr;
, ..
. .
182
2.12.3 C++
, , ,
C++. C++ (. . 2.14).
, - -. TPers.
- Show, , :
struct TPers {
AnsiString Fara, Nam, Par;
unsigned
Year;
bool
Sex;
AnsiString Dep;
TPers * pr;
void Show()
{
ShowMessage (" \""+Dep+"\" "+Fam+" "+Nam+" "+
Par+", "+IntToStr (Year) +" r.p., "+
(Sex ? "" : "") ) ;
Show . 2.12.2 :
Pnew = ;
while (Pnew != NULL)
Pnew->Show () ;
Pnew = Pnew->pr;
C++ - - , .
public () private ().
- . ,
.
- -,
, (), - .
C++
183
. , , . .
public .
- , private,
, . , private
public, . ,
struct MyStr { .
int x, ;
int Get () ;
private:
int a, b;
void F(> ;
};
Get
, b F
Get.
, C++ . . 2.14, .
2.12.4
++ ,
unsigned int ( . . 2.14 2.13. . .
TPers, , , , . 2047 ,
11 . , ,
12
. 1 . ,
2 ,
5 : 4 .
3 . , ,
, .
":" , (..
, ). 0 , int . :
struct TPers
AnsiStrinq
AnsiString
TPers *
unsigned
bool
{
Fam,Nam, Par ;
Dep;
pr;
Y e a r : 12;
Sex : 1;
184
.
. ,
. , . , .. . 3 :
struct Example {
unsigned a : 13;
unsigned
: 3;
unsigned b : 4;
};
,
.
. -. , ,
.
2.13
(union) , . ,
.
,
. , ,
, .
, .. . ,
, , ,
. , ,
, .
. , ,
. .
union
, (. . 2.12.1 2.14). :
union Tunion {
int
i;
double d;
char * s;
};
Tunion,
i, d, s.
C++
185
, . ,
:
Tunion N;
,
. , :
N . i = 5;
N.d = 5.1;
char *S = "";
N . s = S;
, , .
, , ,
d, .
s, ,
, s.
,
. ,
, .
2.14
- , , C++. , , . ,
. , ,
, .
2.14.1
, . ,
C++ C++Builder ,
C++Builder C++. , (.-. 2.12) (. .
2.13) C++ . , , .
, . .. .
:
class < > : < >
{
public:
//
<, , , >
published
//
<, >
protected:
//
<, , , >
private:
//
<, , , >
) < >;
186
2
:
class MyClass : public Classl, Class2
{
public:
MyClass(int = 0) ;
void SetA(int);
int GetA(void);
private:
int FA;
double , C;
protected:
int F(int);
};
. , +-Builder, "".
( -),
( -), , , - . -,
.
Classl
CIass2. -
C++Builder , , .
, - . :
class MyClassl
,
. public () ,
. .
published () ,
,
, .
private () ,
. protected () , . , . , ,
, , .
MyClass, SetA GetA. FA, , F . , . MyClass , , ,
. . .
C++
187
- ( public).
, : public ( )
-, private . . 2.14.5.
( ) private. ,
. , , . , -, .
- () , :
<> < >;
. , . 2.14.4.
- (. . 1 . 1.7.1).
, , .
C-f+Builder,
. ,
MyClass MC, MC10[10], *;
MyClass, 10
.
, , , .
,
MyClass MC(3) ;
, FA 3.
, , .
, , , . :
class MyClass : public Classl, Class2
{
} , 10[10], *Pmc;
(. . 1, . 1.11),
new. :
MyClass *PMC = new MyClass;
MyClass *1 = new M y C l a s s ( 3 ) ;
-
1.
188
, C++Builder. ,
new. , :
class MyClass2 : public TObject
MyClass2 *2 = new MyClass2;
2.14.2 -, ,
, , . , ,
, . , . ,
, - ,
.
private . protected ,
.
. :
class MyClass
{
public :
void SetA(int);
int GetA (void) ;
private :
//
//
int FA;
double , ;
};
:
void MyClass : :SetA (int Value)
{
if ( . . . )
//
FA = Value;
}
int MyClass :: GetA (void)
{ r e t u r n FA;}
,
- . , -
"::".
, . . :
class MyClass
{
public:
C++
189
MyClass(int = 0);
void SetA(int Value) {FA= Value;};
int GetA(void) {return FA;};
private:
int FA;
double , C;
};
//
//
, , inline (. .
1.7.6, ).
: , , .
,
inline:
inline void SetA(int);
//
. inline
.
, . .
- . , ,
- - .
- - -, , .
(- , ) - -. , . , friend. ,
friend void IncFA(MyClass *) ;
IncFA, , . , IncFA - :
void IncFA(MyClass *P) (P->FA++;)
, . ,
friend Classl;
- Classl .
const. :
const Classl M C I ( 3 ) ;
,
, , , .
, const.
, .
190
, .
, .
,
const. ,
int GetA(void)
const;
:
int My Class:-.Get A (void)
.
, ,
, - , , const.
2.14.3 -, ,
-.
- .
. , .
. , , ,
.
.
,
. static. :
static int D;
, (protected). . :
M y C l a s s : : D = 10;
- .
, . , : . -,
.
( , )
.
- , , - ( )
int M y C l a s s : : D = 0;
C++
191
-
.
, . , .
,
-:
class MyClass
{
public:
static int D;
static int G e t D l ( v o i d ) ;
private:
static int Dl;
int
MyClass::GetDl(void)
{return D l ; }
int MyClass::D = 0;
int M y C l a s s : : D 1 = 1;
: D D1. D1,
, GetDl.
(public) ( static). , .
GetDl.
static. , . ,
.
. :
i = MyClass::D;
j = MyClass::GetDl() ;
.
:
static const int MaxA = 10;
const int MinA;
, . , . . 2.14.4.
2.14.4
. , . ,
( , ) , .. .
. , , ,
192
. -
.
-, .
, .
:
class MyClass
{
public:
MyClass(void); //
private:
int A;
MyClass::MyClass(void) {A = 0;}
MyClass ,
0.
, .
. . , SetA, ,
. :
MyClass::MyClass(void) { S e t A ( O ) ; }
MyClass :
MyClass MC;
:
MyClass *PMC = new MyClass;
, .
,
.
- .
, . ,
MyClass(int);
M y C l a s s : : M y C l a s s ( i n t a) ( S e t A ( a ) ; }
FA , .
MyClass (1);
C++
193
,
.
(.
. 1.7.4). :
MyClass (int = 0 ) ;
:
M y C l a s s : : M y C l a s s ( i n t a)
( SetA(a); }
. ,
. ,
( 0). . .
,
. :
const int MaxA;
, , FA.
,(. . 2.14.3),
:
static const int MaxA = 10;
. , . . , ,
. ,
MyClass
const int MaxA;
const int MinA;
,
MyClass(int = 0);
:
MyClass::MyClass(int a)
: (), MinA(l)
(SetA(a);};
10, MinA 1.
. :
MyClass(int A =
0,
int MinA =
1);
M y C l a s s ( i n t = 0,
int = 10,
int = 1);
( , ,
).
:
MyClass: -.MyClass (int a,
int i,
int j)
: MaxA(i), MinA(j)
{ SetA(a);
194
, , :
MyClass
MyClass
MyClass
MyClass
;
MC(20);
MC(20,15);
MC(20,15,2);
//
//
//
//
:
:
:
:
=
=
=
=
0,
20,
20,
20,
=
=
=
=
10,
10,
15,
15,
MinA =
MinA'=
MinA =
MinA =
1
1
1
2
-.
, , WinMain main.
#pragma startup (. . 1.4.4) , WinMain main,
.
. -,
.
, "-", ,
. :
class MyClass
{
public:
-MyClass ( ) ; //
, - -
, - .
.
.
, .
2.14.5
. . , - X,
X ();
X , . , ,
X = ;
X = ();
,
- . .
, .
, C++Builder,
, . . .
. , , - , , , -
C++
195
, .
. ,
, ..
. , .
, . :
class X
public:
int ;
X(int = 0);
};
,
:
X::(int A)
{
= ;
ShowMessage(" , = " + I n t T o S t r ( a ) ) ;
)
, ,
.
- , , :
X yl;
X 2 = (2) ;
X = 3.5;
X xl(yl);
X 2 = 2;
X = X () ;
ShowMessage (IntToStr (xl .a) + ' ' -tIntToStr(x2.a) + ' ' + IntToStr(.));
, ,
, 0, 2 3. yl, 2 . yl
- 0. 2 2 .
. , . 3.5
(, ) .
xl, 2 .
, yl, 2, xl, 2, .
. . . ,
explicit ():
explicit X ( i n t = 0 ) ;
. ,
, . ,
X. , .
, ,
, , -
.
196
,
.
, .
:
class X
{
public:
int a, b;
X(int = 0);
X(XS) ;
};
:
X: : ( & )
{
= . ;
ShowMessage(" , = " + I n t T o S t r ( a ) ) ;
}
, , .
, ,
.
xl, 2, .
2.14.6 , ,
, - , - -, , .
( ). .
public,
protected private (. . 2.14.1). .
public , .
.
.
. , .
.
197
C++
- public
protected
private
public
public
-,
, -
protected
-
private
-
protected
protected
-
protected
-
private
-
private
-
- .
-
- .
-
- .
- - (
),
. , . - ,
.
Shape:
class Shape
{
public:
void Draw(void);
};
Circl:
class Circl : public Shape
198
2
public:
void D r a w ( v o i d ) ;
};
Draw. ,
, .
Draw :
void S h a p e : : D r a w ( v o i d )
{
ShowMessage(" ");
}
void C i r c l : : D r a w ( v o i d )
{
ShowMessage("" ) ;
}
:
Shape *PQ1 = new Shape;
PQl->Draw();
Circl *PQ2 = new Circl;
PQ2->Draw();
PQ2->Shape::Draw();
((Shape * ) P Q 2 ) - > D r a w ( ) ;
// Draw Shape
// Draw Circl
// Draw Shape
// Draw Shape
, Draw
. , , . Circl, . ( ), ,
.
- Circl Draw, .
, .
. ,
Shape. Circl
Rectang ( - Rectangle,
) Square ().
Draw,
( , ).
, Shape, . , ,
. , , :
Shape *ShapeArray[3] ;
OnCreate :
ShapeArray[0] = new C i r c l ;
ShapeArray[1] = new Rectang;
ShapeArray[2] = new Square;
:
f o r ( i n t i = 0; i < 3; i++)
ShapeArray[i]->Draw();
C++
199
, , .
.
Shape,
.
. . , , , . , Shape
Draw ,
.
. Shape
:
virtual void Draw(void);
! ,
.
virtual. , - virtual, ,
. C++ .
. , .
, . 2.2 dynamic_cast. ,
. - . - .
, . () Circl, Rectang Square
Draw , , . Draw
Shape :
if (dynamic_cast<Circl *>(this) != 0)
ShowMessage("");
else if (dynamic_cast<Rectang *>(this) != 0)
ShowMessage("");
else if (dynamic_cast<Square *>(this) != 0)
ShowMessage("") ;
else ShowMessage(" ");
dynamic_cast
this -. this , . , dynamic_cast . ( ). , dynamic_cast 0.
.
, , .
,
. . -
200
. . ,
-.
( ). , .
, , :
virtual void Draw(void)=0;
Draw Shape, , . .
, ,
. . -.
2.14.7 ,
C++Builder
2.14.7.1
, C-H-Builder, . new.
, .
(property), ()
. ,
, , private. ,
'F'.
:
property <> <> = {=< >
write=<HMH >
<
>;
read write ,
.
read , . , , .
Get,
.
write , . , . Set, .
write ,
.
,
.dfm.
default >
C++
201
. .
,
, .
. MyClass, TObject .
:
class MyClassl : public TObject
I
private:
int FA;
protected:
void
f a s t c a l l S e t A ( i n t ) ; //
published:
property int A = (read = FA, write = SetA, default = true);
);
FA, SetA,
, , .
read . ,
. write SetA, . -
.
:
void
fastcall MyClassl::SetA(int Value)
{
if ( . . . ) FA = Value;
)
published.
, ,
. public, - ,
,
. write ,
, .. .
property :
property <> <> < > =
{read=<MMfl >
write=<MMH >
<
>;
, .
N :
//
class Matrix
{
float data;
int N;
//
int M;
//
202
2
public:
Matrix(int,int);
-Matrix( ) { delete[ ] data; }
property float Items [int i] [int j] =
{ read=Get!tems, write=Set!tems };
private:
float
fastcall Getltems(int i, int j);
void
fastcall Setltems (int i, int j, float value);
};
Matrix::Matrix(int n, int m)
//
{
data = new float [n*m];
//
for(int i = 0; i < n*m; i++) //
data[i] = 0.;
N = n;
M = m;
}
void
fastcall Matrix::Setltems(int i, int j, float value)
{
// value (i,j)
if ( (i<l) I I (i>N) I I (j<l) I I (j>M) )
ShowMessage(" (" + intToStr(i) +
", " + IntToStr (j) + ") ") ;
else data[(i-l) * M + j - 1] = value;
}
float
fastcall Matrix: .-Get I terns (int i, int j)
{
// (i,j)
if ( ( i < l ) I I (i>N) | | (j<l) | | ( j > M ) )
ShowMessage(" (" + I n t T o S t r ( i ) +
"," + IntToStr ( j ) + " ) " ) ;
else return d a t a f ( i - l ) * M + j - 1]-;
}
Matrix.
Items, .
property: float Items [int i] [int j].
i j .
: [int] [int].
.
Getltems , .
1, , , , .
Setltems value
, .
, , , :
Matrix x ( 4 , 5 ) ;
4 x 5 . Items. :
. I t e m s [ 2 ] [ 3 ] = 1.5;
f l o a t = . I t e m s [ 2 ] [3];
1,5 3- 2- ,
.
C++
203
2.14.7.2
- - , .
C++Builder ,
TObject ( this), TNotifyEvent. C++Builder OnClick ,
- - TObject *Sender.
, . :
private :
TNotifyEvent FMyEvent;
_ published:
_ property TNotifyEvent MyEvent = {read= FMyEvent,
write= FMyEvent};
,
. , , ,
true, . ,
, ,
, , . :
if (FMyEvent) OnMyEvent (this) ;
OnMyEvent, , . , "On".
, , .
- , . - , Windows,
.
- this,
TNotifyEvent
. _ closure. :
typedef vc^id _ fastcall ( _ closure *TMyEvent)
(System: :TObject *Sender, bools MyParam) ;
class : public TObject
{
private
TMyEvent FMyEvent;
published
_ property TMyEvent 'FMyEvent = {read= FMyEvent,
write= FMyEvent);
- .
, , .., , .
204
2.14.8
C++ ,
(generic) . ,
,
.
,
. ,
, , , , .
(. . 1.7.8).
template <class > class
, . ,
- , "". :
template <class T> class Matrix
Matrix . .
( )
.
. , float. class,
, , . C++ typename.
:
template <typename T> class Matrix
f
He typename ( C++Builder 6 ),
class.
, ,
. 2.14.6.1.
//
template <class T> class Matrix
{
*data;
int N;
//
int M;
//
public:
Matrix(int,int) ;
-Matrix( ) { delete[ ] data; }
property Items [int i] [int j] =
{ read=Get!tems, write=Set!tems } ;
private:
C++
205
//
template <class T> Matrix<1> : :Matrix (int n, int m)
(
data = new T [ n * m ] ;
f o r (int i = 0; i < n*m;
data[i] = 0;
N = n;
M = m;
// value (i,j)
int j)
. 2.14.6.1, ,
float,
. 2.14.6.1, . . : , , .. .
2.14.6.1 -
.
, , , :
Matrix<float> x ( 4 , 5 ) ;
4 x 5 .
. 2.14.6.1 '
, ,
. (
float) , .
, . 2.14.6.1, Items. :
. Items [2] [3] = 1.5;
float = . Items [2] [3] ;
1,5 3- 2- ,
.
206
typename , . ,
. ,
:();
: - ,
:, -
( C++).
.
typename, . :
typename : ( ) ;
, .
3
, C++,
C++Builderf API Windows
650 , C++, C++Builder,
API Windows. , .
, . [2].
. 4. . , Ceil. ,
. 4. .
. , , . 4, .
3.1
3.1.1
,
, , Key OnKeyDown OnKeyUp.
, .
Fl
112
0x70
VK_F1
F2
113
0x71
VK_F2
F3
114
0x72
VK_F3
F4
115
0x73
VK_F4
F5
116
0x74
VK_F5
F6
117
0x75
VK_F6
F7
118
0x76
VK_F7
F8
119
0x77
VK_F8
F9
120
0x78
VK_F9
F10
121
0x79
VK_F10
32
0x20
VK_SPACE
Backspace
0x8
VK_BACK
Tab
0x9
VKJTAB
208
Enter
13
OxOD
Shift
16
0x10
VK_SHIFT
Ctrl
17
Oxll
VK_CONTROL
Alt
18
0x12
VK_MENU
CapsLock
20
0x14
VK_CAPITAL
Esc
27
OxlB
VK_ESCAPE
Insert
45
Ox2D
VK_INSERT
PageUp
33
0x21
VK_PRIOR
PageDown
34
0x22
VK NEXT
End
35
0x23
VK_END
Home
36
0x24
VK_HOME
<-
37
0x25
VKJLEFT
38
0x26
VK_UP
>
39
0x27
VKJRIGHT
40
0x28
VK_DOWN
Delete
46
Ox2E
VK_DELETE
_ VK_RETURN
PrintScreen
44
Ox2C
VK_SNAPSHOT
ScrollLock
145
0x91
VK_SCROLL
Pause
19
0x13
VK_PAUSE
NumLock
144
0x90
VKJ4UMLOCK
o,)
48
0x30
'0'
1, !
2, @
49
0x31
'1'
50
0x32
'2'
3, #
51
0x33
'3'
4,$
52
0x34
'4'
5, %
53
0x35
'5'
6, "
54
0x36
'6'
7, &
55
0x37
'
8,*
56
0x38
'&'
9, (
57
0x39
'9'
192
OxCO
189
OxBD
=+
187
OxBB
[{
219
OxDB
]}
221
OxDD
209
;;
186
222
OxDE
\l
<
220
OxDC
188
>
190
/?
191
OxBF
65
0x41
''
66
0x42
''
67
0x43
''
d, D
68
0x44
'D'
69
0x45
f, F
70
0x46
'
-
9, G
71
0x47
'G'
h, H
72
0x48
'
73
0x49
'
74
'
k,
75
''
1, L
76
'L'
m, M
77
Ox4D
n, N
78
'N'
,0
79
Ox4F
80
0x50
''
-
q, Q
81
0x51
Q'
, R
_ 82
0x52
'R'
s, S
83
0x53
'S
t,T
84
0x54
''
, U
85
0x55
v, V
86
0x56
w, W
87
0x57
'W"
, X
88
0x58
'X'
, Y
89
0x59
z, Z
90
'Z'
NumLock
96
0x60
VK_NUMPADO
97
0x61
VK_NUMPAD1
210
98
0x62
VK_NUMPAD2
99
0x63
VK_NUMPAD3
100
0x64
VK_NUMPAD4
101
0x65
VK_NUMPAD5
102
0x66
VK_NUMPAD6
103
0x67
VK_NUMPAD7
104
0x68
VK_NUMPAD8
9
*
105
0x69
VK_NUMPAD9
106
VK_MULTIPLY
107
VK_ADD
109
Ox6D
VK_SUBTRACT
110
VK_DECIMAL
111
Ox6F
VK_DIVIDE
, ,
OnKeyDown , . Key,
. , , . ,
"Y" ""- , , "" "",
. .
, Key , . , Enter :
i f ( K e y == 13) . . . ;
Key , . ,
:
if(Key == OxOD) . . . ;
, , , ,
. ,
:
i f ( K e y == VK^RETURN) . . . ;
, ,
. ,
, Key. , ,
, "Y", :
i f ( K e y == ' Y ' ) . . . ;
211
. "" , "" "", .
3.1.2
(. . 2.4) Windows.
33
38
43
48
53
58
63
68
73
78
83
88
93
98
103
108
113
118
123
133
149
167
174
182
192
197
202
207
212
!
&
+
0
5
:
?
D
I
N
S
X
q
V
{
...
11
34
39
44
49
54
59
64
69
74
79
84
89
94
99
104
109
114
119
124
145
150
168
176
183
193
198
203
208
213
6
*
h
m
w
<
35
40
45
50
55
60
65
70
75
80
85
90
95
100
105
110
115
120
125
146
151
169
177
184
194
199
204
209
214
#
(
2
7
<
d
i
n
s
X
3
M
36
41
46
51
56
61
66
71
76
81
86
91
96
101
106
111
116
121
126
147
153
171
178
185
195
200
205
210
215
)
.
3
8
=
G
L
Q
V
[
'
37
42
47
52
57
62
67
72
77
82
87
92
97
102
107
112
117
122
132
148
166
172
179
187
196
201
206
211
216
%
*
/
4
9
>
R
W
f
k
J)
212
217
222
227
232
237
242
247
252
218
223
228
233
238
243
248
253
219
224
229
234
239
244
249
254
220
225
230
235
240
245
250
255
221
226
231
236
241
246
251
-
3.1.3 ,
3.1.3.1
, (printf.
cprintf. sprintf .)> , .
.
% :
%[flags][width][.precision][F|N|h|l|L]type
.
type , . :
[flags]
[width]
[.precision]
[F|N|h|l|L]
, , , , (, )
, :
N
(near)
F
(far)
h
short int
I
long
L
long double
type.
signed integer
signed integer
unsigned integer
unsigned integer
unsigned int ( ,
b, c, d, e, f)
, , , , , D, , F
: [-Jdddd.dddd
u
X
X
f
e
(i
213
() : [-Jd.dddd
e[+/-]ddd
, ,
f ;
, g,
,
%
int
, ,
;
XXXX:YYYY, YYYY ( )
flags .
, . , ,
.
(+) ( ).
,
(+). (-)
. +,
.
214
, X, X 0, , ,
, , f, g, G . g, G
.
width . , (*). ,
.
width .
, .
:
On
*
.
, ( , ) .
.
, .
.
precision
. (.),
width. , width, ,
(*). ,
.
precision :
1
6
d, i, , u, x, X
, , f
g, G
s
precision:
.0
.11
d, i, , u, x .
, , f .
.
, , ( ).
.
215
precision .
d, i, , u, x, X , ,
,
. , .
, , f
,
. .
, .
g. G
.
, .
%f
%g
%#G
110000.000000
1.100000+05
110000
-110000000.000000
-1.100000+08
-1.1+08
110000.
-1.10000+08
0.000110
1.100000-04
0.00011
0.000000
12.000000
1.100000-07
1.1-07
0.000110000
1.10000-07
1.200000+01
12
12.0000
0.000000
.+00
0.00000
12
-12
%6i
%-6i
12
-12
%+6i
+ 12
-12
%06i
000012
-00012
%f
%.5f
123456789.000000
123456789.00000
0.123457
0.12346
% .3f
123456789.0000
123456789.000
%e
1.234568e+08
0.1235
0.123
1.234568e-01
%.5e
1.23457e+08
1.23457e-01
% At
216
%
%.3
%g
%.5g
%.4g
%.3g
%.2g
1.2346e+08
1.2346e-01
1.235e+08
1.23457e+08
1.2346e+08
1.235e+08
1.23e+08
1.2e+08
1.235e-01
0.123457
0.12346
0.1235
0.123
0.12
. 4
.
3.1.3.2
,
(scanf. fscanf. sscanf .). :
( " ", "\t", "\"
( %)
,
,
().
,
, . , .
% :
% [*] [width] [ F | N ] [ h | l | L ] type
.
type , , .
:
[*]
[width]
[F|N]
[h|l|L]
. ,
. .
. , ,
.
, :
N
(near)
F
(far)
, :
h
short int
1
long int, type , double, type
L
long double
217
type.
g,G
, int (int *arg)
, long (long *arg)
unsigned int (unsig
ned int *arg)
unsigned long (un
signed long *arg)
i
I
(char arg[])
char (char *arg) ,
(, %5),
W (char arg[W])
:
YYYY:ZZZZ ZZZZ
,
,
(far* near*)
. 4
.
3.1.3.3 Format
Format.
FormatBuf, FmtStr, StrFmt, StrLFmt .
218
. , .
% :
"%" [index " : " ]
["-"]
[width]
type , , . :
[index ":"]
index. 0. , % 0: .
["-"]
. ["--"] .
[width]
. , ( , [""]) .
["." prec] , ( ). (.), width.
index, width prec
(*). ,
.
type.
.
["." prec],
. , .
"-d.ddd...E+ddd".
.
["." ],
,
( 15 ). ""
.
"ddd.ddd...". ["."
],
( 2 ).
219
, , . ["."
], ( 15).
, ,
.
,
0.00001.
.
, , : "-d,ddd,ddd.ddd...".
, . CurrencyString, Currency Format, NegCurrPormat, ThousandSeparator, DecimalSeparator, CurrencyDecimals, Currency Format International Windows. ["."
], CurrencyDecimals.
"XXXX:YYYY", YYYY
, .
,
PChar
.
["." ], .
, .
. ["."
],
. ,
.
, .
DecimalSeparator ThousandSeparator.
%f
%g
110000.
110000,00
1+005
110000
-1.1+08
-110000000,00
-1+008
-110000000
220
%f
%g
0.00011
0,00
1 , 10000000000000-004
0,00011
1.1-07
0,00
1-007
1-7
12.
12,00
1,20000000000000+001
12
0,
0,00
0,+000
:
/ 1-4
12.
0,00
%.2f
0,00
12,00
0,000
%.3f
0,000
12,000
0,0000
% .4f
0,0001
12,0000
.+000
%.2
1-007
1,2+001
0,+000
% .
1-007
1,20+001
0,+000
% .4
1-007
1.200+001
.+000
%.2g
1-7
12
%.3g
1-7
12
% -4g
1-7
12
#include <SysUtils.hpp>
enum TFloatFormat { ffGeneral, ffExponent, ffFixed, ffNumber,
ffCurrency };
enum TFIoatValue { fvExtended, fvCurrency };
. ,
. ,
.
, Precision 0.00001. ,
Digits 0 4.
221
ffExponent .
"-d.ddd...E+dddd". , , Precision. ""
"+" " " . Digits 0 4.
ffFixed
.
"-ddd.ddd...". . Digits,
18. Precision, .
ffNumber
.
'-d,ddd,ddd.ddd...". ffFixed .
ffCurrency
. ,
. CurrencyString, CurrencyFormat, NegCurrFormat, ThousandSeparator, DecimalSeparator,
Currency Format International
Windows.
Digits, 0 18.
, ,
DecimalSeparator Thousands eparat or.
3.1.3.5 FormatFloat
, , FormatFloat, FloatToTextFmt, FormatFloat AnsiString
.
:
. ,
"", .
"".
. ,
"#", .
.
. "." . "." . , , DecimalSeparator, Number Format International
Windows.
222
.
",",
. "," , . ,
, ThousandSeparator, Number Format
International Windows.
+, +,
''/""
, , , .
,
, .
"" "" ,
.
,
"" "#" .
,
.
,
"" "#",
.
, . ,
. ,
, . , , , .
(..
), .
, 15 . ffGeneral TFloatFormat (. . 3.1.3.4). ,
18
.
223
1234
-1234
0.5
1234
-1234
0.00
#.##
1234,00
-1234,00
0,50
0,00
1234
-1234
,5
#,##0.00
#,##0.00;(#,##0.00)
#,##0.00;;
1 234,00
1 234,00
1 234,00
-1 234,00
(1 234,00)
0,50
0,00
0,50
0,00
-1 234,00
0,50
.+00
#.###-0
1.234+03
1,234
-1.234+03 5,-01
-1,234
5-1
.+00
3.1.4 ,
,
#include <errno.h>
_sys_errlist
E2BIG
EACCES
20
EAGAIN
EBADF
42
EBUSY
44
Resource busy
224
ECHILD
ECONTR
ECURDIR
EDEADLOCK
_sys_errlist
24
No child process
Memory blocks destroyed
Attempt to remove CurDir
EDOM
EEXIST
EFAULT
33
EFBIG
EINTR
EINVACC
EINVAL
27
EINVDAT
EINVDRV
EINVENV
EINVFMT
EINVFNC
EINVMEM
13
40
EISDIR
EMFILE
EMLINK
ENFILE
46
ENMFILE
ENODEV
ENOENT
ENOEXEC
ENOFILE
ENOMEM
ENOPATH
ENOSPC
ENOTBLK
ENOTDIR
ENOTSAM
ENOTTY
ENXIO
EPERM
18
16
36
35
14
39
12
19
15
10
11
1
31
23
15
2
21
2
8
3
28
43
45
17
25
41
37
Locking violation
Math argument
File already exists
Unknown error
UNIX MSDOS
Interrupted function call
Invalid access code
Invalid argument
Invalid data
Invalid drive specified
Invalid environment
Invalid format
Invalid function number
nvalid memory block address
Input/output error
UNIX MSDOS
Too many open files
UNIX MSDOS
Too many open files
No more files
No such device
No such file or directory
Exec format error
File not found
Not enough core
Path not found
No space left on device
UNIX MSDOS
UNIX MSDOS
Not same device
UNIX MSDOS
No such device or address
Operation not permitted
EPIPE
_sys_errlist
32
Broken pipe
ERANGE
34
EROFS
ESPIPE
30
ESRCH
38
Illegal seek
UNIX MSDOS
ETXTBSY
EUCLEAN
26
UNIX MSDOS
47
UNIX MSDOS
22
Cross-device link
Error 0
EXDEV
EZERO
29
225
. ,
strcpy(_sys_errlist[ENOENT]," ");
"No such file or directory".
-- -, , C++Builder I/O
checking Pascal . ++ilder EInOutError.
2
3
4
100
(EOF)
101
106
#include <math.h>
int _matherr(struct _exception *e);
int _matherrl(struct _exceptionl *e);
226
( ..). , , , ,
0. signal.
_matherr _matherrl
, .
, .
. _matherr _matherrl , 0.
.
:
*
struct _exception {
int
type;
char
*name;
double a r g l , arg2, retval;
};
struct _exceptionl {
int
type;
char
*name;
long double argl, arg2, retval;
};
type . name
, , . argl
arg2 , (
, argl). retval . .
, type, :
DOMAIN
SING
OVERFLOW
UNDERFLOW
TLOSS
; ,
log(-l)
; ,
pow(0, -2)
,
DBL_MAX ( LDBL_MAX); , ()
,
DBL_MIN ( LDBL_MIN); , (-)
; , sin(10e70)
DBL_MAX, DBL_MIN,
LDBL_MAX LDBL_MIN float.h.
,
DOMAIN sqrt ( ),
:
int _matherr (struct _exception *a)
{
if (a->type == DOMAIN)
if ( ! s t r c m p ( a - > n a m e , " s q r t " J ) {
227
3.1.5 Windows
. 1.14, . 4 Windows. .
WM_ACTIVATE
, . , , .
WM_ACTIVATE
fActive = LOWORD(wParam);
fMinimized = (BOOL) HIWORD(wParam);
hwndPrevious = (HWND) IParam;
fActive , . :
WA_ACTIVE
(,
Set Active Window )
WA_CLICKACTIVE
WA_INACTIVE
fMinimized , , .
hwndPrevious , ,
, , , , .
, .
, .
,
WMJMOUSEACTIVATE.
WM_ACTIVATEAPP
. .
WM_AC TIVATEAPP
fActive = (BOOL) wParam;
dwThreadJD = (DWORD) IParam;
228
WM_CLOSE
, .
DestroyWindow, .
DestroyWindow .
WM_GETMINMAXINFO
. .
WM_GETMINMAXINFO
Ipmmi = (LPMINMAXINFO) IParam;
Ipmmi MINMAXINFO,
. :
typedef struct tagMINMAXINFO {
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;
229
:
ptReserved
ptMaxSize
Point (Point .)
(Point.y)
ptMaxPosition
Point (Point. )
(Point.y)
ptMinTrackSize
Point (Point. )
(Point.y)
ptMaxTrackSize
Point (Point. )
(Point.y)
, 0.
end;
implementation
procedure T F o r m l . W M G e t M i n M a x I n f ( v a r I n f o : T W M G e t M i n M a x I n f o ) ;
begin
with I n f o . M i n M a x I n f o A do
begin
p t M i n T r a c k S i z e . x := 150;
p t M a x T r a c k S i z e . x := 300;
ptMinTrackSize. := 100;
ptMaxTrackSize. := 2 0 0 ;
ptMaxPosition.x:=BoundsRect.Left;
ptMaxPosition.:=BoundsRect.Top;
end;
inherited;
end;
WM_GETTEXT
, , , .
WM_GETTEXT
wParam = (WPARAM) cchTextMax;
IParam = (LPARAM) IpszText;
230
cchTextMax ,
, .
IpszText , .
.
, , .
. . .
.
, 64, EM_STREAMOUT EM_GETSELTEXT.
WM_SETFONT
, ,
.
WM_SETFONT
wParam = (WPARAM) hfont;
IParam = MAKELPARAM(fRedraw, 0);
//
//
- . . ,
, ,
.
Editl
Form2, ,
FontDialogl:
if (FontDialogl.Execute) then
SendMessage(Form2.Editl.Handle, WM_SETFONT,
FontDialogl.Font.Handle, 0);
WM_SETTEXT
, .
WM_SETTEXT
wParam = 0;
IParam = (LPARAM) (LPCTSTR)Ipsz;
231
Ipsz .
true, . false
( ), LB_ERRSPACE ( ) CBJERRSPACE (
) .
CB_ERR, .
.
. . .
.
. , , CB_SELECTSTRING.
3.1.6 AnsiString
C++Builder AnsiString , vcl/dstring.h Delphi. . AnsiString .
AnsiString ==, !=, >, <, >=, <=. . , , , , . ,
, , .
AnsiString =, += () +. [ ]. 1. , S1 = "", Sl[l] '', Sl[2] '' ..
AnsiString . 2 . 2.5.2. AnsiString ( S1 , ):
AnsiCompare
232
AnsiPos
/
int AnsiPos(const AnsiString& subStr) const
subStr S1. 1. subStr S1, 0. Pos
AnsiString
AnsiS tring(apryMeHT)
. :
c_str
CurrToStr
CurrToStrF
Delete
const AnsiString& src AnsiString src
,
const char* src,
unsigned char len len src
const wchar_t* src
src wchar_t
int src
src
double src
src
;
15
char* c_str()const
,
, AnsiString
static AnsiString CurrToStr(Currency value)
value Currency
static AnsiString CurrToStrF(Currency value,
TStringFloatFormat format, int digits)
value Currency , (. . 3.1.8). . CurrToStrF
19
void Delete(int index, int count)
, index ,
count
233
FloatToStrF
Format
FormatFloat
Insert
IntToHex
IsDelimiter
IsEmpty
LastDelimiter
Length
LowerCase
Pos
234
SetLength
StringOfChar
/
void SetLength(int newLength)
newLength .
,
static AnsiString StringOfChar(char ch, int count)
, ch count .
,
AnsiString s = AnsiString: : StringOfChar ( ' A ' , 10);
Substring
s ""
AnsiStrine SubString(int index, int count) const
,
index count
ToDouble
Tolnt
ToIntDef
Trim
TrimLeft
TrimRight
Unique
UpperCase
WideChar
235
WideCharBufSize
3.1.7 TDateTime
, ,
systdate.h.
(Now());
Now.
: "+" "
-
, , "++" "
, double , Delphi,
.
- :
-
CurrentDate
TDateTime CurrentDate()
TDateTime CurrentTime()
DateString
DateTimeString
236
- /
DayOfWeek
DecodeDate
DecodeTime
FileDate
FileDateToDateTime
FormatString
TimeString
Labell->Caption
Label2->Caption
Label3->Caption
Label4->Caption
= ;
// 26. 05.2002 18:44:07
= .DateTimeString();
= .DateString() ;
// 26. 05.2002
= .TimeString();
//18:44:07
: , , . , .
3.1.8 TStringFloatFormat -
TStringFloatFormat .
enum
TStringFloatFormat
237
sffGeneral
:
. .
.
0.00001.
( 0 4).
sffExponent .
"-d.ddd...E+dddd". '' .
. ( ) . ''
+ , ( )
0 4.
sffFixed
sffN umber
.
"-d,ddd,ddd.ddd...". sffFixed
.
sffCurrency , . Windows (
CurrencyString, CurrencyFormat, NegCurrFormat,
ThousandSeparator, DecimalSeparator). ( 0 18).
3.2
3.2.1 ,
_1_1
1/
0.318309886183790671538
M_1_SQRTPI 1 /
0.564189583547756286948
_2_1
0.636619772367581343076
2 /
M_2_SQRTPI 2 /
1.12837916709551257390
2.71828182845904523536
LN10
1(10) 10 2.30258509299404568402
LN2
1(2) 2 0.693147180559945309417
MJLOG10E
logio(e) 0.434294481903251827651
238
M_LOG2E
Iog2(e) 2
1.44269504088896340736
M_PI
3.14159265358979323846
M_PI_2
n/ 2
1.57079632679489661923
M_PI_4
14
0.785398163397448309616
M_SQRT_2
2', 2
0.707106781186547524401
M_SQRT2
1.41421356237309504880
3.2.2
stdlib.h
math.h
cabsl
math.h
ceil
double ceil(double x)
: , X
math.h
Ceil
: , X
Math.hpp
ceill
: , X
math.h
_crotl
crotr
int abs(int x)
abs
cabs
};
};
div
math.h
exp
double exp(double x)
math.h
expl
math.h
fabs
double fabs(double x)
math.h
239
fabsl
floor
: math.h
, X
Floor
: Math.hpp
, X
floorl
fmod
fmodl
/ math.h
frexp
double frexp(double x,
int *exponent)
() exponent
Frexp
void Frexp(Extended X,
X - Math.hpp
Extended &Mantissa, Mantissa
int &Exponent)
Exponent
frexpl
Base
IntPower Extended IntPower(
Extended Base, Exponent
int Exponent)
labs
Idexp
Ldexp
Extended Ldexp(Extended X,
-2
intP)
Idexpl
Idiv
typedef struct {
long int quot;
//
long int reni;
//
} ldiv_t;
ldiv_t ldiv(long int numer,
long int denom)
LnXPl
Extended LnXPl(Extended X)
log
. 2
. 2
math.h
math.h
math.h
Math.hpp
stdlib.h
math.h
Math.hpp
math.h
: math.h,
numer / denom;
stdlib.h
quot
rem
Math.hpp
double log(double x)
math.h
loglO
double loglO(double x)
math.h
LoglO
Extended LoglO(Extended X)
Math.hpp
loglOl
( + 1)
math.h
240
Log2
Extended Log2(Extended X)
Math.hpp
log!
math.h
Log-N
X Base
Math.hpp
val
lrotl(
unsigned long val, count
int count)
stdlib.h
val
count
stdllb.h
max
max(a, b)
- stdlib.h
b
min
min(a, b)
stdlib.h
modf
double modf(double x,
double *ipart)
ipart
math.h
modfl
math.h
POly
Poly
X
Extended Poly(Extended X,
const double * Coefficients, Coefficients_Size
const int Coefficients_Size) Coefficients
polyl
DOW
Power
powl
Irotl
unsigned long
Irotr
Math.hpp
math.h
math.h
rotl
rotr
sqrt
double sqrt(double x)
math.h
sqrtl
math.h
241
,
math.h Math.hpp C++Builder
.
#include <math.h>
linclude <Math.hpp>
3.2.3
double acos(double x)
math.h
acosl
math.h
ArcCos
Extended ArcCos(Extended X)
Math.hpp
ArcCosh
Extended ArcCosh(Extended X)
- Math.hpp
Arc Sin
Extended ArcSin(Extended X)
ArcSinh
Extended ArcSinh(Extended X)
- Math.h
ArcTan2
Extended ArcTan2(Extended Y,
Extended X)
(Y / X)
ArcTanh
Extended ArcTanh(Extended X)
- Math.hpp
asin
double asin(double x)
math.h
asinl
math.h
atan
double atan(double x)
math.h
atan2
math.h
atan21
math.h
atanl
math.h
cos
double cos(double x)
math.h
cosh
double cosh(double x)
math.h
Cosh
Extended Cosh(Extended X)
Math.hpp
Math.hpp
Math.hpp
242
coshl
math.h
cosl
math.h
Cotan
Extended Cotan(Extended X)
Math.hpp
- Math.hpp
CycleToRad Extended CycleToRad(
Extended Cycles) Cycles: 2- Cycles.
DegToRad
Extended DegToRad(
Extended Degrees)
Degrees:
Degrees -: / 180.
hypot
- math.h
Hypot
Extended Hypot(Extended X,
Extended Y)
X Y
hypotl
Math.hpp
Math.hpp
RadToCycle Extended RadToCycle(
Extended Radians)
Radians:
Radians / (2).
Math.hpp
RadToDeg
Extended RadToDeg(
Extended Radians)
Radians:
Radians 180 / .
Math.hpp
sin
double sin(double x)
math.h
SinCos
Sin Math.hpp
Cos
Theta
Sinh
Extended Sinh(Extended X)
Math.hpp
sinh
double sinh(double x)
math.h
sinhl
math.h
sinl
math.h
Tan
Extended Tan(Extended X)
Math.hpp
tan
double tan(double x)
math.h
243
Tanh
Extended Tanh(Extended X)
Math.hpp
tanh
double tanh(double x)
math.h
tanhl
math.h
tanl
math.h
,
math.h Math.hpp C++Builder
.
#include <math.h>
#include <Math.hpp>
.
, , DegToRad CycleToRad. ,
double Rad = D e g T o R a d ( 9 0 ) ;
Rad 90 . Rad
double Rad = C y c l e T o R a d ( 0 . 2 5 ) ;
( ). 90 :
double S = s i n ( D e g T o R a d ( 9 0 ) ) ;
:
acos acosl [0, ], asin, asinl, atan, atan'2, atan21, atanl [-/2, /2]. .
RadToDeg RadToCycle. ,
double A = a t a n ( ) ;
double Al = R a d T o D e g ( a t a n ( ) ) ;
double 2 = R a d T o C y c l e ( a t a n ( T ) ) ;
(), (1) (2).
acos, acosl, asin, asinl,
[-1, + 1], (EDOM).
cosh, coshl, sinh, sinhl,
,
(ERANGE).
3.2.4
Irand
long Irand(void)
, 0 2 31 - 1
stdlib.h
244
rand
int rand(void)
, 0 RAND_MAX
stdlib.h
RandG
Math.hpp
Extended RandG(Extended Mean, Extended StdDev)
, ; Mean ,
StdDev
random
stdlib.h
randomize
void randomize(void)
( RandG)
stdlib.h
Randomize
void Randomize(void)
RandG
Math.hpp
srand
stdlib.h
3.2.5
,
Data, Data_Size.
MaxIntValue int MaxIntValue( const int * Data, const int Data Size) Math.hpp
MaxValue
Math.hpp
Mean
Math.hpp
Dev
Math.hpp
MinlntValue
Min Value
Math.hpp
245
PopnStdDev
PopnVariance
Math.hpp
StdDev
Math.hpp
Sum
Math.hpp
Sumlnt
Math.hpp
SumOfSquares
Math.hpp
SumsAndSquares
TotalVariance
Math.hpp
Variance
Math.hpp
Math.hpp
246
3.2.6 FPU
clear87
clearfp
controI87
controlfp
/
unsigned int _clear87 (void)
FPU
unsigned int _clearfp (void)
FPU
unsigned int _contro!87(unsigned int newcw,
unsigned int mask)
FPU
unsigned int _controlfp(unsigned int newcw,
unsigned int mask)
FPU
void _fpreset(void)
Word Get8087CW(void)
GetSOSTCW
FPU
GetExceptionMask TFPUExceptionMask GetExceptionMask(void)
GetPrecisionMode TFPUPrecisionMode GetPrecisionMode(void)
, FPU,
TFPUPrecisionMode
TFPURoundingMode GetRoundMode(void)
GetRoundMode
,
FPU, TFPURoundingMode
SetSOSTCW
void Set8087CW(Word NewCW)
FPU
SetExceptionMask TFPUExceptionMask SetExceptionMask(
void TFPUExceptionMask Mask)
SetPrecisionMode TFPUPrecisionMode SetPrecisionMode(
const TFPUPrecisionMode Precision)
,
FPU, TFPUPrecisionMode
SetRoundMode
TFPURoundingMode SetRoundMode(
const TFPURoundingMode RoundMode)
,
FPU, TFPURoundingMode
fpreset
247
status87
statusfp
3.3
3.3.1
3.3.1.1 char *
_atoi64
stdlib.h
_atold
math.h
_i64toa
stdlib.h
_itow
stdlib.h
_ltoa
stdlib.h
_strtold
stdlib.h
_ui64toa
char *_ui64toa(unsigned
_ultow
stdlib.h
wchar_t *_ultow(unsigned long Value,
wchar_t *string, int radix)
value string radix
_wcstold
stdlib.h
_wtof
math.h
_wtoi
stdlib.h
248
_wtoi64
/
int64 _wtoi64(const wchar_t *s)
stdlib.h
s
_wtol
stdlib.h
s
_wtold
math.h
s
atof
atoi
stdlib.h,
math.h
stdlib.h
s
atol
stdlib.h
s
ecvt
stdlib.h
value
ndig; dec ,
sign
fcvt
stdlib.h
value
ndig; dec ,
sign
gcvt
stdlib.h
stdlib.h
stdlib.h
s
strtol
stdlib.h
s
strtoul
stdlib.h
stdlib.h
stdlib.h
s
wcstol
stdlib.h
s
wcstoul
249
, . ,
, .
, 0.
atof strtod "+INF" "-INF",
, "+NAN" "-NAN",
.
strtod, strtol, _strtold, strtoul, wcstod, wcstol, wcstoul
endptr NULL. , :
double = s t r t o d ( E d i t l - > T e x t . c _ s t r ( ) , NULL) ;
, Editl, . endptr:
char *endptr;
double = s t r t o d ( E d i t l - > T e x t . c _ s t r ( ) , S e n d p t r ) ;
*endptr , .
.
,
HUGE_VAL ( double)
LHUGE_VAL ( long double).
AnsiString (. . 2.5.2).
char * c_str(), .
3.3.1.2 ,
SysUtils.hpp
CurrToStr
/
System-AnsiString CurrToStr(System::Currency Value)
Value Currency
CurrToStrF
System::AnsiString CurrToStrF(System::Currency Value,
TFloatFormat Format, int Digits)
Currency TFloatFormat (. . 3.1.2.4)
FloatToDecimal void FloatToDecimal(TFloatRec &Result, const void *Value,
TFloat Value ValueType, int Precision, int Decimals)
Value ValueType (CM. TFloatValue . 3.1.2.4)
TFloatRec
System::AnsiString FloatToStr(Extended Value)
FloatToStr
Value
System::AnsiString FloatToStrF(Extended Value,
FloatToStrF
TFloatFormat Format, int Precision, int Digits)
Value TFloatFormat
(. . 3.1.2.4)
250
FloatToText
FloatToTextFmt
FmtStr
Format
FormatBuf
FormatCurr
System::AnsiString FormatCurr(
const System::AnsiString Format,
System::Currency Value)
Currency
FormatFloat (. . 3.1.2.5)
FormatFloat
System::AnsiString FormatFIoat(
const System::AnsiString Format,
Extended Value)
Value FormatFloat (. . 3.1.2.5)
GetFormatSettings
void GetFormatSettings(void)
,
IntToHex
IntToStr
251
/
char * StrFmt(char * Buffer, char * Format,
const System::TVarRec * Args, const int Args_Size)
Args Args_Size - 1
Buffer Format (. . 3.1.2.3)
StrFmt
StrLFmt
StrToCurr
StrToCurrDef
StrToFloat
StrToFloatDef
StrToInt
StrToIntDef
f
TextToFloat
TrvStrToInt
,
SysUtils.hpp, ValueType, fvExtended Extended, fvCurrency -- Currency.
TFloatFormat,
. 3.1.2.4, FormatFloat, .
3.1.2.5, , Format, . 3.1.2.3.
Args Args_Size - 1. Args_Size
Args TVarRec.
, . 3.1.2.3.
252
Exponent
FloatToDecimal:
struct TFloatRec Result;
Extended V a l u e = . . . ;
FloatToDecimal(Result, S V a l u e , f v E x t e n d e d , 1 8 , 9 9 9 9 ) ;
Value :
Value
123.4567890123456789
1234567890123456789
-0.001234567890123456789
Exponent
3
Negative
false
Digits
19
-2
false
true
123456789012345679
123456789012345671
123456789012345681
3.3.2
asctimc
time.h
tm
253
DateUtils.hpp
Types::TValueRelationship CompareDate(
const System: :TDateTime A,
const System: :TDateTime B)
. -1 < , 0 = , +1 >
CompareDateTime Types::TValueRelationship CompareDateTime( DateUtils.hpp
const System::TDateTime A,
const System::TDateTime B)
5. -1 < , 0 = ,
+1 >
DateUtils.hpp
Types::TValueRelationship CompareTime(
2ompareTime
const System: :TDateTime A,
const System::TDateTime B)
.
-1 < , 0 = , +1
>
time.h
char *ctime(const time_t *time)
ctime
time,
time,
SysUtils.hpp
System::TDateTime Date(void)
Date
^ompareDate
SysUtils.hpp
int DateTimeToFileDate(
System::TDateTime DateTime)
DateTime DOS
SysUtils.hpp
System::AnsiString DateTimeToStr(
DateTimeToStr
System: :TDateTime DateTime)
DateTime
SysUtils.hpp
DateTimeToString void DateTimeToString(
System::AnsiString &Result,
const System::AnsiString Format,
System::TDateTime DateTime)
DateTime Result no
Format
SysUtils.hpp
void DateTimeTo SystemTime(
DateTimeTo
System: :TDateTime DateTime,
SystemTime
_SYSTEMTIME &SystemTime)
DateTime TSystemTime, API Windows
SysUtils.hpp
TTimeStamp DateTimeToTimeStamp(
DateTimeTo
System::TDateTime DateTime)
TimeStamp
DateTime TTimeStamp
SysUtils.hpp
System::AnsiString DateToStr(
DateToStr
System: :TDateTime Date)
DateTimeTo
FileDate
Date
254
DayOf
DavOfTheMonth
DavOfTheWeek
/
DateUtils.fipp
Word DayOf (const System:.-TDateTime
AValue)
AValue
Word DayOfTheMonth(
DateUtils.hpp
const System::TDateTime AValue)
AValue
DateUtils.hpp
Word DayOfTheWeek(
const System::TDateTime AValue)
AValue ( 1
7, 1 )
DavOfWeek
Word DayOfWeek(
DateUtils.hpp
const System::TDateTime DateTime)
Date ( 1
7, 1 )
DaysBetween
int DaysBetween(
DateUtils.hpp
const System::TDateTime ANow,
const System::TDateTime AThen)
DavSpan
double DaySpan(
DateUtils.hpp
const System::TDateTime ANow,
const System::TDateTime AThen)
DecodeDate
void DecodeDate(
SysUtils.hpp
const System::TDateTime DateTime,
Word &Year, Word &Month,
Word &Day)
DateTime Year,
Month, Day
DecodeDateTime
void DecodeDateTime(
DateUtils.hpp
const System::TDateTime DateTime,
Word &Year, Word &Month,
Word &Day, Word &Hour,
Word &Min, Word &Sec,
Word &MSec)
DateTime Year,
Month, Day, Hour, Min,
Sec, MSec
DecodeTime
SysUtils.hpp
255
EncodeDate
EncodeDateTime
EncodeTime
FormatDateTime
System::AnsiString FormatDateTime(
SysUtils.hpp
const System::AnsiString Format,
System::TDateTime DateTime)
DateTime
Format
getdate
dos.h
gettime
dos.h
gmtime
time.h
HourOf
DateUtils.hpp
HourOfTheDav
Word HourOfTheDay(
DateUtils.hpp
const System::TDateTime AValue)
AValue
HoursBetween
DateUtils.hpp
int HoursBetween(
const System: :TDateTime ANow,
const System: :TDateTime AThen)
HourSpan
DateUtils.hpp
double HourSpan(
const System::TDateTime ANow,
const Systenv.-.TDateTime AThen)
256
IncMonth
SysUtils.hpp
System::TDateTime IncMonth(
const System:: TDateTime Date,
int NumberOfMonths)
Date, NumberOfMonths
IsLeapYear
IsToday
local time
MilliSecondOf
Word MilliSecondOf(
DateUtils.hpp
const System::TDateTime AValue)
AValue
MilliSecond
OfTheSecond
Word MilliSecondOfTheSecond(
DateUtils.hpp
const System::TDateTime AValue)
AValue
MilliSecondsBetween
int MilliSecondsBetween(
DateUtils.hpp
const System::TDateTime ANow,
const System::TDateTime AThen)
MilliSecondSpan
double MilliSecondSpan(
DateUtils.hpp
const System::TDateTime ANow,
const System::TDateTime AThen)
MinuteOf
Word MinuteOf(
DateUtils.hpp
const System::TDateTime AValue)
AValue
SysUtils.hpp
time.h
257
MinuteSpan
double MinuteSpan(
Datelltils.hpp
const System::TDateTime ANow,
const System: :TDateTime AThen)
mktime
MonthOf
MonthOfTheYear
Word MonthOfTheYear(
DateUtils.hpp
const System: :TDateTime AValue)
AValue
MonthsBetween
int MonthsBetween(
DateUtils.hpp
const System::TDateTime ANow,
const System: :TDateTime AThen)
MonthSpan
double MonthSpan(
DateUtils.hpp
const System::TDateTime ANow,
const System: :TDateTime AThen)
MSecsToTime
Stamp
TTimeStamp MSecsToTimeStamp(
SysUtils.hpp
System: :Comp MSecs)
MSecs TTimeStamp
Now
System::TDateTime Now(void)
SecondOf
SecondOfThe
Minute
Word SecondOfTheMinute(
DateUtils.hpp
const System: :TDateTime AValue)
AValue
SecondsBetween
int SecondsBetween(
const System::TDateTime ANow,
const System::TDateTime AThen)
time.h
SysUtils.hpp
DateUtils.hpp
258
SecondSpan
double SecondSpan(
const System: :TDateTime ANow,
const System: :TDateTime AThen)
DateUtils.hpp
setdate
dos.h
void setdate(struct date *datep)
datep ( )
settime
dos.h
stime
time.h
StrToDate
System::TDateTime StrToDate(
SysUtils.hpp
const System::AnsiString S)
S TDateTime
System::TDateTime StrToDateDef(
SysUtils.hpp
const AnsiString S,
const System::TDateTime Default)
S TDateTime, Default
StrToDateDef
StrToDateTime
System::TDateTime StrToDateTime(
const System:: AnsiString S)
S TDateTime
SysUtils.hpp
StrToDateTime
SysUtils.hpp
StrToTime
System::TDateTime StrToTime(
const System::AnsiString S)
S TDateTime
SysUtils.hpp
StrToTimeDef
System::TDateTime StrToTimeDef(
const AnsiString S,
const System: :TDateTime Default)
S TDateTime,
Default
SysUtils.hpp
SystemTime
ToDateTime
Def
259
time
time.h
Time
System-TDateTime Time(void)
SysUtils.hpp
TimeStamp
ToDateTime
TimeStampTo
MSecs
System::Comp TimeStampToMSecs(
SysUtils.hpp
const TTimeStamp &TimeStamp)
64-
TimeToStr
System::AnsiString TimeToStr(
SysUtils.hpp
System::TDateTime Time)
Today
TDateTime
fastcall Today(void)
DateUtils.hpp
Tomorrow
TDateTime
fastcall Tomorrow(void)
DateUtils.hpp
TrvEncodeDate
TrvEncodeDate
Time
TrvEncodeTime
YearOf
DateUtils.hpp
260
YearsBetween
int YearsBetween(
DateUtils.hpp
const System: :TDateTime ANow,
const System: :TDateTime AThen)
YearSpan
double YearSpan(
DateUtils.hpp
const System: rTDateTime ANow,
const System: :TDateTime AThen)
Yesterday
TDateTime
fastcall Yesterdav(void)
DateUtils.hpp
TDateTime (. .
3.1.7), ,
, .
TTimeStamp. , .
, DOS.
, FileAge, FileGetDate, FileSetDate, Time
TSearchRec, FindFirst FindNext.
TDateTime DateTimeToFileDate.
, TSystemTime,
_SYSTEMTIME. API Windows. TDateTime DateTimeToSystemTime, SystemTimeToDateTime.
dos.h date:
struct date{
int da_year;
char da_day;
char da_raon;
//
//
// (1 )
, . .
D date :
#include <dos.h>
struct date D;
getdate(&D);
: D.da_year,
D.da_mon, D.da_day.
:
struct time {
//
//
//
//
261
time , 0 1
1970 . , , , ..,
ctime . :
Mon Nov 21 11:31:54 1 9 8 3 \ \ 0
, .
, time,
gmtime ( ) localtime ( ) tm:
struct tm {
int
int
int
int
int
int
int
int
int
tm sec;
tm min;
tm hour;
tm mday;
tm mon;
tm
tm
tm
tm
year;
wday;
yday;
isdst
//
//
//
//
//
//
//
//
//
(0 - 23)
(1 31)
(0 - 11)
( 1900)
(0 6; 0
(0 -3651
12-
asctime. , :
time_t t = t i m e ( N U L L ) ;
struct tm *tt = l o c a l t i m e ( & t ) ;
char s [80] ;
strcpy(s, a s c t i m e ( t t ) ) ;
3.3.3
Bounds
CurrTo
FMTBCD
FMTBCD
Point
/
Windows::TRect Bounds(int ALeft, int ATop,
int AWidth, int AHeight)
ALeft AWidth
AHeight TRect
bool CurrToFMTBCD(System::Currency Curr,
Bde::FMTBcd &BCD, int Precision, int Decimals)
Curr Bde::FMTBcd
bool FMTBCDToCurr(const Bde::FMTBcd &BCD,
System: :Currency &Curr)
BCD Currency
TPoint Point(int AX, int AY)
AY TPoint
Classes.hpp
DBCommon.hpp
DBCommon.hpp
Classes.hpp
262
Rect
/
Classes.hpp
Windows::TRect Rect(int ALeft, int ATop,
int ARight, int ABottom)
Windows::TRect Rect(constTPoint ATopLeft,
const TPoint ABottomRight)
ALeft, ATop, ARight, ABottom
ATopLeft, ABottomRight TRect
3.4
3.4.1
_tolower
ctype.h
_toupper
isalnum
isalpha
int isalpha(int )
ctype.h
isascii
int isascii(int )
ASCII
ctype.h
iscntrl
int iscntrl(int )
ctype.h
isdigit
int isdigit(int )
int isgraph(int )
int islower(int )
int isprint(int )
ctype.h
isgraph
islower
isprint
ispunct
ctype.h
( )
ctype.h
ctype.h
( )
int ispunct(int )
( , , , )
ctype.h
isspace
isupper
iswalnum
iswalpha
iswascii
iswcntrl
iswdigit
iswgraph
iswlower
iswprint
iswpunct
iswspace
iswupper
iswxdigit
isxdigit
toascii
tolower
263
/
int isspace(int c)
(, , )
int isupper(int )
int iswalnum(wint_t )
int iswalpha(wint_t )
int iswascii(wint_t )
ASCII
int iswcntrl(wint_t )
int iswdigit(wint_t )
int iswgraph(wint_t )
( )
int iswlower(wint_t )
ctype.h
int iswprint(wint_t )
( )
int iswpunct(wint_t )
( , , , )
int iswspace(wint_t )
(, , )
int iswupper(wint_t )
int iswxdigit(wint_t )
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
ctype.h
int isxdigit(int )
ctype.h
int toascii(int )
ASCII (
, 7 ) 0 127)
ctype.h
int tolower(int ch)
,
264
toupper
/
int toupper(int ch)
,
towlower
ctype.h
int towlower(wint_t ch)
,
ctype.h
int towupper(wint_t ch)
,
towupper
ctype.h
, ,
, . (. . 3.4.2.2 3.4.2.3): , . ,
Key = AnsiUpperCase(Key);
Key char .
3.4.2
3.4.2.1
/
mem.h
wmemcpv void * wmemcpy(void *dest, const void *src, size t n)
src dest; src dest (. memmove); dest
mem.h
wmemset void * wmemset(void *s, int , size t n)
n s ; s
memccpy
memchr
memcmp
mem.h
memcpv
mem.h
memicmp
mem.h
265
memmove
mem.h
mem.h
setmem
mem.h
, , , .
3.4.2.2
AnsiStr
Comp
/
int AnsiStrComp(char * SI, char * S2)
SysUtils.hpp
81 S2 ;
< 0 SI < S2, = 0 SI = S2, > 0 SI > S2
AnsiStr
IComp
AnsiStr
LComp
AnsiStrLI
Comp
SysUtils.hpp
SysUtils.hpp
AnsiStr
Lower
AnsiStr
Scan
SysUtils.hpp
SysUtils.hpp
266
AnsiStr
Upper
SysUtils.hpp
CharTo
Oem
OemBuff
Compare
Str
Compare
Text
LineStart
SysUtils.hpp
mbscpv
mbslwr
mbsncpv
mbsupr
Char
mbstring.h
mbstring.h
OemTo
CharBuff
StrAlloc
SysUtils.hpp
SysUtils.hpp
267
strcat
StrCat
strchr
strcmp
strcmpi
StrComp
StrCopv
strcpy
strcspn
strdup
StrECopy
StrEnd
strerror
/
char *strcat(char *dest, const char *src)
src dest;
char * StrCat(char * Dest, char * Source)
Source Dest;
char *strchr(const char * s, int )
C B S ,
NULL
int strcmp(const char *sl, const char *s2)
si s2; < 0 si < s2,
= 0 si = s2, > 0 si > s2
int strcmpi(const char *sl, const char *s2)
To , stricmp: si s2
( ); < 0
si < s2, = 0 si = s2, > 0 si > s2
int StrComp(char * Strl, char * Str2)
81 S2 ( AnsiStrComp);
< 0 SI < S2, = 0 SI = S2, > 0 SI > S2
char * StrCopy(char * Dest, char * Source)
Source Dest Dest
char *strcpy(char *dest, const char *src)
src dest; dest
size_t strcspn(const char *sl, const char *s2)
si, s2
char *strdup(const char *s)
s;
char * StrECopy(char * Dest, char * Source)
Source Dest
Dest
char * StrEnd(char * Str)
Str
char *strerror(int errnum)
errnum
string.h
SysUtils.
hpp
string.h
string.h
string.h
SysUtils.hpp
SysUtils.hpp
string.h
string.h
string.h
SysUtils.hpp
SysUtils.hpp
string.h
268
stricmp
StrlComp
StrLCat
StrLComp
StrLCopv
strlen
/
int stricmp(const char *sl, const char *s2)
To , strcmpi: si s2
( ); < 0
si < s2, = 0 si = s2, > 0 si > s2
int StrIComp(char * Strl, char * Str2)
81 S2 ( AnsiStrlComp);
< 0 SI < S2, = 0 SI = S2, > 0 SI > S2
char * StrLCat(char * Dest, char * Source,
Cardinal MaxLen)
MaxLen Source
Dest Dest
int StrLComp(char * Strl, char * Str2,
Cardinal MaxLen)
MaxLen 81 S2 (
AnsiStrLComp); < 0 SI < S2, = 0
SI = S2, > 0 SI > S2
char * StrLCopy(char * Dest, char * Source,
Cardinal MaxLen)
MaxLen Source Dest Dest
string.h
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
string.h
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
string.h
SysUtils.hpp
strncat
strncmp
269
string.h
string.h
stdio.h
SysUtils.hpp
string.h
string.h
string.h
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
string.h
270
strrev
StrRScan
StrScan
string.h
char *strrev(char *s)
() s
SysUtils.hpp
char * StrRScan(char * Str, char Chr)
Chr Str
NULL
char * StrScan(char * Str, char Chr)
SysUtils.hpp
Chr Str
NULL
strset
strspn
strstr
strtok
StrUpper
SysUtils.hpp
strupr
string.h
wcslwr
string.h
wcsupr
string.h
string.h
271
. strcat, . strcpy , ,
, . strstr . strcat,
strcpy, strstr strlen . 2, . 2.5.1.
strtok, .
si
, s2. , , .. si .
si.
strtok, NULL. si ( s2
), s2,
. , .
.
char s [ 8 0 ] , *;
= strtok(s, " , . ") ;
if (p) Memol->Lines->Add(p);
while(p)
{
p = strtok(NULL, " ,.;");
if (p) Memol->Lines->Add(p);
}
s : , , . Momol. ,
s ' " , .", Memol :
strtok ,
:
LineStart Buffer
BufPos "\". ,
, .
BufPos , 1 , .. "\" ,
Buffer. , "
char *Buf = " \ \ ",
* = StrEnd(Buf);
do
{
P=LineStart(Buf , P-l) ;
} w h i l e ( P != B u f ) ;
, , Buf.
272
3.4.2.3 AnsiString
AdjustLine
Breaks
SysUtils.hpp
System::AnsiString AdjustLineBreaks(
const System::AnsiString S)
S
CR/LF Unix
AnsiCompare
Sir
AnsiCompare
Text
SysUtils.hpp
int AnsiCompareText(
const System::AnsiString SI,
const System::AnsiString S2)
81 S2 ;
< 0 SI < S2, = 0 SI = S2, >
SI > S2
AnsiExtract
QuotedStr
System::AnsiString AnsiExtractQuotedStr(
SysUtils.hpp
char * &Src, char Quote)
Src ,
Quote,
AnsiLowerCase
System::AnsiString AnsiLowerCase(
const System::AnsiString S)
S,
( )
SysUtils.hpp
AnsiPos
SysUtils.hpp
AnsiQuotedStr
System::AnsiString AnsiQuotedStr(
SysUtils.hpp
const System::AnsiString S, char Quote)
S ,
Quote,
AnsiUpperCase
System::AnsiString AnsiUpperCase(
SysUtils.hpp
const System::AnsiString S)
S,
( )
IsDelimiter
bool IsDelimiter(
SysUtils.hpp
const System::AnsiString Delimiters,
const System::AnsiString S, int Index)
, Index S , Delimiters
273
SysUtils.hpp
LastDelimiter
int LastDelimiter(
SysUtils.hpp
const System::AnsiString Delimiters,
const System-AnsiString S)
S ,
Delimiters
LowerCase
System::AnsiString LowerCase(
const System::AnsiString S)
S,
( AnsiLowerCase)
QuotedStr
System::AnsiString QuotedStr(
SysUtils.hpp
const System::AnsiString S)
S
( AnsiQuotedStr)
StringReplace
System::AnsiString StringReplace(
SysUtils.hpp
const System::AnsiString S,
const System::AnsiString OldPattern,
const System::AnsiString NewPattern,
TReplaceFlags Flags)
S OldPattern NewPattern; Flags
Trim
System-AnsiString Trim(
SysUtils.hpp
const System::AnsiString S)
S
TrimLeft
System::AnsiString TrimLeft(
SysUtils.hpp
const System::AnsiString S)
S
TrimRight
System-AnsiString TrimRight(
const System::AnsiString S)
S
SysUtils.hpp
SysUtils.hpp
274
UpperCase
SysUtils.hpp
System::AnsiString UpperCase(
const Systeni::AnsiStrmg S)
S,
( AnsiTJpperCase)
WrapText
System::AnsiString WrapText(
SysUtils.hpp
const System::AnsiString Line,
const System::AnsiString BreakStr,
const TSysCharSet &BreakChars,
int MaxCol)
Line, MaxCol BreakStr BreakChars
, , . 3.1.6
AnsiString.
AnsiString.
, AnsiString, ,
. , -.
char *.
.
IsDelimiter IsPathDelimiter 1 ( C++Builder). 1 , 2 ..
IsDelimiter
- . ,
A n s i S t r i n g S, Delimiters;
Delimiters = " ' " ;
S =
f o r (int i = 1; i <= StrLen (S . c_str () ) ; 1++)
if (IsDelimiter (Delimiters, S, i) )
S .
Delimiters . . , :
A n s i S t r i n g S, Delimiters;
Delimiters = " 1 2 3 4 5 6 7 8 9 " ;
S =
for (int i = 1; i <= StrLen (S . c_str ( ) ) ; i++)
if (IsDelimiter (Delimiters, S, i) )
S[i] -= 1;
, 0, 1.
StringReplace S OldPattern
NewPattern. Flags rfReplaceAH,
OldPattern. Flags
rflgnoreCase, . ,
31 = StringReplace (S, O l d P a t t e r n , N e w P a t t e r n ,
TReplaceFlags ( ) rfReplaceAH) ;
275
S1 S OldPattern
NewPattern.
WrapText Line . , BreakStr. MaxCol .
BreakStr ,
BreakChars.
, MaxCol.
BreakChars ,
MaxCol. ,
TSysCharSet bchars;
bchars ' ' ' . ' ' , ' ' ; ' ' + ' '-';
AnsiString S, SI;
S =
SI = W r a p T e x t ( S , " V n \ r " , bchars, 10);
SI S, 10 ,
. S : " ,
+ -.", :
" "
" "
" "
" ,"
""
" "
"- "
" +"
" -."
, 11 , ,
.. .
,
. . .
3.5
3.5.1 ,
, dos.h:
FA_RDONLY
FA_HIDDEN
FA_SYSTEM
FAJLABEL
FA_DIREC
FA_ARCH
. 3.5.6.
(|).
276
( fcntl.h):
WRONLY
RDWR
, 0
RDONLY
CREAT
TRUNC
BINARY
TEXT
NOINHERIT
NDELAY
O_APPEND
0_CREA
O_EXCL
, UNIX
,
, ,
, mode, ,
O_CREA , ,
,
mode (
sys\stat.h):
S IWRITE
S IREAD
S_IREAD S_IWRITE
( share.h):
SH_COMPAT
SH_DENWR
SH_DENYNO
SH_DENYNONE
SH_DENYRD
SH_DENYRW
. (, SH_COMPAT | SH_DENWR).
,
,
(
SH_DENYNONE )
. , SH_COMPAT
,
277
(|).
SH_DENYRD, SH_DENYNO .
,
(
SysUtils.hpp):
fmOpenRead
$0000
$0001
fmOpenReadWrite
fmShareCompat
$0002
FCB
fmShareExclusive
$0010
fmOpen Write
$0000
$0030
fmShareDenyNone
$0040
C++ (stream),
.
C++Builder .
, ()
FILE, stdio.h, . (handle) ,
.
:
stdin
stdout
stderr
.
, ,
Windows.
3.5.2 ,
FILE
, FILE, .
278
_fdopen
_fileno
_flushall
/
stdio.h
FILE *_fdopen(int handle, char * mode)
handle,
mode,
FILE NULL
stdio.h
int _fileno(FILE *stream)
stream
stdio.h
int _flushall(void)
, ;
_fsopen
fclose
fflush
stdio.h
int fflush(FILE *stream)
stream,
; 0 EOF
FILE *fopen(const char *filename, const char *mode)
stdio.h
filename mode
FILE NULL
fopen
stdio.h
freopen
setbuf
int setvbuf (FILE *stream, char *buf, int type, size_t size) stdio.h
buf size stream
FILE *tmpfile(void)
stdio.h
FILE NULL
setvbuf
tmpfile
r+
+
w
W+
279
; ,
;
,
, , , .
. ,
fseek rewind, . 3.5.4. , :
() () fseek rewind
fseek rewind
_fsopen filename , shflag mode. , shflag, . . 3.5.1. mode
fopen.
DOS SHARE.EXE.
freopen stream
filename mode. fopen ,
stream . , ,
. ,
FILE *F = f r e o p e n ( " o u t p u t . t x t " , " w t " , s t d o u t ) ;
280
handle stream.
- - ,
FILE, _fileno.
"Test.txt" .
FILE *stream;
int handle;
stream = f o p e n ( " T e s t . t x t " , " w " ) ; //
handle = _ f i l e n o ( s t r e a m ) ;
//
fclose(stream);
//
, ..
, , .
, ,
fflush _flushall. , . ,
, .
.
.
setbuf setvbuf.
setbuf buf NULL,
. ,
, . buf
,
stream .
BUFSIZ, stdio.h. :
char outbuf[BUFSIZ];
setbuf(F, outbuf);
. ,
. , .
_IOLBF
_IONBF
281
. ,
, , . , .
/. buf size
.
setvbuf 0.
, fopen freopen, fclose. .
setbuf setvbuf buf NULL, .
tmpfile
(w+b) FILE. NULL.
, .
, FILE,
. . 2 . 2.10.2.
3.5.3 ,
.
/
int _creat(const char *path, int mode)
mode; 1
_rtl_close int _rtl_close(int handle)
handle
_rtl_creat int _rtl_creat(const char *path, int attrib)
path attrib; -1
io.h, dos.h
_creat
io.h,
sys\stat.h
io.h
io.h, dos.h
fcntl.h,
sys\stat.h,
share.h, io.h,
stdio.h
io.h
io.h, dos.h
282
/
creattemp int creattemp(char *path, int attrib)
attrib path
io.h, dos.h
dup
io.h
dup2
io.h
FileClose
SysUtils.hpp
SysUtils.hpp
FileOpen
lock
io.h
locking
io.h, sys\locking.h
setmode
umask
unlock
283
, _creat , .
, , mode, , sys\stat.h . 3.5.1.
.
-1, (. . 3.1.4.1) EACCES, ENOENT, EMFILE.
_creat _rtl_creat. _creat, attrib (|) : FA_RDONLY , FA_HIDDEN , FA_SYSTEM ( . . 3.5.1).
creatnew _rtl_creat , ,
-1 , .
_rtl_open filename
oflags. .
3.5.1.
. 1, (. . 3.1.4.1) EINVACC, EACCES, ENOENT, EMFILE.
_sopen path , access, shflag, mode. access _...
, . 3.5.1. O_CREA,
mode (. . 3.5.1).
shflag .
. 3.5.1.
. -1, (. . 3.1.4.1) EINVACC, EACCES, ENOENT, EMFILE.
creattemp attrib path. ,
_fmode (O_TEXT O_BINARY).
attrib
FA_HIDDEN, FA_RDONLY FA_SYSTEM (. . 3.5.1).
, HANDLE_MAX.
close, _rtl_close FileClose , creat, creatnew, creattemp, dup, dup2, open, _rtl_creat, _rtl_open, FileOpen.
Qrl-Z. , .
0. -1 (. . 3.1.4.1) EBADF.
, , , :
int hout = open("output.txt", OJ3REAT I 0_WRONLY,S_IWRITE);
close(hout);
,
int handle;
if ((handle = open ("Test.txt", 0_CREAT | 0_TEXT)) == -1)
{
ShowMessage(" ");
284
return;
close (handle) ;
, ( open -1) .
FileOpen, FileCreate FileClose , . FileOpen Mode, fmShare (. . 3.5.1).
FileRead,
FileWrite, FileSeek, . 3.5.4.
lock, unlock, locking. DOS SHARE.EXE.
locking cmd:
LK _LOCK
LK _RLCK
LK _NBLCK
LK _NBRLCK
LK _UNLCK
. , , , 10 .
, LK_LOCK.
. ,
.
, LK_NBLCK.
.
3.5.4 /
fgetchar
int fgetchar(void)
stdin
stdlo.h
285
stdio.h
int fputchar(int )
stdio.h
stdout, , fputc(c,
stdout); EOF
-"*"
cgets
conio.h
clearerr
stdio.h
cprintf
conio.h
cputs
conio.h
cscanf
eof
feof
stdio.h
ferror
stdio.h
fgetc
fgetpos
286
fgets
FileRead
FileSeek
FileWrite
fprintf
/
char *fgets(char *s, int n, FILE *stream)
s n stream
int FileRead(int Handle, void *Buffer, int Count)
Handle, FileOpen FileCreate, Count Buffer;
1
int FileSeek(int Handle, int Offset, int Origin)
Handle, FileOpen FileCreate,
Offset Origin; 0
stdio.h
SysUtils.hpp
SysUtils.hpp
fputc
stdio.h
fputs
stdio.h
fputwc
stdio.h
fputws
stdio.h
fread
fscanf
fseek
287
fsetpos
ftell
fwrite
getc
stdio.h
getch
int getch(void)
conio.h
getchar
int getchar(void)
stdin; , getc(stdin)
stdio.h
getche
int getche(void)
conio.h
getpass
conio.h
gets
stdio.h
kbhit
int kbhit(void)
conio.h
;
0
long lseek(int handle, long offset, int fromwhere)
io.h
handle
offset fromwhere; 0
Iseek
stdio.h
stdio.h
perror
printf
stdio.h
int printf(const char *format [, argument, ...])
stdout argument format (. . 3.1.2.1)
stdio.h
int putc(int , FILE *stream)
stream
putc
288
putch
int putch(int c)
conio.h
putchar
stdio.h
int putchar(int )
, stdout;
putc(c, stdout)
stdio.h
int puts(const char *s)
s stdout '
stdio.h
int _putws(const wchar_t *s)
s stdout
puts
_putws
puttext
conio.h
int puttext(int left, int top, int right, int bottom,
void *source)
source
left, top, right, bottom
putw
stdio.h
read
io.h
scanf
stdio.h
sprintf
sscanf
tell
ungetc
ungetch
289
vfprintf
vfscanf
vprintf
stdarg.h
vscanf
stdarg.h
vsprintf
vsscanf
write
io.h
scanf
printf .
printf, sprintf, vfprintf, vprintf, vsprintf . . 3.1.3.1. EOF .
fscanf, scanf, cscanf, sscanf, vfscanf, vscanf, vsscanf
. . 3.1.3.2.
getchar, _fgetchar, cgets, cprintf, _fputchar, putch, puttext, getch,
getche, cputs, getpass, cscanf, kbhit, ungetc, ungetch, vprintf, vscanf Win32.
Win32
scanf, gets stdin,
printf, putchar, puts stdout.
getchar, _fgetchar, getc, fgetc , .
getchar, _fgetchar, getc, gets, fgets, fgetc, fputc EOF.
290
SEEK_CUR
SEEK END
0 .
FileRead, File Write FileSeek ,
FileOpen FileCreate.
3.5.5
_mktemp
/
.
char *_mktemp(char *template)
dir.h
, template ,
ChangeFileExt System::AnsiString ChangeFiIeExt(
SysUtils.hpp
const System::AnsiString FileName,
const System::AnsiString Extension)
FileName
Extension;
291
ExpandFile
Name
ExpandUNC
FileName
ExtractFileDir
ExtractFile
Drive
ExtractFileExt
ExtractFile
Name
ExtractFile
Path
Extract
RelativePath
ExtractShort
PathName
MatchesMask
/
System: :AnsiString ExpandFileName(
const System::AnsiString FileName)
FileName,
;
System::AnsiString ExpandUNCFileName(
const System::AnsiString FileName)
FileName,
UNC:
"\\<servername>\<sharename>",
System::AnsiString ExtractFileDir(
const System::AnsiString FileName)
FileName
System::AnsiString ExtractFileDrive(
const System::AnsiString FileName)
FileName (,
":") UNC: "\\<servername>\<sharename>",
System::AnsiString ExtractFileExt(
const System::AnsiStrmg FileName)
FileName
System::AnsiString ExtractFileName(
const System::AnsiString FileName)
, FileName,
..
System::AnsiString ExtractFilePath(
const System::AnsiString FileName)
, FileName,
,
System::AnsiString ExtractRelativePath(
const System::AnsiString BaseName,
const System::AnsiString DestName)
DestName BaseName,
"..\"
System::AnsiString ExtractShortPathName(
const System::AnsiString FileName)
FileName, 8.3
bool MatchesMask(
const System::AnsiString Filename,
const System::AnsiString Mask)
Filename Mask
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
Masks.hpp
292
filectrl.hpp
MinimizeName System: :AnsiString MinimizcName(
const System:: AnsiString Filename,
Graphics: :TCanvas * Canvas, int MaxLen)
Filename,
,
Canvas MaxLen
ProcessPath
tmpnam
void ProcessPath(
filectrl.hpp
const System::AnsiString EditText,
char &Drive, System::AnsiString &DirPart,
System::AnsiString &FilePart)
EditText
Drive, DirPart FilePart
char *tmpnam(char *s)
stdio.h
,
ExtractFileDir ,
CreateDir, GetCurrentDir, RemoveDir, SetCurrentDir
(. . 3.5.6).
ExtractShortPathName FileName, 8.3. ,
:\Program Files\Borland\CBuilder\Bin\Bcb.exe
:\Progra~l\Borland\CBuilder\Bin\Bcb.exe
, : :
"test".
293
Labell :
:\...\Bcb.exe
tmpnam _mktemp ,
.
tmpnam _ = 65 535 . s NULL,
L_tmpnam ( stdio.h). NULL, tmpnam .
, tmpnam
_mktemp, . .
3.5.6
_getdcwd
_rmdir
_rtl_chmod
_unlink
io.h
io.h
io.h, dos.h
io.h
294
chdir
/
int chdir(const char *path)
path ; 0 -1
dir.h
chmod
io.h
int chmod(const char *path, int amode)
amode path; 0 1; amode
S_IWRITE S_IREAD
chsize
CreateDir
DeleteFile
Directory
Exists
DiskFree
DiskSize
FileAge
FileDateTo
DateTime
System::TDateTime FileDateToDateTime(
SysUtils.hpp
int FileDate)
TDateTime
FileDate, DOS
FileExists
FileGetAttr
FileGetDate
SysUtils.hpp
filelength
FileSearch
FileSetAttr
FileSetDate
FindClose
FindFirst
findfirst
wfindfirst
FindNext
findnext
wfindnext
/
long filelength(int handle)
handle; -1
System::AnsiString FileSearch(
const System:: AnsiString Name,
const System::AnsiString DirList)
DirList Name;
hit FileSetAttr(const System::AnsiString FileName,
int Attr)
FileName Attr; 0
int FileSetDate(int Handle, int Age)
Age
Handle; 0
void FindClose(TSearchRec &F)
FindFirst FindNext F
int FindFirst(const System::AnsiString Path,
int Attr, TSearchRec &F)
Path Attr; F; 0
int findfirst(const char FAR * path,
struct ffblk _FAR * ffblk, int
attrib)
path attrib; ffblk; 0 -1
int wfindfirst(const wchar t *pathname,
struct _wffblk *ffblk, int attrib)
pathname attrib; _wffblk; 0 -1
int FindNext(TSearchRec &F)
, FindFirst F; F; 0
int findnext(struct ffblk FAR *
ffblk)
, findfirst
ffblk; 0
-1
int wfindnext(struct wffblk *ffblk)
,
_wfindfirst ffblk; 0
-1
295
io.h
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
SysUtils.hpp
dir.h
dir.h
SysUtils.hpp
dir.h
dir.h
296
/
void fnmerge(char *path, const char *drive,
const char *dir, const char *name,
const char *ext)
path : drive, dir,
name ext
int fnsplit(const char *path, char *drive, char *dir,
char *name, char *ext)
path : drive, dir,
name ext
void ForceDirectories(System::AnsiString Dir)
Dir ,
fstat
sys\stat.h
getcurdir
GetCurrent
Dir
System::AnsiString GetCurrentDir()
getcwd
getdisk
int getdisk(void)
: 0 , 1 ..
dir.h
getftime
io.h
GetSystem
Directory
GetWindows
Directory
fnmerge
fnsplit
Force
Directories
dir.h
dir.h
FileCtrl.hpp
SysUtils.hpp
297
isatty
io.h
mkdir
remove
stdio.h
RemoveDir
SysUtils.hpp
rename
RenameFile
searchpath
SetCurrent
Dir
setdisk
setftime
stat
stdio.h
SysUtils.hpp
dir.h
SysUtils.hpp
298
st_mode
st rdev
st nlink
st size
st_atime
st mtimc
st_ctime
, st_dev
1
( Windows) ( DOS)
, st_atime
, st_atime
st_ipode
.
:
S_IFCHR
S_IFREG
:
S_IWRITE
S_IREAD
stat:
#include <stdio.h>
#include <time.h>
finclude <sys\stat.h>
s t r u c t stat s t a t b u f ;
FILE *stream;
if ( ( s t r e a m = fopen ("TEST.TXT", "r-t-t") ) == NOLL)
{
ShowMessage(" ");
return;
stat("TEST.TXT", sstatbuf);
fclose(stream);
//
// :
if ( s t a t b u f . s t _ m o d e & S_IFCHR)
Memol->Lines->Add(" ");
if ( s t a t b u f . s t _ m o d e & S_IFREG)
Memol->Lines->Add(" ");
if ( s t a t b u f . s t _ m o d e & S_IREAD)
Memol->Lines->Add(" ")
if ( s t a t b u f .st_mode & S_IWRITE)
Memol->Lines->Add(" " ) ;
299
Memol->Lines->Add(" " +
AnsiString((char)('A1+statbuf.st_dev)));
Memol->Lines->Add(" : " +
IntToStr(statbuf.st^size));
Memol->Lines->Add(" " +
AnsiString ( c t i m e ( S s t a t b u f . s t _ c t i m e ) ) ) ;
remo.ve _unlink . , .
. chmod
_rtl_chmod.
access _waccess , filename. ,
. , , , , .
amode , :
06
04
02
01
00
300
CreateDir ForceDirectori.es
Dir. ForceDirectories
, , , . ,
ForceDirectories ( " : \ \ T e s t \ \ T e s t l " ) ;
s : C:\WINDOWS\SYSTEM. , , , , .
FileGetAttr, FileSetAttr, _rtl_chmod (. . 3.5.1).
. FileGetAttr _rtl_chmod .
_rtl_chmod
(. . 3.5.1). func = 0
path, func = 1 path attrib.
, ,
SFile, :
rtl chmod(SFile, I, FA HIDDEN);
301
FileGetAttr _rtl_chmod .
,
SFile, :
int a t t r i b = _rtl_chmod(SFile, 0) ;
_rtl_chmod(SFile, 1, a t t r i b I FA_HIDDEN);
Memol SFile:
int a t t r i b = _rtl_chmod(SFile, 0) ;
if (attrib == -1)
{
Memol->Lines->Add(" " + IntToStr(errno));
return;
)
if ( a t t r i b & FA_RDONLY)
Memol->Lines->Add(SFile + " " ) ;
if ( a t t r i b & FA_HIDDEN)
Memol->Lines->Add(SFile + " " ) ;
if ( a t t r i b & FA__SYSTEM)
Memol->Lines->Add(SFile + " " ) ;
if ( a t t r i b & FA_DIREC)
Memol->Lines->Add(SFile + " " ) ;
if ( a t t r i b & FA^ARCH)
Memol->Lines->Add(SFile + " " ) ;
{
ft_tsec: 5;
ft m i n : 6;
f t _ h o u r : 5;
f t _ d a y : 5;
ft_month: 4;
f t _ y e a r t 7;
//
//
//
//
//
// 1980
"Test.txt",
1 ( , 1)
:
302
FILE *stream;
std::ftime ft;
char buffer[80] ;
if ((stream = fopen ("TEST.TXT", "r+t")) ==NULL)
(
ShowMessage(" ");
return;
}
getftime(fileno(stream), Sft);
//
sprintf(buffer, " : %u/%u/%u",
ft.ft_day, ft.ft_month, f t. f t__year+1980) ;
ShowMessage(buffer);
ft.ft day;
// setftTme(fileno(stream), &ft);
//
fclose(stream);
3.6
3.6.1
_c_exit
_cexit
_exit
abort
Abort
atexit
exit
/
void _c_exit(void)
, exit,
,
void _cexit(void)
, exit,
,
,
void _exit(int status)
,
exit ,
; status
void abort(void)
void Abort(void)
EAbort
int atexit(void (_USERENTRY * func)(void))
func;
0
void exit(int status)
, , , atexit ; status
process.h
process.h
stdlib.h
stdlib.h
SysUtils.hpp
stdlib.h
stdlib.h
303
raise
int raise(int sig)
signal.h
sig; 0
void ( USERENTRY *signal(
signal
signal.h
int sig, void (_USERENTRY *func)
(int sig[, int subcode])))(int)
func sig
32 .
,
, ..
.
exit . exit. , , , ,
atexit . status exit
.
,
exit, .
exit
exit
_cexit
_c_exit
304
3.6.2
winbase.h
fastcall CreateProcess(
CreateProcess bool
const char * IpAppIicationName,
char * IpCommandLine,
SECURITY ATTRIBUTES * IpProcessAttributes,
_SECURITY_ATTRIBUTES * IpThreadAttributes,
bool blnheritHandles,
unsigned long dwCreationFlags,
void * IpEnvironment,
const char * IpCurrentDirectory,
STARTUPINFO * IpStartupInfo,
PROCESS_INFORMATION * IpProcessInformation)
cwait
process.h
int cwait(int *statloc, int pid, int action);
, statloc , ID -1
excel
excel e
execlp
execv
execve
process.h
execvp
process.h
execvpe
process.h
305
Find
Executable
ShellExecute
spawnl
spawnle
spawnlo
spawnlpe
spawnv
spawnve
process.h,
int spawnve(int mode, char *path, char *argv[],
char *envp[])
stdio.h
mode path
argv[] envp
spawn vp
process.h,
stdio.h
spawn vpe
process.h,
stdio.h
process.h,
stdio.h
process.h,
stdio.h
process.h,
stdio.h
306
system
wsvstem
wait
WinExec
.
/
stdlib.h
int system(const char *command)
command
stdlib.h
int _wsystem(const wchar_t *command)
command
process.h
int wait(int *statloc)
, statloc , ID
-1
winbase.h
UINT WinExec( LPCSTR IpCmdLine,
UINT uCmdShow)
3.6.3
. 3.6.2 API Windows CreateProcess. FindExecutable. ShellExecute. WinExec
, 32, . ( Windows 95, 98, 2000 NT
):
,
.
ERROR FILE
NOT_FOUND
ERROR PATH
NOT_FOUND
SE_ERR_ACCESSDENIED
6
8
SE_ERR_OOM
10
11
12
, .
ERROR_BAD_FORMAT
.
Windows.
.
Windows, . .
.
307
13
MS-DOS 4.0.
14
15
,
Windows.
16
,
,
.
19
. ,
.
20
DLL, .
21
32- Windows.
26
SE_ERR_SHARE
27
SE ERR
ASSOCINCOMPLETE
, .
28
SE_ERR_DDETIMEOUT
DDE - .
29
SE ERR DDEFAIL
DDE
30
SE_ERR_DDEBUSY
DDE ,
DDE.
31
SE_ERR_NOASSOC
,
, , .
32
SE_ERR_DLLNOTFOUND
DLL.
3.7
3.7.1
_msize
malloc.h
new.h
308
alloca
malloc.h
AllocMem
SysUtils.hpp
void * AllocMem(Cardinal Size)
Size (void *)
;
calloc
free
GetMemory
Manager
stdlib.h
malloc
stdlib.h
alloc.h
realloc
stdlib.h
set new
handler
SetMemory
Manager
void SetMemoryManager(
System.hpp
const TMemoryManager &MemMgr)
MemMgr
,
SysFreeMem
System.hpp
ShareMem.hpp
SysGetMem
309
SysRealloc
Mem
THeapStatus
,
System.hpp ShareMem.hpp, System.hpp ,
, ShareMem.hpp
, , .
heap. : malloc, calloc,
realloc, free new delete (. . 1, . 1.11).
THeapStatus
THeapStatus, :
TotalAddrSpace
,
. .
TotalUncommitted TotalAddrSpace, .
TotalCommitted
TotalAddrSpace,
. TotalUncommitted + TotalCommitted = TotalAddrSpace.
TotalAHocated
.
, .
, OS . TotalAddrSpace.
TotalFree
FreeSmall
FreeBig
,
.
,
.
.
310
Unused
Overhead
HeapErrorCode
,
. : Unused + FreeBig
+ FreeSmall = TotalFree.
, .
.
GetMem
311
Buttonl Labell
.
3.7.2
CreateMessage
Dialog
Forms::TForm* CreateMessageDialog(
Dialogs.hpp
const AnsiString Msg,
TMsgDlgType DlgType,
TMsgDlgButtons Buttons)
( )
DlgType, Buttons, -
Msg
312
InnutBox
InputQuerv
LoginDialog
DBLogDlg.hpp
bool LoginDialog(
constAnsiString ADatabaseName,
AnsiString &AUserName,
AnsiString &APassword)
Windows (), .
ADatabaseName ,
,
AUserName , , APassword ,
313
ShowMessage
Fmt
ShowMessage
Fmt
. MessageBox
Application, , ,
.
LoginDialog LoginDialogEx Windows,
. ADatabaseName , , . AUserName -- ,
. LoginDialog
,
User Name. AUserName , , , .
APassword , ,
.
LoginDialog true, ,
.
, ,
. , false.
, LoginDialog, , User Name. Login-
314
3.7.3
315
, , .
MessageBeep . , ,
[sounds] .
MessageBeep . :
OxFFFFFFFF
MB_ICONASTERISK
MB_ICONEXCLAMATION
MBJCONHAND
MB_ICONQUESTION
MB_OK
(true).
,
GetLastError.
MessageBeep .
MessageBeep , .
, .
PlaySound API Windows
, , .
pszSound
. fdwSound
(SND_FILENAME, SND_ALIAS SND^RESOURCE) pszSound , . ,
Windows WIN.INI . , . , pszSound
.
, pszSound, . PlaySound : , Windows, Windows, , PATH, , .
OpenFile.
, PlaySound . , , false.
pszSound 0, . ,
, SND_PURGE fdwSound.
hmod fdwSound
SND_RESOURCE. hmod -
316
, , . hmod 0.
fdwSound . "|".
:
pszSound
Windows WIN.INI.
SND FILENAME
SND RESOURCE.
szSound SND_ALIAS_ID
.
SND_APPLICATION .
PlaySoSND_ASYNC
und .
, PlaySound
pszSound, 0.
pszSound .
SND FILENAME
,
SND_LOOP
PlaySound pszSound, 0.
SND_ASYNC .
.
SND_MEMORY
pszSound
.
, . SND_NODEFAULT
, PlaySound , .
, SND_NOSTOP
, , , PlaySound false,
. , PlaySound , .
, SND_NOWAIT
.
, SND_PURGE
. pszSound 0, .
pszSound '0, , . SND_RESOURCE.
pszSound .
SND_RESOUECE
hmod .
SND_SYNC
.
PlaySound .
SND_ALIAS
317
PlaySound true,
false.
ARRAYSIZE
sysdefs.h
bsearch
EXISTING
ARRAY
sysdefs.h
getenv
stdlib.h
Ifind
Isearch
318
sysdefs.h
System.hpp
System.hpp
stdlib.h
stdlib.h
Menus.hpp
Menus.hpp
stdlib.h
Menus.hpp
stdarg.h
stdarg.h
va start
319
<0
== 0
>0
320
GetShortHint GetLongHint
< > | < >
, , Hint.
getenv putenv .
name=string\0. getenv
name. getenv ,
, . ,
Labell PATH.
DOS OS/2 . , .
321
,
NULL. getenv name "name=", name . ,
getenv("PATH=");
PATH.
putenv . name " name=string". :
putenv("=:\\temp");
Ctrl-O.
MOpen->ShortCut = S h o r t c u t ( ' 1 , T S h i f t S t a t e ( ) < < s s C t r l s s A l t ) ;
Ctrl-Alt-O.
. , Open. ShortCutToText , . TextToShortCut
. , , Ctrl-O
" ", "Ctrl+0".
void
f a s t c a l l T F o r m l : : B u t t o n l C l i c k ( T O b j e c t *Sender)
{
Editl->Text = ShortCutToText (MOpen->ShortCut);
}
//
void
f a s t c a l l T F o r m l : : B u t t o n 2 C l i c k ( T O b j e c t *Sender)
{
MOpen->ShortCut = TextToShortCut(Editl->Text);
}
ParamStr ParamCount .
ParamStr Index.
. ,
ParamStr(O) , , "D:\\TEST\\PROJECT1.EXE", ..
, .
. , - , ,
.
- , -
322
ParamStr(l), ParamStr(2) .. ,
. .
ParamCount , .
. ,
for
(int i=l;i<=ParamCount ( ) ;i
if (LowerCase (ParamStr ( i ) ) == "-e")
( ),
" " " ".
, CmdLine (char *).
,
. CmdLine,
, , . . 1, . 1.2.2.
CloseWindow
Destroy Window
Enable Window
FindWindow
GetLastError
DWORD GetLastError(VOID)
323
3.8 Windows
Windows . 1, . 1.14. , . 1.
PostMessage
winuser.h
RegisterWindow UINT RegisterWindowMessage(
LPCTSTR IpString)
Message
,
SendMessage PostMessage
SendMessage
. 3 , C++, C++Builder API
Windows. ( 300),
.
. ,
,
, C++, ++ilder API Windows. ,
[2].
. ,
TDateTime. ,
. , .
abort
abort , .
3.
abort , , raise(SIGABRT), SIGABRT (. . signal raise
, . 1, . 1.13.
, abort stderr (. . 2.10.2.4)
Abnormal program termination
exit 3.
Abort
EAbort
SysUtils.hpp
f a s t c a l l Abort ( v o i d ) ;
Abort
(, ) .
EAbort,
, .
Abort ,
try ...
finally.
, . ,
-
326
abs
math.h, stdlib.h
tinclude <stdlib.h>
int abs (int x ) ;
long labs(long int x) ;
tinclude <math.h>
double fabs(double x);
long double fabsl(long double x);
.
fabs fabsl . abs labs . abs
, stdlib.h, . abs,
#include <stdlib.h>
#undef
abs
abs 0 INT_MAX (
limit.h).
AnsiCompareStr
SysUtils.hpp
327
( ) Editl Edit2.
if (AnsiCompareStr (Editl->Text, Edit2->Text) < 0)
else if (AnsiCompareStr (Editl->Text, Edit2->Text) == 0)
else . . .
AnsiCompareText.
S1 S2
Editl->Text
Edit2->Text
AnsiCompareStr
AnsiCompareText
<0
<0
>0
Edit
edit
>0
<0
<0
AnsiCompareText
.
. . AnsiCompareStr .
AnsiLowerCase
.
SysUtils.hpp, string.h, mbstring.h
fastcall
AnsiLowerCase (const AnsiString S) ;
extern PACKAGE char *
fastcall
AnsiStrLower (char * Str);
extern PACKAGE AnsiString
fastcall
Lowercase(const AnsiString S);
extern PACKAGE char *
fastcall StrLower (char * Str);
char *strlwr(char *s);
wchar t * wcslwr(wchar_t *s);
unsigned char *_mbslwr(unsigned char *s) ;
Str s (char *) S
AnsiString, . StrLower, LowerCase, strlwr, _wcslwr, _mbslwr -
328
.
AnsiStrLower AnsiLowerCase. AnsiLowerCase
.
VCL AnsiLowerCase LowerCase, AnsiString.
AnsiLowerCase(Edit I ->Text)
LowerCase(Editl->Text)
hi! !
hi! !
AnsiStrLower((Editl->Text).c_str())
hi! !
StrLower((Editl->Text).c_str())
hi! !
- , , , Edit2, , Editl. , .
329
AnsiPos. , ,
, AnsiLowerCase :
if
(AnsiPos(AnsiLowerCase(Edit2->Text),
A n s i L o w e r C a s e ( E d i t l - > T e x t ) ) > 0)
AnsiUpperCase :
if
(AnsiPos(AnsiUpperCase(Edit2->Text),
AnsiUpperCase(Editl->Text)) > 0)
(AnsiStrPos(AnsiLowerCase(Editl-XText).c_str(),
A n s i L o w e r C a s e ( E d i t 2 - > T e x t ) . c _ s t r ( ) ) != NULL)
. ,
AnsiStrPos StrPos, AnsiPos, , .
Labell Editl, Edit2:
Labell->Caption =
AnsiStrPos(AnsistrLower((Editl->Text).c_str()),
AnsiStrLower((Edit2->Text).c_str()));
, .
AnsiStrLower AnsiStrUp AnsiLowerCase. LowerCase. StrLower. AnsiUpperCase. UpperCase. StrUpper. ,
.
AnsiStrComp
.
SysUtils.hpp
f a s t c a l l A n s i S t r C o m p ( c h a r * SI,
char * 3 2 ) ;
330
AnsiStrlComp
.
SysUtils.hpp
f a s t c a l l A n s i S t r l C o m p ( c h a r * SI, char * S 2 ) ;
( ) Editl Edit2.
String
String
switch
{
case
SI = Editl->Text;
S2 = Edit2->Text;
(AnsiStrlComp(SI.c_str(),
S2.c_str()))
-1: . . . ;
break;
case 0 : . . . ;
break;
case 1 :
, S1 S2 switch :
switch
(AnsiStrlComp((Editl->Text).c_str(),
(Edit2->Text).c_str()})
S1 S2
S1
S2
" 1"
" 2"
-1
"
""
+1
" 1"
" 1"
""
""
-1
331
AnsiStrLower
.
. . AnsiLowerCase .
AnsiStrPos
.
. . AnsiPos .
AnsiStrUpper
.
. . AnsiUpperCase .
AnsiToOem DOS
, 16- MS-DOS. , CharToOem.
(. . CharToOem
DOS).
AnsiUpperCase
.
SysUtils.hpp, string.h, mbstring.h.
e x t e r n PACKAGE char *
fastcall AnsiStrUpper(char * Str);
e x t e r n PACKAGE A n s i S t r i n g
fastcall
AnsiUpperCase(const AnsiString S);
extern PACKAGE char *
fastcall StrUpper(char * Str);
extern PACKAGE A n s i S t r i n g
fastcall
Uppercase(const AnsiString S ) ;
char * s t r u p r ( c h a r * s ) ;
wchar_t *_wcsupr(wchar_t * s ) ;
3(32
AnsiUpperCase(Editl->Text)
UpperCase(Editl->Text)
AnsiStrUpper((Editl->Text).c_str())
HI! !
StrUpper((Editl->Text).c_str()>
HI! !
HI! !
HI! !
#include <assert.h>
void a s s e r t ( i n t test);
assert abort.
tinclude <assert.h>
#define NDEBUG
assert . , - , ,
.
, , , -
NULL.
:
a s s e r t ( == N U L L ) ;
NULL,
, , .
Bounds
TRect.
Types.hpp, Classes.hpp.
#include <Types.hpp>
struct TRect
{
int l e f t , top, right, bottom;
333
struct TPoint
(
int x;
int y;
);
extern PACKAGE Types::TRect
fastcall
Bounds(int ALeft, int ATop, int AWidth, int AHeight);
tinclude <Classes.hpp>
extern PACKAGE TRect
fastcall
Rect(int ALeft, int ATop, int ARight, int ABottom);
. extern PACKAGE TRect
fastcall
Rect (const TPoint ATopLeft, const TPoint ABottomRight) ;
Memol
Panel 1, , 10 ( ), 40 (, ):
Memol->BoundsRect = R e c t ( 1 0 , 4 0 , P a n e l l - > C l i e n t W i d t h - 1 0 ,
Panell->ClientHeight-10);
To :
Memol->BoundsRect = B o u n d s ( 1 0 , 4 0 , P a n e l l - > C l i e n t W i d t h - 2 0 ,
Panell->ClientHeight-50);
, Rect Point.
TRect TPoint:
TRect R, R l , R3;
R = Rect(10,100,20,200);
Rl = R;
334
calloc
.
. . malloc . .
ceil
.
. . Ceil .
Ceil
.
math.fi math.hpp.
#include <math.h>
double ceil(double x) ;
double floor(double x);
long double ceill (long double x);
long double floorl(long double x);
ttinclude <math.hpp>
extern PACKAGE int
extern PACKAGE int
X = 3.5
ceil, ceill, Ceil
4
floor, floorl, Floor 3
X = -3.5
X=3
-3
-4
ceill
.
. . Ceil .
cgets
.
. . fputs / .
335
#include <systera.hpp>
BOOL CharToOem(
LPCTSTR IpszSrc,
LPSTR -IpszDst
);
BOOL CharToOemBuff(
LPCTSTR IpszSrc,
LPSTR IpszDst,
DWORD cchDstLength
);
//
//
//
//
//
ASCII (
) MS-DOS. , , . ,
DOS.
IpszSrc , . IpszDst ,
. cchDstLength CharToOemBuff , .
, .
, ANSI Unix. , ANSI, , .. IpszSrc IpszDst .
.
OemToChar. .
,
DOS.
CharToOem.
tinclude <stdio.h>
#include <system.hpp>
int main()
{
char SI[20], S2[20];
CharToOem(" :\", SI);
printf(SI);
scanf ("%20s", S2);
CharToOem(", ", SI);
printf(strcat(strcat(SI, 32) , "! ! !\n"));
// DOS
fflush(stdin) ;
getchar () ;
return 0;
}
, RichEditl DOS
, .
336
#include <stdio.h>
if (SaveDialogl->Execute() )
{
char *S = (char *) malloc(sizeof(RichEditl->Text)+1);
CharToOem((RichEditl->Text) .c_str(), S) ;
FILE *F;
F = fopen((SaveDialogl->FileName).c_str(), "wt");
fprintf(F,"%s", S);
fclose (F);
free (S) ;
}
if .
, S, RichEditl.
.
, .
.
_clear87 FPU
FPU.
float.h.
(void);
(void);
IE
DE
ZE
UE
SF
ES
0 (CF)
2 (PF)
10
ST
11-13
3 (ZF)
14
BF
FPU
15
337
. ,
, ZE
1, .
_!87 _clearfp.
. _clearfp Microsoft.
, .
.
,
controls?. , :
_contro!87(Ox3F, O x 3 F ) ;
, . ,
if ( c l e a r 8 7 ( ) & 0 x 4 ) ShowMessage(" " ) ;
.
if (_clear87() & 0x30)
ShowMessage(" " ) ;
_clearfp FPU
FPU.
. . _clear87 FPU.
CompareDate
.
Datelltils.hpp.
tinclude <DateUtils.hpp>
typedef int TValueRelationship;
extern PACKAGE Types::TValueRelationship
fastcall
CompareDate(const System::TDateTime A,
const System::TDateTime B) ;
extern PACKAGE Types::TValueRelationship
fastcall
CompareDateTime(const System::TDateTime A,
const System::TDateTime B) ;
extern PACKAGE Types::TValueRelationship
fastcall
CompareTime(const System::TDateTime A,
const System::TDateTime B);
338
. CompareTime , .
, , . , , , > ,
, .
:
LessThanValue
EqualsValue
GreaterThan Value
-1
0
+1
A <B
A=
A>
CompareDateTime
.
. . CompareDate .
CompareText
.
SysUtils.hpp.
f a s t c a l l C o m p a r e T e x t ( c o n s t A n s i S t r i n g SI,
const A n s i S t r i n g S 2 ) ;
SI S2 AnsiString. . .
> 0, SI = S2. 0.
,
CompareText(Editl->Text, Edit2->Text)
0, Editl Edit2
. , "Edit" "edit".
.
(, "" ""),
, .. .
AnsiStrComp.
CompareTime
.
. . CompareDate .
Compare Value
.
Math.hpp.
typedef
int
TValueRelationship;
extern PACKAGE T V a l u e R e l a t i o n s h i p
fastcall
CompareValue(const int A, const i n t ' B ) ;
extern PACKAGE T V a l u e R e l a t i o n s h i p
fastcall
CompareValue(const
int64 A, const
int64 B ) ;
339
CompareValue . :
-1
LessThanValue
<
EqualsValue
+1
GreaterThanValue
>
Epsilon
, . .
SameValue
Epsilon. true,
Epsilon. ,
Epsilon = 0, . ,
. Epsilon.
_contro!87 FPU
FPU.
float.h, System.hpp.
unsigned int m a s k ) ;
unsigned int m a s k ) ;
#include <System.hpp>
extern PACKAGE Word ^ f a s t c a l l Get8087CW (void) ;
extern PACKAGE void
fastcall Set8087CW(Word NewCW);
340
FPU (. . 1.9.3),
, .
,
- . , ,
. , OpenGL .
_contro!87 _controlfp newcw FPU. mask , , newcw . , mask
1. ,
_contro!87(0x4, 0 x 4 )
, 0100. , ( ) , .
_contro!87 ( 0 x 4 , Ox3F)
( 00111111, 00000100) 3-
0 6- , . .
.
, . ,
u n s i g n e d int m = _ c o n t r o ! 8 7 ( 0 , 0 ) ;
m ,
.
_controlfp Microsoft.
_controI87 , DM, .
Get8087CW .
Set8087CW NewCW.
_controlfp, _contro!87, Set8087CW
DefauIt8087CW. FPU.
. GetExceptionMask. SetExceptionMask. GetPrecisionMode. SetPrecisionMode. GetRoundMode. SetRoundMode.
-
, , :
//
unsigned int m = _ c o n t r o ! 8 7 ( 0 , 0 ) ;
_ c o n t r o ! 8 7 ( 0 x 4 , 0 x 4 ) ; //
<, >
controls?(m,
OxFFFF);
//
341
m
_contro!87 . . .
, Get8087CW
Set8087CW:
Word 01d8087CW;
01d8087CW = G e t 8 0 8 7 C W ( ) ; //
Set8087CW(Oxl33f);
//
<, >
Set8087CW(01d8087CW);
//
.
, . 1
ZM (. . 1.9.3), . ,
- ,
. 1 ( ), IM,
. .
:
Set8087CW(Get8087CW()
| OxD);
, Get8087CW. ZM
1, .
Set8087CW(Get8087CW | 5 ) ;
1 ZM IM.
. 1.9.3, . 1 , FPU.
_controlfp FPU
FPU.
. . _contro!87 FPU.
cprintf
.
. . fprintf .
cputs
.
. . fputs / .
CreateMessageDialog
, .
. . MessageDlg .
CreateProcess
API Windows, .
342
bool
fastcall CreateProcess(
const char * IpApplicationName,
char * IpCommandLine,
_SECURITY_ATTRIBUTES * IpProcessAttributes,
_SECURITY_ATTRIBUTES * IpThreadAttribUtes,
bool blnheritHandles,
unsigned long dwCreationFlags,
void * IpEnvironment,
const char * IpCurrentDirectory,
STARTUPINFO * IpStartupInfo,
PROCESS__INFORMATION * IpProcessInforraation
);
343
, .
ExitProcess.
.
.
IpApplicationName
IpCommandLine
IpProcess Attributes ,
IpThreadAttributes
blnheritHandles
dwCreationFlags
IpEnvironment
,
: , (
).
IpApplicationName = NULL, IpCommandLine ( . ).
,
. IpCommandLine = NULL,
IpApplicationName ( . ).
PSequrityAttributes,
. NULL, .
,
. true
, .
dwCreationFlags, .
. NULL, . :
<>=< >
,
. UNICODE
ANSI (. dwCreationFlags). ANSI (
, ). UNICODE .
,
IpCurrentDirectory
. , .
NULL, .
STARTUPINFO IpStartupInfo
TStartupInfo,
.
IpProcessInformation PROCESS_INFORMATION
TProcessInformation,
.
344
.
SetErrorMode. .
.
DETACHED PROCESS.
CREATE_NEW_PROCESS
GROUP "
: ,
.
,
IpProcessInf filiation. GenerateConsoleCtrlEvent
Ctrl-C Ctrl-Break .
CREATE_SEPARATE
WOW VDM
Windows NT
16- .
VDM.
.
CREATE_SHARED
WOW VDM
Windows NT
16- . DefaultSeparateVDM Windows WIN.INI
true,
VDM.
CREATE SUSPENDED
() ,
ResumeThread.
CREATE_UNICODE
ENVIRONMENT
,
IpEnvironment,
Unicode. ANSI.
DEBUG PROCESS
.
.
WaitForDebugEvent
, CreateProcess.
345
, , .
DETACHED_PROCESS
. AllocConsole
. CREATE_NEW_CONSOLE.
dwCreationFlags . ,
NORMAL_PRIORITY_CLASS, IDLE_PRIORITY_CLASS. IDLE_PRIORITY_CLASS.
:
HIGH_PRIORITY_CLASS
, .
IDLE_PRIORITY_CLAS S
. .
.
NORMAL PRIORITY
CLASS
REALTIME PRIORITY
CLASS
,
,
.
346
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFOA, *LPSTARTUPINFOA;
:
Cb
IpReserved
. NULL.
IpDesktop
Windows NT.
desktop, desktop
.
IpTitle
.
GUI , , NULL.
dwX, dwY
, dwFlags
STARTF_USEPOSITION.
STARTF_USEPOSITION
.
dwXSize,
dwYSize
, dwFlags
STARTF_USESIZE.
STARTF_USESIZE .
dwXCountChars, , dwFlags
dwYCountChars STARTF_USECOUNTCHARS.
STARTF_USECOUNTCHARS , , .
.
dwFillAttribute
, dwFlags
STARTF_USEFILLATTRIBUTE.
STARTF_USEFILLATTRIBUTE
, , . : FOREGROUND_BLUE,
FOREGROUND_GREEN, FOREGROUND_RED,
FOREGROUND_INTENSITY, BACKGROUND_BLUE,
BACKGROUND_GREEN, BACKGROUND_RED,
BACKGROUND_INTENSITY. , :
FOREGROUND_RED BACKGROUND_RED |
BACKGROUND GREEN BACKGROUND BLUE.
dwFlags
wShowWindow
cbReserved2
lpReserved2
hStdlnput
hStdOutput
hStdError
347
, ,
.
:
STARTF_USESHOWWINDOW
wShow Window
STARTF_USEPOSITION dwX dwY
STARTF_USESIZE dwXSize dwYSize
STARTF_USECOUNTCHARS dwXCountChars dwYCoimtChars
STARTF_USEFILLATTRIBUTE dwFillAttribute
STARTF_FORCEONFEEDBACK ,
2 CreateProcess. GUI, 5
. ,
5 . GetMessage
STARTF_FORCEOFFFEEDBACK
STARTF_USESTDHANDLES
, ,
hStdlnput, hStdOutput, hStdError
, dwFlags
STARTF_USESHOWWINDOW.
SW , WINUSER.H. , SW_SHOWNORMAL , SWJHIDE .
, 0.
, NULL.
, dwFlags
STARTF_USESTDHANDLES. .
, dwFlags
STARTF_USESTDHANDLES. .
, dwFlags
STARTF_USESTDHANDLES. .
cb . , .
IpProcessInformation TProcessInformation,
PROCESS_INFORMATION API Windows.
.
348
4
:
typedef struct __PROCESS_INFORMATION {
HANDLE hProcess;
HANDLE hThread;
DWORD dwProcessId;
DWORD dwThreadld;
} PROCESS_INFORMATION, *PPROCESS_INFORMATION,
*LPPROCESS_INFORMATION;
:
.
, .
() hThread
. , .
dwProcessId . .
dwThreadld . .
hProcess
CreateProcess
, :
STARTUPINFO Startlnfo = { sizeof (TStartupInfo) };
PROCESS_INFORMATION Proclnfo;
LPCTSTR s;
Startlnfo.cb = sizeof (Startlnfo);
Startlnfo.dwFlags = STARTF_USESHOWWINDOW;
Startlnfo.wShowWindow = SW_SHOWNORMAL;
if (! CreateProcess(NULL, "arj a all *.*",
NULL, NULL, false,
CREATE^NEW^CONSOLE |
HIGH__PRIORITY_CLASS,
NULL, NULL, SStartlnfo, SProcInfo))
ShowMessage(" " + IntToStr(GetLastError()));
else
{
if (WaitForSingleObject(Proclnfo.hProcess, 10000)
== WAIT^TIMEOUT)
ShowMessage(" 10 . ");
CloseHandle(Proclnfo.hProcess);
_crotl
.
. . _rotl .
_crotr
.
. . _rotl .
349
cscanf
( ).
. . scanf .
cwait
.
process.fi.
#include <process.h>
int c w a i t ( i n t *statloc, int pid,
int w a i t ( i n t * s t a t l o c ) ;
int a c t i o n ) ;
8-15
.
, exit return main.
main return,
:
0-7
1
2
3
8-15
wait . -1,
EINTR , ECHILD .
cwait wait, .
statloc, , : pid action. pid 0, , . pid . .
action : WAIT_CHILD , WAIT_GRANDCHILD ,
, .
350
. spawn....
Date
.
SysUtils.hpp, DateUtils.hpp.
#include <SysUtils.hpp>
extern PACKAGE S y s t e m : : T D a t e T i m e
extern PACKAGE S y s t e m : : T D a t e T i m e
extern PACKAGE System::TDateTime
extern PACKAGE bool
fastcall
fastcall Date(void);
fastoall Now(void);
fastcall Time(void);
IsToday(const System::TDateTime A V a l u e ) ;
#include <DateUtils.hpp>
extern PACKAGE S y s t e m : : T D a t e T i m e
extern PACKAGE System::TDateTime
extern PACKAGE S y s t e m : : T D a t e T i m e
fastcall Today(void);
f a s t c a l l Tomorrow'(void);
fastcall Yesterday(void);
Date Today
TDateTime. , , 0. Time , , , 0. Now , Date Time.
Tomorrow Yesterday
, . IsToday ,
AValue .
, ,
DateToStr. TimeToStr. DateTimeToStr. DateTimeToString
. DecodeDate . , , , ..
Editl->Text = D a t e T i m e T o S t r ( N o w ( ) ) ;
Editl "25.05.2002 14:35:49".
351
Editl->Text = DateTimeToStr(Date());
Editl "25.05.2002".
DateTimeToStr
.
. . DateToStr
.
DateTimeToString
.
SysUtils.hpp.
: 1-31.
dd
, : 01-31.
ddd
, ShortDayNames.
Windows : "", "", "", "",
"", " ", "".
352
, dddd
LongDayNames: ""
"".
, ddddd
ShortDateFormat: ". . " ( ).
, dddddd
LongDateFormat: , , ( ".").
: 1-12.
m h
hh, , : 0-59.
mm
: 01-12. m h hh, , : 00-59.
,
mmm
ShortMonthNames: ""
"".
, mnimm
LongMonth Names: ""
"".
'
:
00-99.
: 0000-9999.
: 0-23.
h
hh
n
nn
s
ss
z
zzz
t
tt
am/pm
a/p
: 00-23.
: 0-59.
: 00-59.
: 0-59.
: 00-59.
: 0-999.
:
000-999.
, ShortTimeFormat (":").
, LongTimeFormat ("::").
12-
"am" "". , .
12- "" "". , .
353
a in pin
, DateSeparator ( "/")
, TimeSeparator (":").
''/""
, ,
, , .
. Format , ,
"".
, .
27.09.00 21:00:11
27.09.00 21:00:11
27.09.00 21:00:11
d mmmm yyy
27 2000
dddddd
27 2000 .
h . m .
21 . 0 .
Editl , .
A n s i S t r i n g S;
DateTimeToString(S, " d mmmm yyy ", N o w ( ) ) ;
" 25 2002 ".
DateToStr
.
SysUtils.hpp.
354
4
extern PACKAGE AnsiString
fastcall
TimeToStr(const System::TDateTime DateTime);
DayOf
.
DateUtils.hpp.
#include <DateUtils.hpp>
extern PACKAGE Word
fastcall
DayOf (const System::TDateTime AValue);
extern PACKAGE Word
fastcall
DayOfTheMonth(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
HourOf(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
HourOfTheDay(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
MilliSecondOf(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
MilliSecondOfTheSecond(constTDateTime AValue);
extern PACKAGE Word
fastcall
MinuteOf(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
MinuteOfTheHour(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
MonthOf(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
MonthOfTheYear(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
SecondOf(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
SecondOfTheMinute(const System::TDateTime AValue);
extern PACKAGE Word
fastcall
YearOf (const System::TDateTime AValue);
355
.
DayOfTheMonth, , , DayOfTheWeek, .
.
. DecodeDate DecodeTime.
, , , .
tinclude <DateUtil.s.hpp>
extern PACKAGE Word
fastcall
DayOfTheWeek(const System::TDateTime AValue);
tinclude <SysUtils.hpp>
extern PACKAGE Word
fastcall
DayOfWeek(const System::TDateTime DateTime);
#include <DateUtils.hpp>
extern PACKAGE int
fastcall
DaysBetween (const System::TDateTime ANow,
const System::TDateTime AThen);
356
4
extern PACKAGE double
fastcall
DaySpan(const System::TDateTime ANow,
const System::TDateTime AThen);
i , 0,99930555555.
1 2 EncodeDateTime. 23 59 .
DaysBetween 0, .
DaySpan , .
DaySpan
.
. . DaysBetween
.
DecodeDate
TDateTime
.
SysUtils.hpp, DateUtlls.hpp.
tinclude <SysUtils.hpp>
extern PACKAGE void
fastcall
DecodeDate(const S y s t e m : : T D a t e T i m e DateTime,
Word SYear, Word SMonth, Word & D a y ) ;
extern PACKAGE void
fastcall
DecodeTime(const System::TDateTime DateTime,
Word SHour, Word SMin, Word &Sec,
Word SMSec);
tinclude <DateUtils.hpp>
extern PACKAGE void
fastcall
DecodeDateTime(const S y s t e m : : T D a t e T i m e DateTime,
Word & Y e a r , Word SMonth,
Word &Day, Word sHour,
Word SMin, Word sSec,
Word SMSec);
357
. , . DayOf .
, Year_b, - , Age :
Word Year, Month, Day, Age, Year_b;
D e c o d e D a t e ( N o w ( ) , Y e a r , Month, D a y ) ;
Age = Year - Year_b;
DecodeDateTime TDateTime
.
. . DecodeDate
TDateTime.
DecodeTime TDateTime
.
. . DecodeDate
TDateTime.
div
, .
stdlib.h, Math.hpp.
tinclude <stdlib.h>
typedef struct {
int quot;
int rem;
} div_t;
//
//
//
//
358
^include <Math.hpp>
extern PACKAGE void
fastcall
DivMod(int Dividend, Word Divisor,
Word &Result, Word Remainder) ;
. div Idiv numer
denom. div_t Idiv_t . quot ,
rem .
DivMod Dividend Divisor,
Result ( ) Remainder (
Dividend Result * Divisor).
finclude <stdlib.h>
div_t x;
x = div(StrTo!nt(Editl->Text) , StrToInt(Edit2->Text) ) ;
,
Editl Edit2.
:
x.rem
Editl
Edit2
x.quot
10
10
10
.
DivMod(ll, 4, Result, Remainder);
Result = 2 Remainder = 3.
DivMod
, .
. . div .
EncodeDate TDateTime
.
SysUtils.hpp, DateUtlls.hpp.
tinclude <SysUtils.hpp>
extern PACKAGE S y s t e m : : T D a t e T i m e
fastcall
EncodeDate(Word Year, Word Month, Word D a y ) ;
extern PACKAGE bool
fastcall
TryEncodeDate(Word Year, Word Month, Word Day,
System::TDateTime &Date);
extern PACKAGE System::TDateTime
fastcall
EncodeTime(Word Hour, Word Min, Word Sec,
Word MSec);
extern PACKAGE bool
fastcall
TryEncodeTime(Word Hour, Word Min, Word Sec,
Word MSec, System::TDateTime STime);
359
#include <DateUtils.hpp>
extern PACKAGE System::TDateTime
fastcall
EncodeDateTime(const Word Year,
const Word Month, const Word Day,
const Word Hour, const Word Kin,
const Word Sec, const Word MSec);
extern PACKAGE bool
fastcall
TryEncodeDateTime(const Word Year,
const Word Month, const Word Day,
const Word Hour, const Word Min,
const Word Sec, const Word MSec,
System::TDateTirae iValue);
TDateTime 25 1917 :
TDateTime = EncodeDate(1917, 10, 2 5 ) ;
:
TDateTime ;
:
Word Year = 1917, Month = 10, Day = 32;
TDateTime = EncodeDate(Year, Month, Day);
(Day 32),
TDateTime ;
TryEncodeDate(Year, Month, Day, ) ;
.
EncodeDate :
try
360
TryEncodeDate :
if
TDateTime 17 45 : ,
TDateTime = EncodeTime(17, 45, , ) ;
:
TDateTime ;
TryEncodeTime(17, 45, , , );
EncodeDateTime TDateTime
.
. . EncodeDate TDateTime.
EncodeTime TDateTime
.
. . EncodeDate TDateTime.
EnsureRange ,
, .
Math.hpp.
exec...
.
process.h.
#include <process.h>
int execl(char *path, char *argO *argl, ..., *argn, NULL);
int _wexecl(wchar_t *path, wchar_t *argO *argl, ..., *argn, NULL);
int execle(char *path, char *argO, *argl, ...,
*argn, NULL, char **env);
_^
361
...,
exec... path, . . , .
exec... ,
:
argO, argl, ...,
argn. , .
argv[] argO, argl, ..., argn. , .
, PATH. path , ,
, PATH.
"", .
env, . "", .
exec...
(argO), path. , .
( , )
128 .
362
"1"
. .
NULL, .
"v"
, , .
NULL, , .
"" env , .
<_> = <>
363
Fl.exe. .
execl -1 ShowMessage. , , , Fl.exe
.
execlp("nc","nc", NULL);
Norton Commander ( .),
PATH.
execlp("Winword","Winword",
"F.doc",NULL))
Word F.doc.
Word :
char *arg[5] = { " W i n w o r d " } ; //
arg[l] = "Fl.doc";
arg[2] = "F2.doc";
execvp(arg[0],arg);
arg
"Winword", - NULL. 1 2
Word . NULL.
execvp Winword
.
fabs, fabsl
.
. . abs .
fgetc /
.
stdio.h, conio.h.
ttinclude <stdio.h>
int fgetc (FILE *stream);
wint_t fgetwc(FILE * stream);
int fputc(int c, FILE *stream);
wint_t fputwc(wint_t c, FILE * stream);
int getc(FILE *stream);
wint_t getwc(FILE *stream);
364
4
int putc(int c, FILE * stream);
wint_t putwc(wint_t c, FILE *stream);
int getchar(void);
wint_t getwchar(void);
int _fgetchar(void);
wint t _fgetwchar(void);
int putchar(int c);
wint_t putwchar(wint_t c) ;
int _fputchar(int c) ;
wint_t _fputwchar(wint_t c);
int ungetc(int c, FILE *stream);
wint_t ungetwc(wint_t c, FILE *stream);
#include <conio.h>
int getch(void);
int getche(void);
int ungetch(int ch) ;
365
, , DOS ,
Enter.
fgetc Windows , , .
, , input.txt , "$" ".". :
char s [ 2 5 6 ] , ch;
memset(s, ' \ 0 ' , s i z e o f ( s ) - 1);
FILE *F;
F = fopen("input.txt", "rt");
while ( f g e t c ( F ) ! = ' $ ' ) ;
do s [ s t r l e n ( s ) ] = f g e t c ( F ) ;
while ( s [ s t r l e n ( s ) - 1 ] ! = ' . ' ) ;
ShowMessage(s);
fclose(F);
while
, "$". do ... while
s .
getc getwc fgetc fgetwc.
, getc getwc , .
getchar getwchar , stdin getc(stdin) getwc(stdin).
Win32 . _fgetchar
_fgetwchar , fgetc(stdin) fgetwc(stdin)
.
getch ,
.
, - () . , . getch
, .
Win32
. , ,
.
( MyClose), , DOS. , . CharToOem.
getch, .
#include <stdio.h>
#include <system.hpp>
void M y C l o s e ( v o i d )
{
char S[] = " ";
CharToOem(S, S ) ;
puts ( S ) ;
getch () ;
}
MyClose () ;
366
getche , getch, . , , . , : 1, 2 3. :
switch ( g e t c h e ( ) )
{
' : . . .
break;
case ' 2 ' : . . .
break;
case ' 3 ' : . . .
break;
default : . . .
}
,
.
fputc fputwc stream . stdout, , . , ,
:
char *S = "Hello world";
f o r f i n t i=0; i <strlen ( S ) ; i++)
{ f p u t c ( S [ i ] , s t d o u t ) ; Sleep ( 5 0 0 ) ; }
( 500 .
Sleep) S. ,
putchar putwchar,
stdout . fputc :
putchar(S[i]);
putc putwc fputc fputwc, . _fputchar _fputwchar , fputc(c, stdout) fputwc(c, stdout). Windows.
ungetc ungetwc stream,
. ,
( ) . ungetch
.
,
. , fgetc ,
"$". , "$" , do :
t
ungetc('$', F);
fgetc .
ungetc ungetch ,
stdin ( ) ch,
: ungetc(ch, stdin) ungetch(ch),
getc fread.
ungetc ungetch
.
367
HINSTANCE FindExecutable(
LPCTSTR IpFile,
//
LPCTSTR IpDirectory,
//
LPTSTR IpResult
//
);
FindExecutable .,
, IpFile. IpDirectory . . IpResult
, , IpFile.
FindExecutable ,
32. , .
368
char A P c h a r [ 2 5 4 ] ;
FindExecutable("Doc.do",NULL,APchar);
, APchar ,
Doc.doc, :
C:\\PROGRAM FILESX\MICROSOFT OFFICE\\OFFICE\\WINWORD.EXE
, Doc.doc .
FindExecutable GetLastError. 32,
. , , :
int i = G e t L a s t E r r o r ( ) ;
if (i <= 32)
ShowMessage(" . " + I n t T o S t r ( i ) ) ;
findfirst
, .
dir.h.
tinclude <dir.h>
struct ffblk {
long
long
unsigned long
unsigned short
unsigned short
char
struct _wffblk {
long
long
unsigned long
unsigned short
unsigned short
wchar t
ff reserved;
ff_fsize;
ff_attrib;
ff_ftime;
ff_fdate;
ff name[256];
//
//
//
//
//
//
//
ff_reserved;
ff_fsize;
ff_attrib;
ff_ftime;
ff_fdate;
ff name[256];
Win32
//
//
//
//
//
//
//
Unicode
369
Attr ,
:
FA_RDONLY
FA_HIDDEN
FA_SYSTEM
FAJLABEL
FA_DIREC
FA_ARCH
0-4
5-10
11-15
ff ftime
, 2
(.. 1 2 .)
ffjdate
, 1980
(, 22 2002 .
ftime, io.h.
ff_attrib ffblk .
ffblk
(&). ,
. , , ,
( f f b l k . f f _ a t t r i b & FA__SYSTEM)
0, .
, findfirst ,
, , .
findncxt ffblk , findfirst. findfirst 0, , , . ffblk,
findfirst . findfirst
, , , .
C++Builder, . FindFirst
C++Builder.
370
Memol , c:\My.
#include <dir.h>
struct ffblk F;
int ires = findfirst ("c: \\My\\*. *", &F, FA_DIREC | FA_ARCH) ;
Memol->Clear () ;
while ( ! ires)
{
if ( F . f f _ a t t r i b & FA_DIREC)
Memol->Lines->Add (" \t" + AnsiString (F. ff_name) ) ;
else Memol->Lines->Add (" \ t " + AnsiString (F. f f_jiame) ) ;
ires = f indnext ( & F ) ;
}
FindFirst C++Builder
, .
SysUtils.hpp.
int Time;
//
int Size;
//
int Attr;
//
AnsiString Name; //
int ExcludeAttr;
int FindHandle;
_WIN32_FIND_DATAA FindData;
);
extern PACKAGE int _ fastcall
FindFirst (const AnsiString Path, int Attr, TSearchRec &F) ;
extern PACKAGE int _ fastcall FindNext (TSearchRec SF) ;
extern PACKAGE void _ fastcall FindClose (TSearchRec &F) ;
371
FindFirst. Path
. , Path = "c:\\test\\*.*",
c:\test\. Path = "c:\\test\\*.tmp", c:\test\ .tmp. Path = "*.tmp",
.tmp .
Attr ,
:
faReadOnly
$00000001
i284faffidden
$00000002
$00000004
$00000008
faArchive
$00000010
$00000020
faAnyFile
$0000003F
faSysFile
faVolumelD
faDirectory
.
Attr F .
Attr
(|). , 0. , , ,
(F.Attr & faSysFile)
true, .
, FindFirst ,
, , .
FindNext
F , FindFirst. FindNext 0, , . F, FindNext . FindNext
, , .
FindClose F.
, .
372
, . findfirst .
Memol:
TSearchRec sr;
Memol~>Clear() ;
if (! FindFirst("*.*", faAnyFile I faDirectory, sr)}
{
Memol->Lines->Add(sr.Name + ", : " + IntToStr (sr.Size));
while (! FindNext(sr))
Memol->Lines->Add(sr.Name + ", : " + IntTcStr (sr.Size));
}
FindClose(sr);
c:\MyTemp
.tmp. (. . 1.12).
TSearchRec sr;
int D;
D = FindFirst(".-\\MyTemp\\*.tmp", faAnyFile, sr) ;
while (!D)
{
DeleteFile(sr.Name);
D = FindNext(sr);
}
FindClose(sr);
.
Buttonl .tds:
void
f a s t c a l l TForml: .-ButtonlClick (TObject *Sender)
{
AnsiString CurDir = GetCurrentDir();
TSearchRec sr;
if (! FindFirst("*.*", faAnyFile I faDirectory, sr))
{
if(! CompareText(ExtractFileExt(sr.Name),".tds"))
DeleteFile(sr.Name);
else if((sr.Attr == faDirectory)&&(sr.Name !=".")
&&(sr.Name !=".."))
{
SetCurrentDir(ExtractFileDir(sr.Name));
ButtonlClick(Sender);
SetCurrentDir(CurDir);
}
while (FindNext (sr) == 0)
i
if(! CompareText(ExtractFileExt(sr.Name) , ".tds"))
DeleteFile(sr.Name);
else if((sr.Attr == faDirectory)&&(sr.Name !=".")
&&(sr.Name !=".."))
{
SetCurrentDir (sr.Name);
ButtonlClick (Sender);
SetCurrentDir (CurDir);
FindClose(sr);
373
FindNext
, FindFirst.
. . FindFirst ++ilder.
findnext
, findfirst.
. . findfirst .
,
HWND F i n d W i n d o w ( c o n s t char *lpClassName, const char *lpWindowName);
374
4
HWND H = F i n d W i n d o w C ' S c i C a l c " , " ^ " ) ;
(. . PostMessage).
GetNextWindow API Windows.
FloatToStr
.
SysUtils.hpp
fastcall FloatToStr(Extended V a l u e ) ;
FloatToStr Value .
Value . 15 . ,
.
,
"NAN". , ,
"INF" () "-INF" ( ).
, FloatToStrF FloatToText.
S , a R ,
S = FloatToStr(R);
R:
R
-3
-3
5.120
520
sqrt(2)
1,4142135623731
15000
INF
FloatToStrF
, ,
.
SysUtils.hpp.
enum TFloatFormat
f f G e n e r a l , ffExponent, f f F i x e d ,
ffNumber, ffCurrency };
extern PACKAGE A n s i S t r i n g
fastcall FloatToStrF(
Extended V a l u e , TFloatFormat
int Precision, int D i g i t s ) ;
Format,
375
Value . Format :
ffGeneral
ffExponent
ffFixed
ffN umber
ffCurrency
. . 3.1.3.4,
TFloatFormat.
Precision . Precision 7 Single,
15 Double, 18 Extended.
Digits Format . . TFloatFormat . 3.1.3.4.
,
"NAN". , ,
"INF" () "-INF" ( ).
S , a R ,
S = FloatToStrF(R,ffGeneral,7,0);
R:
R
-3
_Q
5.120
520
sqrt(2)
1,414214
15000
INF
fmod, fmodl
.
math.h.
tinclude <math.h>
double fmod(double x, double y) ;
long double fmodl(long double x, long double y);
376
t i n c l u d e <math.h>
Edit3->Text = f m o d ( S t r T o F l o a t ( E d i t l - > T e x t ) ,
StrToFloat(Edit2->Text));
,
Editl Edit2. EditS. :
Editl
Edit2
EditS
10
10
3,5
11
3,5
0,5
Format
, , .
SysUtils.hpp.
#include <SysUtils.hpp>
extern PACKAGE A n s i S t r i n g
fastcall
F o r m a t ( c o n s t A n s i S t r i n g Format,
const S y s t e m : : T V a r R e c * A r g s ,
const int A r g s S i z e ) ;
A n s i S t r i n g s;
TVarRec A r g s [ 3 ] = {11, -l.le+08, 0 . 0 0 0 1 1 } ;
s = F o r m a t ( " : %d %g % f " , Args, 2 ) ;
s, , Args,
. , 3, Format
2 , 1
. , , ,
, 1.
s ": ", "%d",
"%g", "%f", (
).
377
:
s = F o r m a t ( " % d %g %f % 0 : 1 0 d %10g % 1 0 . 5 f " , A r g s , 2 ) ;
s
"%d", "%g", "%f". "%0:10d"
, . 10, 5.
EXISTINGARRAY:
s = Format("%d % %f %0:10d %10 %10.5f",EXISTINGARRAY(Args));
,
Format OPEN ARRAY:
s = Format("%d %g %f %0:10d %10g %10.5f",
OPENARRAY(TVarRec,( 11, -l.le+08, 0.00011)));
FormatDateTime
.
. . DateTimeToString .
fprintf
, ,
.
stdio.h, conio.h.
tinclude <stdio.h>
int p r i n t f (const char * f o r m a t [ , argument, . . . ] ) ;
int w p r i n t f ( c o n s t wchar_t * f o r m a t [ , a r g u m e n t , . . . ] ) ;
int v p r i n t f ( c o n s t char *format, va_list a r g l i s t ) ;
int v w p r i n t f (const wchar_t * format, v a _ l i s t a r g l i s t ) ;
int f p r i n t f (FILE *stream,
const char * f o r m a t [ , argument, . . . ] ) ;
int f w p r i n t f ( F I L E *stream,
const wchar_t * f o r m a t [ , argument, . . . ] ) ;
int v f p r i n t f (FILE *stream, const char *format,
va_list a r g l i s t ) ;
int v f w p r i n t f ( F I L E *stream, const wchar_t *format,
va_list a r g l i s t ) ;
int s p r i n t f ( c h a r * b u f f e r ,
const char * f o r m a t [ , argument, . . . ] ) ;
int s w p r i n t f ( w c h a r _ t * b u f f e r ,
const wchar_t * f o r m a t ! , argument, . . . ] ) ;
int vsprintf(char * b u f f e r , const char *forraat,
va_list a r g l i s t ) ;
int v s w p r i n t f ( w c h a r _ t * b u f f e r , const wchar_t * format,
va_list a r g l i s t ) ;
tinclude <conio.h>
int cprintf (const char * f o r m a t ! , argument,
...]');
378
. , argument,
. format . , "%", . . 3.1.3.1. , "%i"
, "%g" , "%s" - .
printf wprintf stdout (. . 2.10.3). format
, argument, .
.
, EOF.
, stdout . :
tinclude <stdio.h>
void main(void)
{
int I = 10;
double A = 5.1;
char S[] = "string";
printf("Output with p r i n t f \ n " ) ;
p r i n t f ( " I = %i S = %s A = %g \ n " , I, S, A ) ;
getchar();
:
Output with printf
I = 10 S = string A = 5.1
ShowMessage(" " ) ;
fclose(F);
output.txt :
f p r i n t f
I = 10 S = s t r i n g A = 5.1
379
'
sprintf swprintf ,
, , buffer. .
. , ..
:
char b u f f e r [ 1 0 0 ] ;
int I = 10;
double A = 5.1;
char S [ ] = "";
s p r i n t f ( b u f f e r , " s p r i n t f \ n " ) ;
sprintf(buffer+strlen(buffer),
"I = %i S = %s A = %g \ n " , I, S, A ) ;
. , fputs
, fprintf. ,
fprintf. sprintf
fputs, , , , . ,
. , .
fputs
.
,
"v", , , , va list (. . 1.7.5). , . ,
fprintf.
f i n c l u d e <stdio.h>
#include <stdarg.h>
int p r ( F I L E *F,char * f m t , . . . )
{
va_list a r g ;
int cnt;
va_start(arg, fmt);
cnt = v f p r i n t f ( F , f m t , a r g ) ;
va_end(arg);
return(cnt);
380
fprintf ( ) . , ,
, -
fprintf: - , - , ..
fputc
.
. . fgetc / .
_fputchar
.
. . fgetc / .
fputs /
.
stdio.h, conio.h.
#include <stdio.h>
int fputs(const char *s, FILE *stream);
int fputws (const wchar_t *s, FILE *stream);
int puts(const char *s);
int _putws(const wchar^t *s) ;
char *fgets(char *s, int n, FILE *stream);
wchar_t *fgetws(wchar_t *s, int n, FILE *stream);
char *gets(char *s);
wchar_t *_getws(wchar_t *s);
#include <conio.h>
int cputs(const char *str);
char *cgets(char *str);
stdout);
CharToOem.
. :
#include <stdio.h>
FILE *F;
F = fopen("output2.txt",
381
"wt");
puts _putws ,
stdout. . . - Windows, stdout .
cputs .
, BIOS _directvideo. ,
cputs "\" "\\" "\t" . . Windows .
fgets fgetws stream s.
, - 1
.
s. s. s . s NULL, . input.txt:
tinclude < s t d i o . h >
char S [ 2 5 6 ] ;
FILE *F;
F = fopen("input.txt", "rt");
w h i l e ( f g e t s (S, 256, F ) )
S>
fclose ( F ) ;
gets _getws s
stdin, . . s
. s NULL .
s. . fgets,
. fgets
stream
stdin. gets _getws . Windows stdin
.
cgets str.
"CR/LF",
(. ). , str .
cgets str[0]. str[l]
. str[2].
, .. str[2].
382
cgets Windows.
, . scanf
fprintf .
fputwc
.
. . fgetc / .
_fputwchar
.
. . fgetc / .
fputws
.
. . fputs / .
free
.
. . malloc .
#include <math.h>
double f r e x p (double x, int * e x p o n e n t ) ;
long double frexpl(long double x, int *exponent);
tinclude <math.hpp>
extern PACKAGE void
fastcall
Frexp(Extended X, Extended & M a n t i s s a , int ^ e x p o n e n t ) ;
X 2. .. : X = Mantissa 2exPnent.
exponent, frexp frexpl , Frexp Mantissa.
#include <math.h>
double number;
int exponent;
number = S t r T o F l o a t ( E d i t l - > T e x t ) ;
Edit3->Text = f r e x p ( n u m b e r , Sexponent);
Edit2->Text = exponent;
, Editl,
exponent, Edit2, , EditS.
383
:
X
exponent
0,5
0,5
10
0,625
1.5
0.75
fscanf
.
. . scanf .
fwprintf
.
. . fprintf .
fwscanf
.
. . scanf .
get - ifstream
.
ifstream
char get () ;
bool get(char);
void get(char *, int n, char delim);
get -
ifstream. , .
.
get
(, )
. get EOF, .
get , :
char s [ 8 0 ] , ;
ifstream infile("Test.dat");
if ( linfile)
f
ShowMessage(" ");
return;
}
int i = 0;
while ( ( = i n f i l e . g e t O ) != E O F )
(
i f ( c == ' \ n ' )
384
//
s[i] = 0;
//
i = 0;
}
//
else s[i++] = ;
}
//
inf lie. close () ;
.
"\", s. "\",
, - , . , : ,
. , .
get() -
. , "$" :
while ( ( = i n f i l e . g e t ( ) ) != EOF)
{
if ( == ' $ ' ) break;
if ( = = ' $ ' ) . . .
}
- get (, ) . get ,
; get
, - get.
get
,
while:
while (infile.get () )
- get :
s, delim (
"\").
, , 1 , . , ,
. ,
( ). , get , .
:
char s [80] ;
ifstream infile ("Test .dat") ;
if ( ! infile)
385
i n f i l e . g e t (s, 80) ;
infile.get () ;
//
//
inf lie. close ( ) ;
Get8087CW
FPU _
FPU.
. . _contro!87 FPU.
getc
.
. . fgetc / .
getch
.
. . fgetc / .
getchar
.
. . fgetc / .
getche
.
. . fgetc / .
GetExceptionMask
FPU.
math.hpp.
386
tinclude <raath.hpp>
enum TFPUException {exInvalidOp, exDenormalized, exZeroDivide,
exOverflow, exUnderflow, exPrecision};
typedefSet<TFPUException, exInvalidOp, exPrecision>
TFPUExceptionMask;
extern PACKAGE TFPUExceptionMask
fastoall
GetExceptionMask(void);
extern PACKAGE TFPUExceptionMask
fastcall
SetExceptionMask(void TFPUExceptionMask Mask);
exDenormalized
exZeroDivide
exOverflow
exUnderflow
exPrecision
- TFPUExceptionMask
, .
,
C++Builder 6 : Infinity
( ), Neglnfinity ( ), NaN
( ).
: [exDenormalized, exUnderflow, exPrecision], .. , , .
,
- . , , , . ,
OpenGL
.
Mask:
#include <math.hpp>
TFPUExceptionMask Mask;
, Mask
:
Mask = SetExceptionMask(Mask.Clear() ) ;
.
387
1 :
Mask = SetExceptionMask(Mask exInvalidOp
exDenormalized exZeroDivide
exOverflow exUnderflow
exPrecision);
, , .
, , , :
Mask = SetExceptionMask(Mask) ;
, , .
getline - ifstream
.
ifstream
getline -
ifstream. , .
getline : s, n delim ( "\"). , , 1 ,
.
, , .
. getline get,
. get , . getline .
getline.
, get,
getline.
char s [ 8 0 ] , ;
ifstream i n f i l e ( " T e s t . d a t " ) ;
if ( ! i n f i l e )
(
ShowMessage(" ");
return;
}
while(!infile.eof ())
(
infile.getline (s,80);
//
if (s[0] != 0) Labell->Caption = s;
}
//
infile.close();
388
DWORD GetLastError(VOID) ;
GetLastError
. . SetLastError.
GetLastError ,
. ,
SetLastError(O),
.
API Win32
, . , FALSE, NULL,
OxFFFFFFFF -1.
32- . 31. 29 , . . , , . .
,
FormatMessage.
WINNT.H Win32 SDK.
- , , :
int i = G e t L a s t E r r o r ( ) ;
if
(i <= 32)
ShowMessage(" " + I n t T o S t r ( i ) ) ;
HWND GetNextWindow(
HWND hWnd,
UINT wCmd
);
GetNextWindow Z-. ,
.
hWnd , .
wCmd . wCmd = GW_HWNDNEXT, , . wCmd = GW_HWNDPREV, , .
, . ( wCmd), 0. GetLastError.
389
GetNextWindow ,
GetWindow GW_HWNDNEXT
GW_HWNDPREV.
. . GetWindowText API Windows.
GetPrecisionMode
FPU.
Math.hpp.
fastcall
GetPrecisionMode(void);
extern PACKAGE TFPUPrecisionMode
fastcall
SetPrecisionMode(const TFPUPrecisionMode Precision);
GetPrecisionMode SetPrecisionMode
FPU (. . 1.9.3).
, , TFPUPrecisionMode. SetPrecisionMode,
, Precision.
:
pmSingle
, Single
pmReserved
pmDouble
, Double
pmExtended
, Extended
, FPU, Get8087CW.
Set8087CW. controls?, controlfp.
GetRoundMode
FPU.
Math.hpp.
rmDown,
rmUp,
rmTruncate)
GetRoundMode SetRoundMode
FPU (. . 1.9.3).
, , TFPURoundingMode. SetRoundMode, ,
RoundMode.
390
:
rmNearest
rmDown
rmUp
rmTruncate
, ..
, ..
, ..
, FPU, Get8087CW.
Set8087CW. _contro!87. controlfp.
gets
.
. . fputs / .
getwc
.
. . fgetc / .
getwchar
.
. . fgetc / .
HWND GetWindow(
HWND hWnd,
UINT uCmd
GW_HWNDFIRST , Z-.
391
GW_HWNDLAST
, Z-.
GW_HWNDNEXT
Z-.
GW_HWNDPREV
Z-.
GW_OWNER
,
.
, / .
, 0. GetLastError.
GetWindowText
API
Windows _ _
API Windows, , , .
int
GetWindowText (
HWND hWnd,
// ,
LPTSTR IpString, //
int nMaxCount
// ,
,
Windows . ,
, , SendMessage WM CLOSE.
HWND H =Handle;
char Pen [128] ;
do
H = GetNextWindow(H,GW_HWNDNEXT) ;
GetWindowText (H, Pch, 128) ;
if (CompareText (Pch, "") == )
break;
) while (H != NULL) ;
392
4
if
(H != NULL)
SendMessage(H, WM_CLOSE,0,0);
Handle . , Z-, GetWindowText Pch. .
CompareText. ,
Pch, . , CompareText . , C++ , if :
if( ! CompareText(Pch, ""))
, . ,
, .
H = NULL, .
_getws
.
. . fputs / .
HourOf
.
. . DayOf .
HourOfTheDay
.
. . DayOf .
HoursBetween
.
DateUtils.hpp.
#include <DateUtils.hpp>
extern PACKAGE int
fastcall
extern PACKAGE double
HoursBetween(
const System::TDateTime
const System::TDateTime
fastcall HourSpan(
const System::TDateTime
const System::TDateTime
ANow,
AThen);
ANow,
AThen);
HoursBetween HourSpan
ANow AThen TDateTime. DaysBetween . DaySpan , , .
TDateTime Tl = E n c o d e D a t e T i m e ( 2 0 0 2 ,
10,
5,
11,
00,
45,
300);
393
i , 0,983333333220799.
1 2 EncodeDateTime. 59 .
HoursBetween 0, .
HourSpan , .
HourSpan
.
. . HoursBetween
.
InputBox
,
.
Dialogs.hpp.
linclude <Dialogs.hpp>
extern PACKAGE A n s i S t r i n g
fastcall InputBox(
constAnsiString ACaption, const A n s i S t r i n g APrompt,
const A n s i S t r i n g A D e f a u l t ) ;
, . 4.1, , , "".
. 4.1
, InputBox
Caned
394
InputBox
SelectDirectorv.
InputQuery
, , .
Dialogs.hpp.
#include <Dialogs.hpp>
extern PACKAGE bool
fastcall InputQuery(
constAnsiString ACaption, const AnsiString APrompt,
AnsiString S V a l u e ) ;
InputQuery (. . 4.2)
ACaption, APrompt -
, . Value .
, InputQuery Value .
. 4.2
, InputQuery
,
, 6|!
Cancst
InputQuery true ,
, . ( Esc,
Cancel) false,
Value , InputQuery.
,
, InputQuery
InputBox.
AnsiString ="";
if (I InputQuery(", ",
", ", Name))
ShowMessage(" , ");
else ShowMessage(", " + Name + " ! " ) ;
, . 4.2,
, , , .
InRange
, .
Math.hpp.
extern PACKAGE bool
extern PACKAGE bool
395
fastcall InRange(const
int64 AValue,
const
int64 AMin, const
int64 AMax);
fastcall InRange(const double AValue,
const double AMin, const double AMax);
InRange true,
AValue AMin - AMax, . false,
AValue AMin .
,
L = InRange(5, 1, 10) ;
L = InRange (1, I , 1 0 ) ;
L = InRange (10, 1, 10);
L true,
L = InR
Raan
nggeeddll,, 1, 10) ;
L = IInnR
Raannggee((00,, 1, 10);
L = false.
IntPower
.
. . pow, powl .
IntToStr
.
SysUtils.hpp.
IntToStr Value .
Value . , ,
.
int A = 40000;
int = 40000;
Editl->Text = IntToStr(A * );
#include <Math.hpp>
extern PACKAGE bool
396
Islnfinite , Infinity
Neglnfinity , (. . 1 . 1.9.3). true.
Sign.
:
if
(Islnfinite(X))
if (Sign(X) < 0)
ShowMessage(" ");
else ShowMessage (" " ) ;
, Infinity Neglnfinity .
Islnfinite. , ,
IsNan
, .
Math.hpp.
IsNan , NaN , (. . 1
. 1.9.3). NaN, true. ,
NaN . IsNan. , NaN
, .
IsToday ,
, .
. . Date .
labs
.
. . abs, labs, fabs, fabsl .
tfinclude <math.h>
double Idexp (double x, int exp);
long double Idexpl (long double x, int exp) ;
#include <math.hpp>
extern PACKAGE Extended
f a s t c a l l Ldexp(Extended X, int e x p ) ;
397
2, .. 2 .
, _matherr ( Idexp) _matherrl ( Idexpl) (. . 3.1.4.4).
Idiv
, .
. . div .
LnXPl
.
. . log .
log
.
math.h math.hpp.
tinclude <math.h>
double log (double x) ;
long double logl(long double x ) ;
double loglO(double x ) ;
long double l o g l O l ( l o n g double x) ;
linclude <math.hpp>
extern PACKAGE Extended
extern PACKAGE Extended
extern PACKAGE Extended
extern PACKAGE Extended
f a s t c a l l LoglO(Extended X) ;
fastcall Log2(Extended X ) ;
fastcall LogN (Extended N, Extended X) ;
f a s t c a l l L n X P l ( E x t e n d e d X) ;
. log logl .
loglO loglOl, LoglO 10. Log2 2. LogN , N. LnXPl , X,
(+1). X 1.
( LnXPl) , EDOM.
, 0, HUGE_VAL ( log loglO), _LHUGE_VAL ( logl loglOl).
ERANGE.
, _matherr _matherrl (. . 3.1.4.4).
398
LowerCase
.
. . AnsiLowerCase .
_lrand
.
. . random .
_lrotl
.
. . _rotl .
_lrotr
.
. . _rotl .
main
C++.
#include <dos.h>
extern int _argc;
extern char **_argv;
extern wchar_t ** _wargv;
extern char ** _environ;
extern wchar_t ** _wenviron;
int
int
int
int
int
int
main ()
main(int argc)
main(int argc, char * argv[])
main(int argc, char * argv[], char * envf])
wmain(int argc, wchar_t *argv[])
_tmain(int argc, _TCHAR *argv[])
main
C++ .
C++ . , ,
, void.
wmain Unicode, Unicode. _tmain , .
argc ,
. , . ,
, argc = 1.
argv , , . env
argv , :
_=
, PATH, COMSPEC ..
399
main .
_argc, _argv _environ.
C++,
return. , C++
return 0;
.
, main. . DOS CharToOem CharToOemBuff (. . CharToOem, CharToOemBuff DOS).
tinclude <stdio.h>
tinclude <stdlib.h>
int main(int argc, char *argv[], char * e n v [ ] )
{
int i;
printfC'The value of argc is %d \n\n", argc);
printf("These are the %d command-line arguments"
" passed to main:\n\n", argc);
for (i = 0; i < argc; i++)
printf ("
argv[%d]: %s\n", i, argv[i]);
printf("\nThe environment string(s) "
"on this system are:\n\n");
for (i = 0; env[i] != NULL; i++)
printf ("
env[%d]: %s\n", i, env[i]);
getchar();
return 0;
}
(, "-v"):
The value of argc is 2
These are the 2 command-line arguments passed to main:
argv [ 0] : :\CBOILDER\TEST.EXE
argv[l]: -v
The environment string (s) on this system are
env[0]: COMSPEC=C:\COMMAND.COM
env[l]: PROMPT=$p $g
env[2]: PATH=C:\SPRINT;:\DOS;:\ CBUILDER
,
main :
#include <stdio.h>
tinclude <stdlib.h>
int m a i n ( / * i n t argc, char *argv[-], char * e n v [ ] * / )
{
int i;
printfC'The value of argc is %d \n\n", _argc);
400
4
printf("These are the %d command-line arguments"
" passed to _argc\n\n", _argc);
for (1 = 0; 1 < __argc; i + + )
printf ("
argv[%d] : % s \ n " , 1, _ a r g v [ i ] ) ;
p r i n t f ( " \ n T h e environment s t r i n g ( s ) "
"on this system a r e : \ n \ n " ) ;
for (i = 0; _environ[i] != NULL; i++)
printf("
env[%d]: %s\n", i, _environ[i]);
getchar ( ) ;
return 0;
}
.
main.
, .
malloc
.
stdlib.h alloc.h.
void
void
void
void
*malloc(size_t size);
*calloc(size_t nitems, size_t size);
*realloo(void *block, size_t size);
free(void *block);
malloc calloc
(. . 1, . 1.11). realloc . free .
new delete, . 1.11.
malloc
(heap) size . .
size = 0, NULL.
calloc nitems , size. , nitems * size. .
. , size = 0,
nitems = 0, NULL.
realloc . heap, block, size. , block , malloc, calloc realloc. block
NULL, realloc , malloc.
size , ,
block, , NULL. ,
size 0 ,
, .
, realloc NULL. ,
. block, .
401
malloc ,
, - , .
tinclude <stdio.h>
#include <alloc.h>
char *str;
// str - ,
str = (char *) m a l l o c ( 1 0 0 ) ;
//
free(str);
calloc:
str = (char *) c a l l o c ( 1 0 0 , s i z e o f ( c h a r ) ) ;
malloc calloc , , :
str = (char *) realloc (str, 2 0 ) ;
, :
realloc(str, 20);
, NULL (0),
. , , , NULL.
.
MaxIntValue, Max Value
.
Math.hpp.
finclude <Math.hpp>
extern PACKAGE int
fastcall
MaxIntValue(const int * Data, const int Data__Size);
extern PACKAGE double
fastcall
MaxValue(const double * Data, const int Data_Size);
MaxIntValue MaxValue
Data .
Data_Size ,
.
,
= MaxValue(A, 9 9 ) ;
100 , .
. . random
.
402
_mbscpy
.
. . StrCopy .
_mbslwr
.
. . AnsiLowerCase .
_mbsncpy
.
. . StrCopy .
_mbsupr
.
. . AnsiUpperCase .
Mean
.
Math.hpp.
#include <Math.hpp>
extern PACKAGE Extended
fastcall
Mean(const double * Data, const int Data_Size);
Mean (
) Data. Data_Size , . , ,
j=l
,
= Mean(, 99) ;
100 , .
, MeanAndStdDev.
. . random
.
MeanAndStdDev
.
403
Math.hpp.
#include <Math.hpp>
extern PACKAGE void
fastcall
MeanAndStdDev(const double * Data, const int Data_Size,
Extended &Mean, Extended &StdDev);
. . random
.
memccpy
.
.
. . -
.
mem.h, string.h.
void
void
void
^void
, S1 "67895". ,
. , .
,
memset.
.
(void *),
404
. ,
char * = (char *) merncpy (SI, S2, strle'n (S2 ) ) ;
SI, .
memcpy _wmemcpy . .
memmove , .
.. , -
, -.
memccpy src dest, ,
, .
, dest, . , NULL.
memccpy:
char S[21];
char *Source = ( E d i t l - > T e x t ) . c _ s t r ( ) ;
char *P = (char *)memccpy(S, Source, ' ', 2 0 ) ;
if (P == NULL)
ShowMessage(" 20 ");
else
{
S 20 ( ).
Source Editl. Source S
( ), 20- . , memccpy, NULL, . S , 1 ,
, .
.
memset _wmemset s
s. ,
memset(S,
S .
.
memset(S, ' * ' , s i z e o f ( S ) - 1);
* (S + sizeof ( S ) - l ) = ' \ 0 ' ;
S "*" . - .
( ), , , , . StrCopy .
memmove
.
.
. . memcpy -
405
memset
.
.
. . memcpy -
MessageBox TApplication
, .
Forms
f u n c t i o n MessageBox(Text,
Caption:
PChar;
Flags: Longint):
Integer;
( Windows)
MB_ABORTRETRYIGNORE
. .
MB_OKCANCEL
Cancel ().
MB_RETRYCANCEL
MB YESNO
Yes () No ().
MB_YESNOCANCEL
MB ICONEXCLAMATION,
MB ICONW ARMING
(, ).
406
MB ICONINFORMATION,
MB ICONASTERISK
"i" ().
MB_ICONQUESTION
( ).
MB ICONSTOP,
MB ICONERROR,
MB ICONHAND
(,
).
, ( )
MB_DEFBUTTON1
. .
MB_DEFBUTTON2
MB DEFBUTTON3
MB_DEFBUTTON4
.
.
MB APPLMODAL
,
. . . .
MB SYSTEMMODAL , MB_APPLMODAL,
WS_EX_TOPMOST,
,
. , .
( )
MB_HELP
Help (),
F1 Help.
MBJTOPMOST ( WS EX TOPMOST).
,
,
( ) ..
, -
. , :
407
IDABORT
Abort ().
IDCANCEL
Cancel () Esc.
IDIGNORE
Ignore ().
IDNO
No ().
IDOK
IDRETRY
Retry ().
IDYES
Yes ().
, .
if
{
if (Application->MessageBox (
" ?",
" ",
MB_YESNOCANCEL + MB_ICONQUESTION) != IDYES)
DataSet->Cancel ( ) ;
Abort () ;
else
{
Application->MessageBox (" ", "",
MB_ICONSTOP) ;
Abort () ;
. 4.3. ,
, , . 4, MessageDlg MessageDlgPos.
. 4.3
,
Application->MessageBox
> .
:^t j
!1::::1 & \
)
MessageDlg
.
408
4
Dialogs.hpp.
MessageDlg . Msg.
DlgType.
:
mtConfirmation
,
(. . 4.4 )
, "i" (.
. 4.4 )
, - (. . 4.4
)
,
(. . 4.4 )
mtlnformation
mtError
mtWarning
mtCustom
.
(. . 4.4 )
AButtons , .
TMsgDlgBtns AButtons ,
. :
409
_
*f "\
1 :J<j )
: .
mbYes
"Yes"
"No"
mbNo
mbOK
mbCancel
"OK"
mbHelp
"Help"
mbAbort
mbRetry
"Abort"
"Retry"
mblgnore
"Ignore"
"All"
"Cancel"
mbAll
mbYesNoCancel
Yes, No Cancel
OK Cancel
Abort, Retry Ignore
mbOkCancel
mbAbortRetrylgnore
TMsgDlgButtons Buttons.
HelpCtx ,
.
F1. , MessageDlg HelpCtx.
MessageDlg ,
. :
mrYes
mr Abort
mrNone
mrNo
mrRetry
mrOk
mrCancel
mrlgnore
mrAll
410
MessageDlgPos, MessageDlg, . X Y.
CreateMessageDialog
. , . Show ShowModal.
ShowModal
, .
DlgType Buttons
TMsgDlgType TMsgDlgButtons .
CreateMessageDialog , .
, , , , . CreateMessageDialog , ,
Free. .
. MessageBox. , ,
.
, , , . ShowMessage .
:
i f ( M e s s a g e D l g ( " ?",
mtConfirmation, TMsgDlgButtons() mbYes mbNo,
0) == m r Y e s )
{
MessageDlg(" ", m t l n f o r m a t i o n ,
TMsgDlgButtons() mbOK, 0 ) ;
Close ( ) ;
}
MessageDlg mtConfirmation
(. . 4.4 ).
Yes, mtlnformation (. . 4.4 ).
(.
. 4.4 4.4 ):
catch ( . . . )
{
MessageDlg(" .", mtError,
TMsgDlgButtons() mbOK, 0 ) ;
MessageDlg(" .", mtWarning,
T M s g D l g B u t t o n s ( ) mbOK, 0 ) ;
}
,
(. . 4.4 ). Yes, Post; No, Cancel; Cancel,
.
switch (MessageDlg(" ?", mtCustom,
mbYesNoCancel, 0 ) )
411
>
( Y = 0)
.
MessageDlgPos (" ! " , mtError,
TMsgDlgButtons () mbOK, ,
BoundsRect . L e f t , BoundsRect .Bottom) ;
,
.
CreateMessageDialog.
TForm * FMess;
FMess = CreateMessageDialog ( " .", mtWarning,
TMsgDlgButtons () mbOK) ;
FMess->Caption = "";
FMess ,
"". (. 4.5)
. 4.4 , ""
"Warning".
FMess->ShowModal () ;
.
FMess->Free () ;
, .
. 4.5
, CreateMessageDialog
MessageDlgPos
.
. . MessageDlg .
MilliSecondOf
.
. . DayOf .
MilliSecondOfTheSecond
.
412
. . DayOf .
MilliSecondsBetween
.
DateUtils.hpp.
finclude <DateUtils.hpp>
extern PACKAGE int
fastcall
MilliSecondsBetween(const System::TDateTime ANow,
const System::TDateTime AThen);
extern PACKAGE double
fastcall
MilliSecondSpan(const System::TDateTime ANow,
const System::TDateTime AThen);
tinclude <Math.hpp>
extern PACKAGE int
fastcall
MinlntValue (const int * Data, const int Data_Size);
extern PACKAGE double
fastcall
MinValue(const double * Data, const int Data_Size);
100 , .
. . random
.
MinuteOf
.
. . DayOf .
413
MinuteOfTheHour
.
. . DayOf .
MinutesBetween
.
DateUtils.hpp.
^include <DateUtils.hpp>
extern PACKAGE int
fastcall
MinutesBetween(const System::TDateTime ANow,
const System::TDateTime AThen);
extern PACKAGE double
fastcall
MinuteSpan (const System::TDateTime ANow,
const System::TDateTime AThen);
00, 00,
00, 59,
300);
300);
i , 0,98333333269693.
1 2 EncodeDateTime. 59 .
MinutesBetween 0, .
MinuteSpan , .
MinuteSpan
.
. . MinutesBetween .
MomentSkewKurtosis
, .
Matli.hpp.
ftinclude <Math.hpp>
extern PACKAGE void
fastcall
M o m e n t S k e w K u r t o s i s ( c o n s t double * Data, const int Data_Size,
Extended &M1, Extended 2, Extended &M3,
Extended SM4, Extended &Skew,
Extended S K u r t o s i s ) ;
414
, . Ml
( ), Mean MeanAndStdDev. 2, 4 . -
, , Popn Variance . . = 0. , ,
. MomentSkewKurtosis Skew. 4 . ,
MomentSkewKurtosis Kurtosis, 4, . ,
, 3. . Kurtosis . 3.
Data_Size ,
.
. . random
.
MonthOf
.
. . DayOf .
MonthOfTheYear
.
. . DayOf .
MonthsBetween _
.
DateUtils.hpp.
tinclude <DateUtils.hpp>
extern PACKAGE int _ fastcall
MonthsBetween (const System: : TDateTime ANow,
const System: :TDateTime AThen);
extern PACKAGE double _ fastcall
MonthSpan (const System: : TDateTime ANow,
const System: : TDateTime AThen);
MonthsBetween MonthSpan
ANow AThen TDateTime.
MonthsBetween .
MonthSpan ,
, .
415
, MonthsBetween
MonthSpan 30.4375
. , 01.02 01.03 MonthsBetween
0, , .
i 1, 1,00342231348407.
1 2 codeDateTime. (
11 ). - MonthsBetween 1, MonthSpan , .
MonthSpan
.
. . MonthsBetween .
_new_handler
_new_handler , .
. . set_new_handler
.
Norm
.
Math.hpp.
#include <Math.hpp>
extern PACKAGE Extended
fastcall
Norm(const double * Data, const int Data_Size);
. . random
.
Now
.
. . Date .
416
finclude <system.hpp>
BOOL OemToChar('
LPCTSTR IpszSrc,
//
LPSTR IpszDst
//
);
BOOL OemToCharBuff(
LPCTSTR IpszSrc,
//
LPSTR IpszDst,
//
DWORD cchDstLength //
);
MS-DOS. ,
, DOS
. DOS.
IpszSrc , . IpszDst ,
. cchDstLength OemToCharBuff , .
, .
, ANSI Unix. , ANSI, , .. IpszSrc IpszDst .
.
CharToOem. .
S,
RichEditl.
. RichEditl. .
Point
.
Types.hpp Classes.hpp.
#include <Types.hpp>
struct TPoint
{
int x;
int y;
};
extern PACKAGE TPoint
^include <Types.hpp>
417
struct TSmallPoint
{
short x;
short y;
}
extern PACKAGE Types::TSmallPoint fastcall
SmallPoint(short AX, short AY);
,
AY. C++Builder (.,
, Rect). . .
.
Point TPoint. SmallPoint TSmallPoint, 16- .
. Point . Bounds .
poly, polyl, Poly
.
math.h math.hpp.
t i n c l u d e <math.h>
double p o l y ( d o u b l e x, int degree, double c o e f f s f ] ) ;
long double p o l y l ( l o n g double x, int degree, long double c o e f f s [ ] ) ;
#include <math.hpp>
extern PACKAGE Extended
fastcall
Poly(Extended X, const double * C o e f f i c i e n t s ,
const int C o e f f i c i e n t s _ S i z e ) ;
poly 1 +
2
3
2* + 3* + 4* = 10:
double a r r a y [ 4 ] = { 1 , 2 , 3 , 4 ) ;
double result = poly (10, 3, a r r a y ) ;
4321.
Poly:
double a r r a y [ 4 ] = { l , 2 , 3 , 4 ) ;
double result = P o l y ( 1 0 , a r r a y , 3 ) ;
418
PopnStdDev
.
Math.hpp.
#include <Math.hpp>
extern PACKAGE Extended
fastcall
PopnStdDev(const double * Data, const, int Data_Size);
PopnStdDev Data.
Data_Size ,
. ,
Jl(A[i]-A) 2 /n,
V i-l
( ) .
, ,
StdDev MeanAndStdDev.
.
. . random
.
PopnVariance
.
Math.hpp.
#include <Math.hpp>
extern PACKAGE Extended
fastcall
PopnVariance(const double * Data, const int Data_Size);
PopnVariance
Data, ..
. Data_Size , .
,
2(A[i]-A) 2 /n,
i-l
( ) .
, , , 1, Variance.
. . random
.
.
419
BOOL PostMessage(
HWND hWnd,
// -
UINT Msg,
//
WPARAM wParam, //
LPARAM IParam //
);
PostMessage
, , , . PostMessage SendMessage.
, . GetMessage PeekMessage.
hWnd , .
HWND_BROADCAST,
, , , , . NULL,
( ) .
Msg . wParam 1 .
. GetLastError.
, hWnd, Find Window.
WM_USER
PostMessage, , . -
, , , , , .
, hWnd = HWND_BROADCAST
, RegisterWindowMessage.
PostMessage(Form2->Handle,WM_CLOSE,0,0);
Form2 WM_CLOSE, .
PostMessage Form2,
Handle. WM_CLOSE ; wParam IParam .
PostMessage(FindWindow("SciCalc",""), WM_CLOSE,0,0);
FindWindow ,
WM_CLOSE. FindWindow SciCalc . Windows .
420
pow, powl
.
math.h math.hpp.
#include <math.h>
double pow(double x, double y ) ;
long double p o w l ( l o n g double x, long double y ) ;
double p o w l O ( i n t p ) ;
long double p o w l O l ( i n t p ) ;
tinclude <math.hpp>
fastcall Power(
pow powl , .
, HUGE_VAL
( pow) _LHUGE_VAL ( powl).
ERANGE.
, , EDOM.
0 0.
, _matherr _matherrl (. . 3.1.4.4).
Power -- Base
Exponent. Exponent , Maxlnt, Base .
IntPower Base Exponent, Exponent. Base .
powlO powlOl 10, .
powlO, powlOl
.
. . pow, powl .
Power
.
. . pow, powl .
printf
.
. . fprintf .
putc
.
. . fgetc / .
putchar
.
421
. . fgetc / .
puts
.
. . fputs / .
putwc
.
. . fgetc / .
putwchar
.
. . fgetc / .
_putws
.
. . fputs / .
raise
.
. . signal .
rand, randomize, Randomize, RandG
.
. . random .
random
.
stdlib.h, System.hpp, Math.hpp.
#include <stdlib.h>
long _lrand(void);
int rand(void);
int random(int num) ;
void randomize(void);
void srand(unsigned seed);
#include <System.hpp>
extern PACKAGE void
fastcall Randomize(void);
#include <Math.hpp>
extern PACKAGE Extended
fastcall RandG(
Extended Mean, Extended StdDev);
422
, 0
N, %. ,
rand () % 101
0 100,
(rand (} % 201) - 100
-100 100.
rand . ,
10. * a n d ( ) / RAND_MAX
,
0 10.
_lrand rand, 64
31
2 0 2 - 1.
random , num,
. ,
, , 0 100,
random(101);
, , %.
RandG , ( )
Mean StdDev.
, . .
. , , ..
. ,
RandG, randomize. - (, OnCreate )
randomize();
.
srand randomize ,
, seed.
RandG Randomize, randomize.
, RandSeed,
System.hpp.
.
double A [ 1 0 0 1 ] ;
long double M, Me, Std, StdD, StdD2, Ml, M2, , 4, Skew,
Kurtosis, MinA, MaxA, V, TV, PV, N, SOS, S, SoS, S2;
//
f o r ( i n t i = 0; i < 1001;
A[i] = RandG(20,4) ;
Me = M e a n ( A , 1 0 0 0 ) ;
V = Variance(A,1000);
423
TV = TotalVariance(A,1000);
MeanAndStdDev(A,1000, , StdD) ;
PV = PopnVariance (A, 1-000) ;
Std = StdDev(A,1000);
StdD2 = PopnStdDev(A,1000);
N = Norm(A,1000);
MomentSkewKurtosis(A,1000,M1,M2,M3,M4,Skew,Kurtosis);
MinA = MinValue(A,1000) ;
MaxA = MaxValue(A,1000);
SumsAndSquares(A, 1000, S,. SoS) ;
SOS = SumOfSquares(A,1000) ;
S2 = Sum(A,1000);
realloc
.
. . malloc .
Rect
TRect.
. . Bounds .
UINT RegisterWindowMes'sage (
LPCTSTR IpString
//
);
Register WindowMessage ,
. , SendMessage
PostMessage hWnd = HWND_BROADCAST. ,
. Windows.
LpString ,
.
, OxFFFF. ,
.
RegisterWindowMessage ,
.
WM USER OxTFFF.
_rotl
.
stdlib.h.
424
tinclude
unsigned
unsigned
unsigned
unsigned
unsigned
unsigned
<stdlib.h>
short _rotl(unsigned
short _rotr(unsigned
long Irotl(unsigned
long _lrotr(unsigned
char __crotl(unsigned
char _crotr(unsigned
_rotr
.
. . _rotl .
RoundTo
.
Math.hpp.
425
AValue
ADigit
RoundTo
SimpleRoundTo
1234567
3
3
-3
-3
1234000
1234000
1234000
1235000
1.235
1.235
-1.235
-1.234
1234500
1.23456
-1.23456
Same Value
.
. . CompareValue .
scanf
( ), , .
stdio.h, conio.h.
#include <stdio.h>
int scanf(const char *format[, address, ...]);
int wscanf(const wchar_t *format[, address, ...]);
int vscanf(const char *format, va_list arglist);
int fscanf(FILE *stream,
const char *format[, address, ...]);
int fwscanf(FILE *stream,
const wchar_t * format!, address, ...]);
int vfscanf(FILE *stream,
const char *format,va list arglist);
int sscanf(const char *buffer,
const char *format[
int s w s c a n f ( c o n s t
const
int v s s c a n f ( c o n s t
const
address, . . . ]
wchar_t * b u f f e r ,
wchar_t * f o r m a t [ , address,
char * b u f f e r ,
char * f o r m a t , va_list a r g l i s t ) ;
#include <conio.h>
int cscanf (char * f o r m a t [ ,
address,
...]);
. ,
, , , . , , ,
.. ,
, argument. format . , "%".
426
(. . 3.1.3.2),
, "%d" , "%" , "%s" . "*" "% " . ,
.
scanf wscanf stdin. . format , argument, .
, . , 0. , EOF.
, stdin . :
#include <stdio.h>
int m a i n ( v o i d )
int I;
f l o a t R;
char S [ 8 0 ] ;
p u t s ( " E n t e r integer number, f l o a t number,"
"string:\n") ;
if (scanf ("%d %e %s", SI, &R, &S) < 3)
puts("Wrong input\n");
else p r i n t f C ' Y o u enter %i, %g, %s", I, R, S ) ;
fflush(stdin);
getchar () ;
puts
, .
(
. . CharToOem, CharToOemBuff DOS).
scanf
, ( "%"), ( "%g"), ( "%s"). , . , , , .
DOS, . , , Enter. : "5 5.6 ". I = 5, R = 5.6, S = "". ,
, : "5
5-". "" "", ,
.
"55.6", I = 55, R = 0.6, S =
"". , .
cscanf scanf . scanf , . ,
427
cscanf, ,
.
scanf wscanf
, stdin. fscanf fwscanf.
, scanf, stream , . , :
tinclude <stdio.h>
FILE *F;
int I;
double R;
char S [ 8 0 ] ;
if ( (F = fopen ("input.txt", " r t " ) ) == NULL)
{
ShowMessage(" ");
return;
}
F = fopen("input.txt", "rt");
if (fscanf (F, "%i %le %s ", & I , &R, & S ) < 3)
ShowMessage(" " ) ;
else
ShowMessage("I = " + I n t T o S t r ( I ) + ", R = " +
FloatToStr(R) + ", S = " + S ) ;
fclose(F);
input.txt , .
,
( 3). , -
.
, R
"1". , R double, long,
(. . 3.1.3.2).
- . , , - ,
X = 1 = 1
X = 2 Y = 4
X Y . :
FILE *F;
int i = 0;
double X[10], Y [ 1 0 ] ;
if ( ( F = f o p e n ( " i n p u t . t x t " , " r t " ) ) == NULL)
{
ShowMessage(" ");
return;
}
while (! feof(F))
1
fscanf(F, "%*s %*s %le %*s %*s %le", &X[i], SY[i]);
428
4
fclose(F);
"%*s" .
sscanf swscanf ,
, ,
buffer. .
,
sscanf. ,
:
char S [ 2 5 6 ] ;
while ( ! f e o f ( F ) )
{
fgets(S, 256, F) ;
s s c a n f ( S , "%*s %*s %le %*s %*s %le", & X [ i ] , S Y [ i ] ) ;
,
"v", , , , va_list. , . , fscanf.
#include <stdio.h>
#include <stdarg.h>
int r e ( F I L E *F,char * f m t ,
...)
va_list arg;
int cnt;
va_start(arg, f m t ) ;
cnt = v f s c a n f ( F , f m t , arg);
va_end(arg);
return(cnt);
fscanf ( ) . , ,
, - fscanf:
- , ..
SecondOf
.
. . DayOf .
SecondOfTheMinute
.
. . DayOf .
429
SecondsBetween
.
DateUtils.hpp.
tinclude <DateUtils.hpp>
extern PACKAGE int
fastcall
SecondsBetween(const System::TDateTime ANow,
const System::TDateTime AThen);
extern PACKAGE double
fastcall
SecondSpan(const System::TDateTime ANow,
const System::TDateTime AThen);
SecondsBetween SecondSpan
ANow AThen TDateTime. SecondsBetween .
SecondSpan ,
, .
i 0, 0,998999434523284.
1 2 EncodeDateTime . - (
). SecondsBetween ,
SecondSpan , .
SecondSpan
.
. . SecondsBetween .
SelectDirectory
.
FileCtrl.hpp\
tinclude <FileCtrl.hpp>
extern PACKAGE bool
f a s t c a l l SelectDirectory(
const A n s i S t r i n g Caption,
const W i d e S t r i n g Root, A n s i S t r i n g S D i r e c t o r y ) ;
enum TSelectDirOpt
{sdAllowCreate, sdPerformCreate,
sdPrompt);
typedef Set<TSelectDirOpt, sdAllowCreate, sdPrompt>
TSelectDirOpts;
extern PACKAGE bool
fastcall SelectDirectory(
AnsiString SDirectory,
TSelectDirOpts Options, int H e l p C t x ) ;
430
SelectDirectory
Windows , , .
. .
Windows (), . 4.6. Caption ,
( . 4.6. Root ,
. Root
. SelectDirectory . 4.6
Root = "d:\\". Root ,
(. 4.6 ), .
6)
%XP(D:)
-gj Documents and Settings
FrontPage webs
B-jjJl Program Ftes
I - Adobe
i frfij ahead
i f-fij Borland
I Eb3l CBulder6
I -Q Bin
- DOCUMENTATION
Examples
K
(|
ffi IJ
EMO SYSTEM (:)
* (D:)
* PROG (
-( TESTS (F:)
! 3 ) CDExampD
i Igjj DATABASE
i-Q CURRENCY
::::** DRTRU^F
OK
OK
. 4.6. () () Root
Directory .
true, .
, ,
false.
. , , . :
#include <FileCtrl.hpp>
AnsiString Dir;
i f ( S e l e c t D i r e c t o r y ( " ", "", D i r ) )
Dir = InputBox(" ",
" :", D i r ) ;
else
(
Application->MessageBox(" ",
" ! " , MB_ICONSTOP);
Application->Terminate();
431
SelectDirectory ,
. 4.6 , Root .
, SelectDirectory
true. ,
Input Box. , 4.7 . ,
, . . 4.6 , Application.MessageBox ,
. 4.7 , .
]
|FADATABASE\DBACCESS
1 Cancel
6)
. 4.6.
SelectDirectory. (. 4.8). - ,
. Directory, , . SelectDirectory Directory,
. HelpCtx
, . Options
:
sdAllowCreate
sdPerformCreate
sdAllowCreate ,
.
sdPrompt
sdAllowCreate. ,
, .
( ) sdPerformCreate Options, . sdPerformCreate ,
.
Options , ,
.
SelectDirectory , :
tinclude <FileCtrl.hpp>
AnsiString Dir = " d : \ \ " ;
if (SelectDirectory(Dir, TSelectDirOpts() sdAllowCreate
sdPerformCreate sdPrompt, 0 ) )
432
. 4.8
JD.\ProgramFiles\Bo[|and\CBijilder6
Files: ("."I
Directories:
I Bin
QDoc
-] DOCUMENTATION
|SSd:[:<p]
OK
Cancel
. 4.9
The;
, SelectDirectory . : . 4.8 4.9 . (. 4.9) . , Options [sdAllowCreate, sdPerformCreate]. . - , Options [sdAllowCreate], . . (. 4.8) .
SendMessage API Windows
API Windows, , .
winuser.
LRESULT SendMessage(
HWND hWnd,
// -
UINT Msg,
//
WPARAM wParam, //
LPARAM IParam //
433
SendMessage , , . , . , , , .
SendMessage PostMessage. .
hWnd , .
HWND_BROADCAST,
, , , , .
Msg . wParam 1 .
, , .
, hWnd, Find Window.
, hWnd = HWND_BROADCAST
, RegisterWindowMessage.
SendMessage(Form2->Handle,WM_CLOSE,0,0);
Form2 WM_CLOSE, .
SendMessage Form2,
Handle. WM_CLOSE ; wParam IParam .
SendMessage(FindWindow("SciCalc",""), W M _ C L O S E , 0 , 0 ) ;
FindWindow ,
WM_CLOSE. FindWindow SciCalc . Windows .
. . FindWindow.
set_new_handler
set_new_handler , .
new.h.
new_handler set_new_handler(new_handler m y _ h a n d l e r ) ;
typedef void ( * p v f ) ( ) ;
pvf _new_handler;
new (. . 1 . 1.11)
, . bad_alloc,
catch. bad_alloc,
, -
434
, , (, OnCreate )
set_new_handler(Fl);
new, bad_alloc, ( ). , .
, new, ,
.
bad_alloc, ,
set__new h a n d l e r ( 0 ) ;
new NULL.
, , NULL , new.
Set8087CW FPU
FPU.
. . _contro!87 FPU.
SetExceptionMask
FPU.
. . GetExceptionMask .
SetPrecisionMode
FPU.
. . GetPrecisionMode .
SetRoundMode
FPU.
. . GetRoundMode .
435
HINSTANCE ShellExecute (
HWND hwnd,
//
LPCTSTR IpOperation, //
LPCTSTR IpFile,
//
LPCTSTR IpParameters,//
LPCTSTR IpDirectory, //
INT nShowCmd
//
);
ShellExecute Windows.
,
. , ,
.doc, Word. , , "file.doc" Word "file.doc". ShellExecute .
, .
ShellExecute
tinclude "ShellAPI.h"
ShellAPI, .
C-l-+Builder .
hwnd , . Handle.
IpOperation , . "open"
() "print" (). 32- Windows
: "explore" () Windows
. IpOperation NULL, "open".
IpFile ,
.
IpParameters , , IpFile
. IpFile , , IpParameters NULL.
IpDirectory , .
nShowCmd . :
SW_HIDE
SW_MINIMIZE
() Z-
.
436
SW MAXIMIZE
() .
SW_RESTOKE
.
, (
, SW_SHOWNORMAL).
SW_SHOW
SW_SHOWDEFAULT
SW_ STARTUPINFO,
CreateProcess , .
Show Window , .
SW_SHOWMAXIMIZED
().
SW_SHOWMINIMIZED
( ).
SW_SHOWMINNOACTIVE ( ). ,
.
SW_SHOWNA
. ,
.
SW_SHOWNOACTIVATE
.
, .
SW_SHOWNORMAL
.
, (
, SW_RESTORE).
SW_RESTORE, . , .
Windows, PIF .. .
ShellExecute DDE . 32, .
"file.doc", ..
Word ( .doc), .
:
ShellExecute(Handle,NULL,"file.doc",NULL,NULL,SW_RESTORE);
, , , IpOperation:
ShellExecute(Handle,"print","file.doc",NULL,NULL,SW RESTORE);
437
.
Word, .doc, file.doc, Word
, file.doc Word.
Windows :
ShellExecute(Handle,"open","Calc",NULL,NULL,SW_RESTORE);
c:\Program Files\Borland:
ShellExecute (Handle,"open","c:\\Program Files\\Borland",
NULL,NULL,SW_RESTORE);
ShellExecute(Handle,"explore","c:\\Program Files\\Borland",
NULL,NULL,SW_RESTORE);
c:\Program Files\Borland.
SHGetFilelnfo
API Windows,
: , , .
ShellAPI.h.
tinclude <ShellAPI.h>
unsigned int SHGetFileInfoA(const char * pszPath,
unsigned long dwFileAttributes,
__SHFILEINFOA *psfi,
unsigned int cbFilelnfo,
unsigned int u F l a g s ) ;
HICON
ilcon
int
dwAttributes
DWORD
szDisplayName
char 80
szTypeName
char 80
uFlags :
438
SHGFI_ATTRIBUTES
SHGFI_DISPLAYNAME
SHGFI_EXETYPE
SHGFI_ICON
SHGFI_ICONLOCATION
SHGFI_LARGEICON
SHGFI_LINKOVERLAY
SHGFI_OPENICON
SHGFI_PIDL
SHGFI_SELECTED
SHGFI_SHELLICONSIZE
SHGFI_SMALLICON
SHGFI_SYSICONINDEX
SHGFI_TYPENAME
SHGFI
USEFILEATTRIBUTES
. dwAttributes psfi.
.
szDisplayName psfi.
pszPath , (. ).
.
. hlcon psfi, ilcon. .
,
. szDisplayName psfi.
SHGFI_ICON, .
SHGFI_ICON,
.
SHGFI_ICON, , (, ).
, pszPath
ITEMIDLIST, .
SHGFI_ICON,
, .
SHGFI_ICON,
, .
SHGFI_ICON, .
. ilcon psfi.
.
. szTypeName psfi.
, dwFileAttributes.
, uFlags
SHGFI_EXETYPE. SHGetFilelnfo
:
0
LOWORD = NE (17744)
HIWORD = 3.0, 3.5 4.0
Windows
439
LOWORD = MZ (23117)
HIWORD = 0
LOWORD = (17744)\
Win32
HIWORD = 0
SHGetFilelnfo
. SHGFI_SMALLICON or SHGFI_ICON or SHGFI_
SYSICONINDEX SHGFIJLARGEICON or SHGFIJCON or SHGFI_SYSICONINDEX Windows.
.
, OpenDialogl . :
void _ fastcall TForml : :ButtonlClick (TObject *Sender)
{
TSHFilelnfo fi;
if (OpenDialogl->Execute () )
{
unsigned int W = SHGetFilelnfo (
(OpenDialogl->FileName) .c__str () , 0,
Sfi, sizeof(fi), SHGFI_EXETYPE) ;
if (W == 0)
ShowMessage (" '" + OpenDialogl->FileName +
"' ");
else if ( (LOWORD (W) == 744) && (HIWORD (W) > 0))
ShowMessage (" '" + OpenDialogl->FileName +
"' - Windows");
else if ( (LOWORD (W) == 23111) && (HIWORD (W) == 0))
ShowMessage (" '" + OpenDialogl->FileName +
"' - MS-DOS");
else if ( (LOWORD (W) == 17744) && (HIWORD (W) == 0))
ShowMessage (" '" + OpenDialogl->FileName +
"' - Win32");
. :
TImageList *SmallImages = new TImageList (Forml) ;
TImageList *LargeImages = new TImageList (Forml) ;
void _ fastcall TForml :: FormCreate (TObject *Sender)
(
TSHFilelnfo
fi;
440
( new)
Smalllmages Largelmages TImageList.
OnCreate Windows. Smalllmages , Largelmages .
TImageList. ,
TDrawGrid , DrawCell :
void
{
SmallImages->Draw(DrawGridl->Canvas, Rect. Lef t + 10, Rect. Top-t-10,
ARow * DrawGridl->ColCount + ACol,true);
}
DrawGridl, OnCreate :
DrawGridl->ColCount = 10;
DrawGridl->RowCount = ceil(SmallImages->Count / 10);
ShowMessage
.
Dialogs.hpp.
#include <Dialogs.hpp>
extern PACKAGE void
fastcall ShowMessage(constAnsiString Msg);
extern PACKAGE void _^fastcall ShowMessageFmt(constAnsiString Msg,
const System: .-TVarRec *Params,
const int Params_Size);
extern PACKAGE void
fastcall ShowMessagePos(.constAnsiString Msg,
int X, int Y) ;
, - .
,
, ..
.
ShowMessage,
. Msg.
.
ShowMessagePos , ShowMessage, X Y.
, . , .
ShowMessageFmt, . Msg (. . 3.1.3.3), Params Params_Size , Msg, . -
441
ShowMessage(" ");
ShowMessageFmt(" %d %d ",
OPENARRAY(TVarRec, ( N 1 , N 2 ) ) ) ;
, . 4.10.
. 4.10
,
ShowMessage (a), ShowMessageFmt ()
ShowMessagePos ()
[Project1
5 .
ShowMessagePos(" ",
Form2->Left, Form2->Top + Form2->Height);
Form2->Close();
Form2 (. 4.10 ),
2.
ShowMessageFmt
.
. . ShowMessage
.
ShowMessagePos
.
. . ShowMessage
.
Sign
.
442
Math.hpp.
Sign AValue.
:
0
AValue = 0
-1
+1
AValue < 0
AValue > 0
signal
.
. abort, raise .
_exit(3).
SIGBREAK
Ctrl-Break.
SIGFPE
, ,
, . _exit(l).
SIGILL
. _exit(l).
SIGINT
(,
Ctrl+C). INT 23h.
SIGSEGV
.
_exit(l).
SIGTERM
. _exit(l).
SIGUSR1,
SIGUSR2,
SIGUSR3
( Win32) ! , raise. .
443
signal , . ,
.
signal :
sig func . fane
: SIG_DFL , SIG_IGN , SIG_ERR . :
//
signal (SIGINT, SIG_ERR);
// SIGINT
signal(SIGINT, SIG_IGN);
, . , ,
SIGUSR1. Handl_SIGUSRl.
fptr:
typedef void
(*fptr)(int);
- :
signal(SIGFPE,
(fptr)Handl_SIGFPE);
Handl_SIGUSR SIGUSR1. :
raise(SIGUSR1);
. signal , , SIG_DFL. ,
, signal,
. signal.
Handl_SIGUSRl
SIGUSR1.
linclude <signal.h>
typedef void (*fptr)(int);
void Handl_SIGUSRl(int N)
{
if (...)
i
// :
signal(SIGFPE, (fptr)Handl_SIGFPE);
}
else exit(EXIT_SUCCESS);
}
,
. ,
. , , signal,
. , -
444
SIGUSR1 .
, . , , .
signal (SIGFPE,
(fptr) Handl_SIGFPE) ;
, , OnCreate .
raise
raise (SIGUSR1) ;
SimpleRoundTo
.
. . RoundTo .
Sleep
.
winbase.h.
Sleep ()
dwMilliseconds .
.
,
' Sleep (10000) ;
10 .
- ,
. ,
ProcessMessages Application.
, .
:
Sleep (10000) ;
ShowMessage ( "End" ) ;
10 .
: -
, , . :
f o r ( i n t i=l; i <= 100;
Sleep (100) ;
Application->ProcessMessages () ;
}
ShowMessage ("End") ;
10 . 100 Process-
445
Messages, Windows.
:
, ,
..
. . fgetc /
.
Sleep . Windows API. Linux
. Windows, , Linux .
- Timer Windows.
SmallPoint
.
. . Point .
spawn...
.
process..
#include <process.h>
int s p a w n l ( i n t mode, char *path, char * a r g O , a r g l ,
. . . , argn, N U L L ) ;
int _wspawnl (int mode, wchar_t *path, wchar_t *argO,
argl, ..., argn, NULL);
int spawnle(int mode, char *path, char *argO, argl,
..., argn, NULL, char *envp[]);
int wspawnle(int mode, wchar_t *path, wchar_t *argO,
argl, ..., argn, NULL, wchar_t *envp[]);
int spawnlp(int mode, char *path, char *argO, argl,
..., argn, NULL);
int wspawnlp(int mode, wchar_t *path, wchar_t *argO,
argl, ..., argn, NULL);
int spawnlpe(int mode, char *path, char *argO, argl,
..., argn, NULL, char *envp[]);
int _wspawnlpe(int mode, wchar_t *path, wchar_t *argO,
argl, ..., argn, NULL, wchar_t *envp[]);
int spawnv(int mode, char *path, char *argv[]);
int _wspawnv(int mode, wchar_t *path,
wchar_t *argv[]);
int spawnve(int mode, char *path, char *argv[],
char *envp[]);
int _wspawnve(int mode, wchar_t *path,
wchar_t *argv[], wchar_t *envp[]);
int spawnvp(int mode, char *path, char *argv[]);
int wspawnvp(int mode, wchar_t *path,
wchar_t *argv[]>;
int spawnvpe (int mode, char *path, char *argv[],
char *envp[]);
446
int
spawn... path, .
exec.... . spawn...
, exec..., mode, . :
P_WAIT
,
.
P_NOWAIT
. ID
, cwait
wait,
. 16- Windows
DOS.
P_NOWAITO
P_NOWAIT, ID ,
cwait wait .
P_DETACH
P_NOWAITO, ,
.
P_OVERLAY
.
, exec....
spawn... , :
L
argO,
argl, ..., argn. , .
argv[]
argO, argl, ..., argn. ,
.
,
PATH. path , , , PATH.
"",
.
env,
. "", .
spawn...
(argO), path. ,
. -
447
( , )
128 .
"1"
. .
NULL, .
"v"
, , .
NULL, , .
"" envp , .
< > = <>
448
, , . , :
if (spawnlp (P_WAIT, "arj ", " a r j " , "e", " d o c . a r j ", "al . txt",NULL) )
, ,
exec..., . spawn... , P_WAIT,
, . , P_NOWAIT, cwait wait:
int ID = spawnlp (P_ NOWAIT, " a r j " , "ar j " , "e d o c . a r j a l . t x t " , N U L L ) ;
if (ID == -1}
ShowMessage ( " a r j ");
else
{
if (wait (NULL) != ID)
ShowMessage (" ") ;
else
{
Memol->Clear () ;
Memol->Lines->LoadFromFile ("al . txt") ;
DeleteFile ("al .txt") ;
exit DOS.
, :
if (spawnlp (P_WAIT, " a r j .bat", " a r j .bat", " a l . t x t " , NULL) )
arj.bat , . , DOS.
spawnlp. , .
. .
449
POverlay.exe. ,
, , OMenage.exe.
. ,
. :
tinclude <vcl.h>
tpragma hdrstop
tinclude <process.h>
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR IpCmdLine, int)
I
spawnlp(P_WAIT,IpCmdLine,IpCmdLine, NULL);
spawnlp(P_OVERLAY,"POverlay.exe","POverlay.exe", NULL);
return 0;
spawnlp
, IpCmdLine.
spawnlp
POverlay.exe.
, POverlay.exe Editl. :
if(spawnlp(P_OVERLAY,"OMenage.exe","OMenage.exe",Editl->Text, NULL))
ShowMessage(" " + Editl->Text + " ;"+
" OMenage.exe");
POverlay.exe
( 10 ) OMenage.exe,
. OMenage.exe ,
POverlay.exe. , POverlay.exe, OMenage.exe.
: POverlay.exe Editl . . POverlay :
tinclude <vcl.h>
tpragma hdrstop
USERES("POverlay.res");
USEFORM("UOverlayl.cpp", Forml);
tinclude "UOverlayl.h" //
it
,
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR IpCmdLine, int)
try
Application->Initialize();
Application->CreateForm( classid(TForml), &Forml);
Forml->Editl->Text = IpCmdLine; // Editl
Application->Run();
catch (Exception &exception)
Application->ShowException (.exception) ;
return 0;
450
, C-H-Builder, ( ): ,
UOverlayl.h, Forml, , Editl , .
,
WinMain IpCmdLine .
POverlay , age :
spawnlp(PJ3VERLAY,"POVERLAY.exe","POVERLAY.exe", IpCmdLine, NULL);
sprintf
.
. . fprintf .
srand
.
. . random .
sscanf
.
. . scanf .
_status87 FPU
FPU.
float.h.
_status87 _statusfp
FPU (. . 1.9.3). , , . (. . _contro!87, _controlfp FPU, .
_statusfp _status87. Microsoft.
controls?, controlfp
_clear87. _clearfp. , ,
.
float ;
double = 1.5-100;
Labell->Caption = I n t T o H e x ( ( i n t ) _ s t a t u s 8 7 ( ) , 4 ) ;
x = ; //
Label2->Caption = I n t T o H e x ( ( i n t ) s t a t u s 8 7 ( ) , 4) ;
451
,
double , . Labell "0000", Label2 "0030", . , , (. . 1.9.3).
_statusfp FPU
FPU.
. . _status87 FPU.
StdDev
.
Math.hpp.
linclude <Math.hpp>
extern PACKAGE Extended
fastcall
StdDev(const double * Data, const int Data_Size);
StdDev
Data. Data_Size
, . ,
( ) .
, , , .
,
= StdDev(, 9 9 ) ;
100 , .
,
MeanAndStdDev.
. . random
.
StrCopy
.
SysUtils.hpp, string.h, wchar.h, mbstring.h.
452
4
extern PACKAGE char *
fastcall
StrECopy(char * Dest, const char * Source);
extern PACKAGE char *
fastcall
StrLCopy(char * Dest, const char * Source,
unsigned MaxLen);
extern PACKAGE char *
fastcall
StrMove(char * Dest, const char * Source,
unsigned Count);
char * strcpy(char *dest, const char *src);
wchar_t * wcscpy(wchar_t *dest, const wchar_t *src);
unsigned char *
_mbscpy(unsigned char *dest, const unsigned char *src);
char * strncpy(char *dest, const char *src, size_t maxlen);
wchar_t *
wcsncpy(wchar t *dest, const wchar_t *src, size_t maxlen);
unsigned char *
_mbsncpy(unsigned char *dest, const unsigned char *src,
size_t maxlen);
, StrECopy, . ,
char * = s t r c p y ( b u f f , " , b u f f " ) ;
buff.
StrECopy ,
. . ,
char *S1 = " 1", *S2 = " 2", S[20];
StrECopy(StrECopy(StrECopy(S,SI)," "),S2) ;
Source, , ,
.
453
StrMove ,
.
,
memmove, memcpy , ,
(. . memcpy ).
strcpy
.
. . StrCopy .
StrECopy
.
. . StrCopy .
StrLCopy
.
. . StrCopy .
StrLower
.
. . AnsiLowerCase .
strlwr
.
. . AnsiLowerCase .
StrMove
.
. . StrCopy .
strncpy
.
. . StrCopy .
StrPos
.
. . AnsiPos .
StrToCurr, StrToInt, StrToFloat
, .
SysUtils.hpp.
454
4
extern PACKAGE System::Currency fastcall
StrToCurrDef(const AnsiString S,
const System::Currency Default);
extern PACKAGE Extended
fastcall
StrToFloat (const AnsiString S) ;
extern PACKAGE Extended
fastcall
StrToFloatDef(const AnsiString S;
const Extended Default);
extern PACKAGE int
extern PACKAGE int
extern PACKAGE bool
S : StrToCurr
Currency, StrToInt , StrToFloat . ,
EConvertError.
"Def" , Default.
TryStrToInt S Value. , false.
, Editl Edit2. ,
catch:
try
System::Currency = StrToCurr(Editl->Text);
Extended R = StrToFloat(Editl->Text);
int I = StrToInt(Edit2->Text);
}
catch(EConvertError &)
{
//
Application->MessageBox(" ",
" ",
MB_OK+MB_ICONSTOP);
>
int i = StrToIntDef(Editl->Text, 0) ;
i , Editl.
, i .
StrToDate
.
SysUtils.hpp.
tinclude <SysUtils.hpp>
extern PACKAGE S y s t e m : : T D a t e T i m e
fastcall
StrToDate(const AnsiString S ) ;
extern PACKAGE S y s t e m : : T D a t e T i m e
fastcall
StrToDateTime(const A n s i S t r i n g S ) ;
'
455
StrToDate StrToDateDef S
TDateTime. StrToTime StrToTimeDef
S , StrToDateTime StrToDateTimeDef
, , .
, "Def" EConvertError, "Def" , Default,
.
, ,
, , DateSeparator ( Windows "."). ShortDateFormat: // , //
Windows, //.
2 , .
, ,
00-99. TwoDigitYearCent Window. TwoDigitYearCentury Window = 0, . , 1999 99 00 1999 1900 , 2000 2099 2000 .
TwoDigitYearCentury Window > 0, , . ,
, - , , , . ,
TwoDigitYearCenturyWindow = 50 1999" , 2000 (
1949 1950) 99 00 1999 2000 .
, , 2 3
, , TimeSeparator ( Windows ":"). , , .
, , .
. , 2002. ,
. "Def" .
1.5.2
StrToDate
01.05.2002
StrToTime
StrToDateTime
01.05.2002
456
StrToDate
StrToTime
StrToDateTime
1.5
01.05.2002
17:5
01.05.2002
17:05:00
17:05:00
17:5:7
17:05:07
17:05:07
1.5.2 17:5
01.05.2002
17:05:00
1.5.0 17:5:7
01.05.2002
17:05:07
StrToDateDef
.
. . StrToDate .
StrToDateTime
.
. . StrToDate .
StrToDateTimeDef
.
. . StrToDate .
StrToTime
.
. . StrToDate .
StrToTimeDef
.
. . StrToDate .
StrUpper
.
. . AnsiUpperCase .
strupr
.
. . AnsiUpperCase .
Sumlnt Sum
.
Math.hpp.
f i n c l u d e <Math.hpp>
457
. . random
.
SumOfSquares
.
Math.hpp.
tinclude <Math.hpp>
extern PACKAGE Extended
fastcall
SumOfSquares(const double * Data,
SumOfSquares
Data. Data_Size
, .
, SumsAndSquares.
. . random
.
SumsAndSquares
.
Math.hpp.
tinclude <Math.hpp>
extern PACKAGE void
fastcall
SumsAndSquares(const double * Data, const int Data_Size,
Extended &Sum, Extended SSumOfSquares);
SumsAndSquares Data
Sum SumOfSquares .
Data_Size ,
. SumsAndSquares ,
Sum SumOfSquares. ,
, ,
.
458
. . random
.
swprintf
.
. . fprintf .
swscanf
.
. . scanf .
system
.
process.h.
#include <process.h>
int system(const char *command);
int _wsystem(const wchar_t *command);
// DOS dir
// dir, txt
system("dir dir.txt");
// DOS mkdir, :\\ttt
system("mkdir c:\\ttt");
// Norton Commander
system("nc");
Time
.
. . Date .
TimeToStr
.
. . DateToStr
.
_tmain main
, main.
459
. . main .
Today
.
. . Date .
Tomorrow
.
. . Date .
TotalVariance
.
Math.hpp.
tinclude <Math.hpp>
extern PACKAGE Extended _ fastcall
T o t a l V a r i a n c e (const double * Data, const int Data_Size) ;
TotalVariance
Data :
1=1
, , Variance. PopnVariance. MeanAndStdDev.
Data_Size ,
.
. . random
.
TryEncodeDate
TDateTime _
.
. . EncodeDate TDateTime.
TryEncodeDateTime TDateTime
.
. . EncodeDate TDateTime.
TryEncodeTime
TDateTime _
.
. . EncodeDate TDateTime.
_tWinMain
Windows.
. . WinMain .
460
ungetc
.
. . fgetc / .
ungetch
.
. . fgetc / .
ungetwc
.
. . fgetc / .
UpperCase
.
. . AnsiUpperCase .
#include <stdarg.h>
typedef void _FAR *va_list;
void v a _ s t a r t ( v a _ l i s t ap, l a s t f i x ) ;
type va_arg (va__list ap, t y p e ) ;
void va_end(va_list ap) ;
average, Labell . , .
.
:
#include <stdarg.h>
void average(AnsiString mess,...)
{
double A = 0;
461
int i = 0, arg;
va_list ;
va_start (, mess);
while ((arg = va arg (ap, int)) != 0)
f
i++;
A += arg;
}
Forml >Labell->Caption = mess + "N = " +IntToStr(i) +
", = " + FloatToStr (A/i) ;
va_end(ap) ;
}
, , :
average (" : " , 4 , 2 , 3 , 5 , 4 , 0 ) ;
Labell :
: N = 5, = 3 , 6
average ,
( 0), N, :
void average (AnsiString mess, int N, . . . )
{
double A = 0;
va_list ap;
va_start(ap, N) ;
, , :
average (" : " , 5 , 4 , 2 , 3 , 5 , 4 ) ;
Variance
.
Math.hpp.
#include <Math.hpp>
extern PACKAGE Extended _ fastcall
Variance (const double * Data, const int Data_Size) ;
Variance
Data. Data_Size
, .
,
-
( ) . , , ,
, PopnVariance.
, StdDev MeanAndStdDev. , Sqr(StdDev(A)) = Variance(A).
462
. . random
.
vfprintf
.
. . fprintf .
vfscanf
.
. . scanf .
vfwprintf
.
. . fprintf .
vprintf
.
. . fprintf .
vscanf
( ).
. . scanf .
vsprintf
.
. . fprintf .
vsscanf
.
. . scanf .
vswprintf
.
. . fprintf .
vwprintf
.
. . fprintf .
wait
.
. . cwait .
wcscpy
.
. . StrCopy .
463
wcsncpy
.
. . StrCopy .
__wcslwr
.
. . AnsiLowerCase .
_wcsupr
.
. . AnsiUpperCase .
_wexec...
.
. . exec... .
_wfindfirst
,
.
. . findfirst .
_wfindnext
, _wfindfirst.
. . findfirst .
WinExec API Windows
API Windows, .
UINT W i n E x e c (
LPCSTR IpCmdLine, //
UINT uCmdShow
//
);
WinExec .
IpCmdLine , , , .
, Windows
:
, .
.
. Windows, GetSystemDirectorv.
Windows, GetWindowsDirectory.
PATH.
uCmdShow
Windows. :
464
SW_HIDE
SW_MINIMIZE
() Z-
.
SW MAXIMIZE
() .
SW_RESTORE
.
, (
, SW_SHOWNORMAL).
SW_SHOW
SW_SHOWDEFAULT
SW_ STARTUPINFO,
CreateProcess , .
ShowWindow , .
SW_SHOWMAXIMIZED
().
SW_SHOWMINIMIZED
( ).
SW_SHOWMINNOACTIVE ( ). ,
.
SW_SHOWNA
. , .
SW SHOWNOACTIVATE
. ,
.
SW_SHOWNORMAL
.
, (
, SW_RESTORE).
SW_RESTORE, . , .
Windows, PIF .. .
WinExec , 31. ,
.
WinExec Windows. WIN32, Win32
CreateProcess.
465
WinExec("file.exe",SW_RESTORE) ;
file.exe.
WinExec("nc",SW_RESTORE);
Norton Commander.
WinExec("COMMAND.COM",SW^RESTORE);
MS-DOS.
int i = W i n E x e c ( E d i t l - > T e x t . c _ s t r ( ) , S W _ R E S T O R E ) ;
if (i < 32)
ShowMessage(" "+ IntToStr ( i ) ) ;
,
Editl.
(char *), AnsiString. c_str().
, .
OpenDialog,
*.;*.com;*.pif;*.dat
*_*
Button ( ), .
OnClick :
if
(OpenDialogl->Execute () )
Windows MS-DOS.
466
WinMain
Windows.
winbase.
WinMain Windows
.
wWinMain Unicode,
Unicode. _tWinMain ,
.
hCurlnstance HINSTANCE . , Windows . API Windows (API Windows Windows, ).
hPrevInstance HINSTANCE
( ).
IpCmdLine LPSTR
, , . WinExec. CreateProcess .
nCmdShow , . ShowWindow.
Win32 , Windows: hPrevInstance NULL, IpCmdLine ,
, . , C++
WinMain, a main.
, WinMain, Windows .
.
WinMain . . 1.2.2.
wmain
C++ Unicode.
. . main .
_wmemcpy
.
.
. . memcpy -
467
_wmemset
.
. . memcpy .
wprintf
.
. . fprintf .
wscanf
( ).
. . scanf .
_wspavn...
.
. . spavn... .
_wsystem
.
. . system .
wWinMain
Windows.
. . WinMain .
YearOf
.
. . DayOf .
YearsBetween
.
DateUtils.hpp.
tinclude <DateUtils.hpp>
extern PACKAGE int
fastcall
YearsBetween(const
const
extern PACKAGE double
fastcall
YearSpan (const
const
System::TDateTime ANow,
System::TDateTime AThen);
System::TDateTime'ANow,
System::TDateTime AThen);
468
YearsBetween 1 , 0 .
i 1, 1,00205338809035.
1 2 EncodeDateTime 1 . -
YearSpan , , 2000 .
2001 2002 , YearsBetween 0, a YearSpan 0,999315537303217.
YearSpan
.
. . YearsBetween .
Yesterday
.
. . Date .
5
STL
\
5.1 STL?
STL , C++.
, , , ,
, , .
STL : ? , ,
, - . , .
. ,
STL, , . , , , ,
, , , . , ,
, STL ,
. , , STL .
, . , , STL
. , - - . .
.
, STL, C++.
STL , . ,
STL - . ,
STL. .
470
STLport, C++Builder
. ,
.
,
.
#define _STLP_DEBUG.
STL, ,
, , .. (. . 1.8.2). STL std.
STL
using namespace std;
STL. ,
, .
STL,
. ,
using std::swap;
swap STL.
std
. ,
std::swap(x, );
5.3 STL
STL . . 2.14.8 1.7.8.
. , , C++,
. , , , .. .
, STL ,
. , , , .
. , , , , , , sin cos. , .
. , , , ,
. STL
, , .
, STL, ?
, . , . . . .
STL
471
, , : , . ,
. .
, char *. ,
, , . ,
.
allocator, <memory>.
new delete (. . 1.11)
. ,
.
alloc ,
, , .
pthread_alloc,
, . pthread_alloc . , alloc, . ,
, , .
. , , .
, .
, ,
. , , .
- . , , - ,
.
-, , .
. , , .
, ,
. ,
, , .
,
, .
, STL, .
472
5.4
5.4.1
STL : string - - , vector,
valarray bitset (), list , queue deque , stack , set multiset , multimap , hash_set, hash_multiset, hash_map, hash_multimap , , - ( ).
, . , vector, list, deque, map.
. ,
, .
, queue stack deque. : string, valarray, bitset .
, , . . ,
, , , . . 5.4.3.
, . , , .
, , , .
, -
X:
X::value_type
X::iterator
X: :const_iterator
X: reference
X::const_reference
'
X::pointer
X::difference_type
,
X::size_type
,
X::reverse_iterator ,
X: :const_reverse_ , iterator
X::key_type
STL
473
, , X::iterator.
(. . 5.5),
. , II :
v e c t o r < i n t > : : i t e r a t o r II;
- , .
-:
begin
empty
end
/
iterator begin()
const_iterator begin() const
,
bool empty() const
true ( ),
iterator end ()
const_iterator end () const
,
size
swap
. : ,
, b
.
474
,
swap(a, b ) ;
b .
, b ,
a.swap(b);
b. swap (a) ;
swap (, );
. ,
swap , - swap . - .
-, , , , .
.
(. . 2.14.5).
. , X,
X () ;
b X , b . , ,
X b = ;
X b = X () ;
b = ;
b .
5.4.2
, . ,
.
, . , . 5.4.1, -, .
, .
assign
STL
475
back
/
reference back()
const_reference back() const
. *(a.end() - 1)
clear
void clear()
iterator erase(iterator position)
, position. , , ,
end(),
erase
front
insert
reference frontQ
const_reference front() const
. *(a.first())
iterator insert(iterator position, const T& x)
, position. ,
void insert(iterator position, size_type n, const T& x)
n ,
position
476
rend
resize
/
reverse_iterator rendQ
const_reverse_iterator rend() const
,
, ..
( a.beginQ - 1)
void resize(size_type sz)
sz
void resize(size_type sz, )
sz,
. :
V.erase(Il) ;
(1, 3, 4, 5, 6, 7, 8).
erase ,
, , erase . , II :
for(int i=l; i <= 5; i++)
V.erase(II) ;
: (1, 7, 8).
(, ),
12,
12 = V.begin () + 6;
V . e r a s e d l , 12);
insert , . , . ,
, .. , . ,
II
V . insert (II, 9);
9 , : (1,
9, 2, 3, 4, 5, 6, 7, 8).
V . i n s e r t ( I I , 3, 9 ) ;
3 9: (1, 9, 9, 9, 2, 3, 4, 5, 6, 7, 8).
insert - . ,
V
V.insertdl, V.end()-2, V . e n d ( J ) ;
STL
477
: (1, 7, 8, 2, 3, 4, 5, 6, 7, 8).
,
.
assign
insert , , , ,
.
V . a s s i g n (3, 9 ) ;
: (9, 9, 9);
resize , sz.
sz > size(), sz - size() .
, .
. , V
V . r e s i z e (10) ;
: (1, 2, 3, 4, 5, 6, 7, 8, , ).
V. resize (10, 9) ;
: (1, 2, 3, 4, 5, 6, 7, 8, 9, 9).
resize sz < size(), .
-, :
/
explicit T(const Allocator& alloc = Allocator())
. (. . 5.3),
explicit T(size_type n)
n , ,
T(size_type n, const T& value, const Allocator& alloc = Allocator())
n , value.
T(lnputlterator first, Inputlterator last, const Allocator& alloc = Allocator())
last first.
, first last, [first,
last), .. last.
, ,
.
5.4.3
,
, , - .
.
.
478
(. . 5.5.4). ,
, . .
:
template <class , class A l l o c a t o r = allocator<T> >
class vector (
int size = 0.
5 , 1.
V . insert ( V . begin () , 5, 1 ) ;
:
V . resize (5, 1) ;
:
V . assign (5, 1) ;
, , 1:
vector<int> V ( 5 , 1);
vector<int> V;
for (int i = 1; i <= 10; i+ + )
V.push_back ( i ) ;
1 10.
- . -, .
at
reference at(size_type n)
const_reference at(size_type) const
.
, n [0, size - 1]
capacity
reserve
void reserve(size_type n)
capacity,
STL
479
at . 0 size() - 1.
V . a t (0)
,
V . a t ( V . s i z e () - 1) )
.
, out_of_range. , , , . , , II , . :
try
V.at(II - V.begin());
<, 11>
}
catch(out_of_range)
1
ShowMessage(" ");
, , :
if (old capacity != V.capacity ( ) )
(
< >
old_capacity = V . c a p a c i t y ( ) ;
}
capacity .
reserve, , , . , . , ,
1000 ,
480
5
V.reserve(500);
C++Builder 6 ,
capacity 1000, .
reserve,
max_size(), length_error,
-
.
reserve . , - , , . , ,
C++Builder 6 . , , . ,
, -
, ,
reserve, .
. [],
. 0, 1
size(). ,
for (int i=0; i < V . s i z e -1; i++)
ShowMessage(V[i]);
,
, , . . 5.5.1 , , ,
.
. :
int v[10] = {1,2,3,4,5,6,7,8,9,10};
vector<int> V(v,v+10);
, V v, . .
vector. .
.
, , :
, ..
. ,
, ,
, . , -
. ,
, .
,
bool vector<bool>. , , , , ,
STL
481
, ,
. vector<bool>. . , vector<bool>
:
flip
void ()
: true false
swap
482
, valarray.
V *= 10;
, 10. , ?
valarray V, VI V2
:
V = 10 * V I ; // V[i] = 10 * VI [i]
V = VI + V 2 ; // V[i] = VI [i] + V2[i]
V = VI * V 2 ; // V[i] = Vl[i] * V2[i]
V VI, 10.
VI V2, V . . .
. V VI V2.
valarray -:
(shift) (cshift) ,
(sum), (min) () , , . (slice) . , , , . , ,
,
.
C++Builder 6 STL .
5.4.4
list. , .
.
. , ,
. 2.12.2 . , . , , (. . 5.5.4). (. 5.5.4),
.
,
.
. , .
list:
template <class , class Allocator = allocator<T> >
class list (
list.
. Allocator, . 5.3,
, .
STL
483
, .
, : Depl
Dep2.
#include <list>
tinclude <string>
using namespace std;
list<string> Depl, Dep2;
Depl .push back ( '") ;
Depl .push back( '") ;
Depl .push back ( '") ;
Dep2 .push back ( '") ;
Dep2 .push back ( '") ;
Dep2 .push back ( '") ;
merge
/
void merge(list<T, Allocator>& x)
, "<",
template<class BinaryPredicate>
void merge(list<T, Allocator>& x, BinaryPredicate comp)
,
comp,
pop_front
void pop_front()
sort
void sort()
"<"
template<class BinaryPredicate>
void sort(BinaryPredicate comp)
comp()
484
splice
/
void splice(iterator position, list<T, Allocator>& x)
position
void splice(iterator position, list<T, Allocator>& x, iterator i)
, i,
position
void splice(iterator position, list<T, Allocator >& x,
iterator first, iterator last)
, [first, last),
position
unique
void unique()
,
template <class BinaryPredicate>
void unique(BinaryPredicate binary_pred)
,
binary_pred
splice
. , .
, position.
. ,
D e p l . s p l i c e ( D e p l . b e g i n ( ) , Dep2);
STL
485
sort . ,
Depl.sort ;
"".
remove ,
. ,
Depl.remove("");
Depl "".
merge ,
. ,
Depl Dep2,
Depl.merge(Dep2);
, splice sort.
- .
. , find, algorithm :
tinclude <algorithm>
template <class Inputlterator, class T>
Inputlterator f i n d ( I n p u t l t e r a t o r f i r s t ,
const T& v a l u e ) ;
Inputlterator last,
first last ,
: [first, last), .. , first, , last. value
. , ,
last, . , , , Depl Dep2, , . , , :
tinclude <functional>
* f i n d ( D e p l . b e g i n ( ) , Depl.end , "") += " A . A . " ;
* f i n d ( D e p l . b e g i n ( ) , D e p l . e n d ( ) , "") += " . . " ;
"" " ..". find "..".
486
,
, .
:
list<string>::iterator I = find(Depl.begin(), Depl.end(), "");
*I += " A . A . " ;
* f i n d ( I , D e p l . e n d O , "") += " . . " ;
, . , ,
.
:
list<string>::iterator I = D e p l . b e g i n ( ) ;
while ( ( I = f i n d ( I , D e p l . e n d O , "") ) ! = D e p l . e n d O )
*I = "";
Depl.endO,
. ,
.
list. STL,
C-f+Builder 6, slist , . slist list. , . .
5.4.5
, ,
, ,
. . ,
, -
. ,
, .
, .. .
FIFO: . , .
,
. ,
- , .
, ,
.
deque (
). , , .
deque double-ended queue ( ).
deque vector (. . 5.4.2).
, . , , .
deque:
template <class , class A l l o c a t o r = allocator<T> >
class deque;
STL
487
, .
, Equ:
#include
tinclude <string>
using namespace std;
deque<string> Equ;
f o r ( i n t i=l
Equ. push_back( (" " + IntToStr ( i ) ) . c_str ( ) ) ;
std::string, . 5.6.
deque , -, .
5.4.3 vector, capacity reserve. , . , , s,
, :
s t r i n g s;
- VCL , , :
s = Editl->Text .c_str () ;
FIFO
Equ .push_back(s) ;
if ( ! Equ. empty () )
<
s = Equ. front () ;
Equ . pop_f ront () ;
)
else . . .
,
, , :
if ( ! Equ. empty () )
{
s = Equ. back () ;
Equ . pop_back ( ) ;
}
else . . .
488
, , . Container
, .
Container deque . , back(), push_back() pop_back().
,
# include <stack>
tinclude <string>
u s i n g namespace std;
stack<string> St;
deque string.
stack<string, vector<string> > St;
top
push
pop
/
reference top() { return c.back(); }
const_reference top() const { return c.back(); }
, ,
void push(const value_type& x) { c.push_back(x); }
void pop(){ c.pop_back(); }
() ( )
,
:
string s;
St.push (s);
:
if ( ! S t . e m p t y O ) s = S t . t o p O ;
:
i f ( ! St.emptyO) St.popO;
, .
queue , , , , .
queue,
queue, :
template <class , class Container>
class queue
STL
489
, ,
Container , .
Container deque . , front(), back(),
push_back() pop_back().
,
tinclude <queue>'
tinclude <string>
using namespace std;
queue<string> Que;
deque string.
queue<string, vector<string> > Que;
//
//
//
//
priority_queue .
vector (
) deque. , queue: empty(),
size(), top() - - , push (const value_type& x) , () .
,
, ().
,
. top.
pop.
.
# include <queue>
using namespace std;
priority_queue<int> PQ;
PQ.push(l);
PQ.push(lO);
PQ.push(S);
.
int i = PQ.top ( ) ;
10 ,
PQ.popO ;
10 , , , 5.
490
- less<T>.
. , PQ
:
priority_queue<int, vector<int>, less<int> >
PQ;
vector<int>,
,
less<int>. . . deque<int>,
. . ,
priority_queue<int, vector<int>, greater<int> > PQ;
, .
.
5.4.6
5.4.6.1
. . .
less<T>, . "<".
set multiset .
multimap
.
(multiset multimap),
(set ).
key_type. value_type ( set multiset ),
.
-, -:
find
lower_bound
STL
491
,
. ,
find .
5.4.6.2 multiset set
. , , .
less<T>,
. multiset set , set
. . <set>.
, .
tinclude <set>
using namespace std;
multiset<int> MS;
MS.insert (7);
MS.insert (4) ;
MS.insert (4) ;
MS.insert (1) ;
MS.insert(9);
// {1, 4, 4, 7, 9}
int A [ 4 ] = { 6 , 4, 1, 10} ;
set<int> M S I ( A , A + 4 ) ;
/ / { I , 4 , 6 , 10}
m u l t i s e t < i n t , greater<int> > M S 2 ( M S . b e g i n ( ) , M S . e n d O ) ;
// {9, 7, 4, 4, 1}
m u l t i s e t < i n t > MS3;
MS3.insert(MS.begin(), M S . e n d O ) ;
// (1, 4, 4, 7, 9}
MS multiset insert. , , , , .
MS1 set . , , .
, , ,
.
MS2 , MS. less greater.
.
MS3 insert,
, . MS3 MS.
.
true,
. , , MS4 MS, , ,
-
492
. (. - . 5.8). :
struct comp
{
bool operator () (const int II, const int 12) const
{
if ( (II % 2) == (12 % 2) )
return (II < 12) ;
else return (II % 2);
:
multiset<int, comp > MS4 (MS. begin ( ) , MS. end ) ;
, : {1, 7, 9, 4, 4}.
.
:
AnsiString S = "";
multiset<int>: : iterator It;
It = MS. begin () ;
while (It != MS. end ( ) )
S += IntToStr (*It++) + " \ t " ;
ShowMessage (S) ;
It,
S.
, , Editl:
int i = MS. count (StrToInt (Editl-XText) ) )
, "4", i 2,
"5", i 0.
find (. . 5.4.6.1) , , Editl:
if
==MS.end())
MS . erase (MS . f i n d (4 ) ) ;
, 4. ,
find , .
, , 4,
.
STL
493
tinclude <algorithm>
multiset<int> MS4;
insert_iterator<multiset<int> > I t l ( M S 4 , M S 4 . b e g i n ( ) ) ;
set_union (MS. begin () , M S . e n d O , MSI. begin ( ) , M S l . e n d O , I t l ) ;
MS4, Itl ,
set_union (. . 5.7) MS MS1.
, . ,
, , . ,
- , m , max(n, m) . MS4 : {1, 4, 4, 6, 7, 9, 10}.
set_union set_intersection,
: , , , . , -
, m , min(n, m)
. MS4 : {1, 4}.
set_difference,
: , , . " MS4 :
{4, 7, 9}.
, set_symmetric_difference, , , , , .
MS4 : {4, 6, 7, 9, 10}.
494
ShowMessage(" " + I n t T o S t r ( * p . f i r s t ) ) ;
else ShowMessage(" " + I n t T o S t r ( * p . f i r s t ) +
" ");
, , insert, .
5.4.6.3 multimap
. : .
pair<const Key, Data>. Key , Data . , , , , .
.
, . less<T>,
, "".
multimap ,
. .
<>.
, (),
( ). :
tinclude <map>
using namespace std;
typedef multimap<AnsiString, int> TMM;
TMM MM1;
MM1.insert(TMM::value_type("", 1 9 7 0 ) ) ;
MM1. insert (TMM: : value___type ("", 1980) ) ;
MM1.insert(TMM::value_type("", 1975));
MM1.insert(TMM::value_type("", 1960));
,
multimap<AnsiString, int>.
1 :
1980
1960
1975
1970
, ( )
.
, :
map<AnsiString, int, greater<AnsiString> > 2(1.begin(), M M l . e n d O ) ;
2 map, 1.
greater less. 2
:
STL
495
1970
1975
1980
,
, .
:
AnsiString S = "";
: : iterator It = 1 .begin ();
while (It != MMl.endO)
{
S += (*It). first + " - " + IntToStr( (*It) .second) + "\n";
ShowMessage (S) ;
It .
first second. :
- 1980
- I960
- 1975
1970
( ):
if ( ( I t = 1. f i n d ("" ) ) == M M l . e n d O )
ShowMessage ("" ) ;
else (*It) .second = 1976;
find,
.
multimap . , multiset set.
5.5
5.5.1
. ,
.
, . ,
: istream_iterator ostream_iterator, , . : .
, .
, ,
. , .
STL 6 . (Trivial Iterator)
. (Input Iterator) .
496
'
_
^
5
.
(Output Iterator) , .
, . (Forward
Iterator) , (Bidirectional Iterator)
, (Random Access Iterator)
. : , ? , ,
, , .
, , .
. - begin() , .
- end() , . , ,
: [ begin(), end()). To , end(). end() begin()
.
(*) , .
. , ,
* = ;
,
= *;
.
, .
(++). , .
. . ,
, , . , ,
++;
++;
. ,
, (. . 5.4.3) V, . :
#include <vector>
using namespace std;
vector<int> V;
f o r ( i n t i = 1; i <= 10;
V.push__back ( i ) ;
STL
497
- push_back
V 10 , 1 10.
iterator. . V :
v e c t o r < i n t > : : i t e r a t o r II = V . b e g i n ;
*!!++ = 11;
*I1 = 12;
Labell->Caption = *(++!!);
II , . 11 . 12 (
). II
( ) Labell .
, . , end(). , ,
:
II = V . b e g i n ( ) ;
while (II != V . e n d O )
ShowMessage(*!!++);
. V ,
Num, , , 10.
:
v e c t o r < i n t > : : i t e r a t o r II = f i n d ( V . b e g i n ( ) , V . e n d O , N u m ) ;
if (II != V . e n d O )
{
*I1 *=, 10;
ShowMessage(": " + (AnsiString)(II - V . b e g i n ( ) + 1) +
", :" + * I 1 ) ;
)
else ShowMessage(" ");
II , find. :
#include <algorithm>
template <class Inputlterator, class T>
Inputlterator f i n d ( I n p u t l t e r a t o r f i r s t ,
const T& v a l u e ) ;
Inputlterator last,
498
:
Ir = V . r b e g i n ( ) ;
w h i l e d r != V . r e n d f ) )
ShowMessage(*Ir++);
.
iterator reverse_iterator const_iterator const_reverse_iterator.
, . .
, ,
. ( , , ) distance.
:
template <class Inputlterator>
inline i t e r a t o r _ t r a i t s < l n p u t l t e r a t o r > : : d i f f e r e n c e _ t y p e
distance(Inputlterator first, Inputlterator l a s t ) ;
template <class Inputlterator, class Distance>
void distance ( I n p u t l t e r a t o r f i r s t , Inputlterator last,
Distances n ) ;
first last,
. ,
Labell->Caption = d i s t a n c e ( V . b e g i n ( ) , V . e n d ( ) ) ;
Labell , V.
Label2->Caption = d i s t a n c e ( V . b e g i n ( ) , I I ) ;
Label2 ,
II.
distance STL.
, .
. , ( ,
) n first last.
, , n , .
distance ,
first , last.
.
distance ( ), , first , last. .
. :
Labell->Caption = V . e n d O - V.begin ;
Label2->Caption = II - V.begin ( ) ;
, . , :
int V [ 1 0 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 1 0 } ;
int * Vbegin = V, * Vend = V + 10;
int * II;
STL
499
,
. Vbegin Vend begin() end().
II , .
:
II = Vbegin;
w h i l e ( I I != Vend)
ShowMessage {'*!!++) ;
Num
10 :
II = find(Vbegin, Vend, Num) ;
i f ( I I != Vend)
(
*I1 *= 10;
ShowMessage(": " + ( A n s i S t r i n g ) ( I I - V . b e g i n ( ) + 1) +
", :" + *I1);
}
else ShowMessage(" ");
, , Vbegin Vend. , ,
, . , , STL ( find). STL .
5.5.2
.
. .
(*), (==) (>) . ,
C++, , (.) . , it , , m it>m, , , (*it).m.
, , ,
. ,
. , ,
. ,
, .
, . - , ..
. , .
istream_iterator. , . ,
cm .
500
. :
istream_iterator(istreami s)
s .
cin . :
istream_iterator()
.
.
,
:
#include<iterator>
#include <iostream>
#include <conio.h>
using namespace std;
int main(void)
{
istream_iterator<int>
int II = *!++;
int 12 = *I;
I (cin);
main I
. ,
II . 12 ,
getch
- .
. ,
, -. ,
, :
int II = *1;
I++;
int 12 = *1;
, STL .
. :
#include<vector>
#include<iterator>
#include <iostream>
finclude <conio.h>
using namespace std;
int main(void)
{
istream_iterator<int> I (cin);
V.pusHJaack(*!++);
V.push_back(*I);
copy(V.begin(), V.end(), ostream_iterator<int>(cout, " "));
getch () ;
}
:
#include <algorithm>
STL
501
.
istream_iterator<mt>(). , . , V
.
Enter,
( Ctrl-Z), - (, ), .
, V, back_inserter. , ( V).
, , ,
, .
, , C++Builder 6 .
- .
, .
5.5.3
. .
, . .
, , . , I
,
*-I = t;
t. ^
, .
502
, . . :
*I = tl;
++I;
*I = t2;
:
*!++ = tl;
*I = t2;
. , , :
*I = tl;
*I = t2;
STL . .
: insert_iterator ,
front__insert_iterator , back_insert_iterator , ostream_iterator
. .
insert_iterator. . :
insert_iterator (Containers , Container :: iterator i)
, , i , .
, , . 1, ,
i, , i . iterator (. . 5.5.1),
.
. V , ,
insert_iterator<vector<int> >
*!!++ = Numl;
*I1 = Num2;
II (V, V . begin () + 3) ;
Numl Num2, ,
2. 2
.
STL, C++Builder 6,
. . , . . , , , - ,
C++Builder, .
, . , , (.
. 5.4.6),
.
STL
503
, , .
front_insert_iterator insert_iterator, . front_insert_iterator . front_insert_iterator
insert_iterator, . insert_iterator, , . , 1 . front_insert_iterator , , .
. , , , ,
front_insert_iterator . list:
#include
tinclude <iterator>
list<int> L;
front_insert_iterator<list<int> > 12 (L) ;
for(int i = 1; i <= 5; i-n-)
*I2++ = i; '
list<int>: : iterator I = L. begin (),
while (I != L.endO )
ShowMessage (*!++) ;
L 12
front_insert_iterator. : 5, 4, 3, 2, 1,
.
back_insert_iterator front_insert_iterator ,
. :
back_insert_iterator<list<int> >
12 (t) ;
: 1, 2, 3, 4, 5.
ostream_iterator. . . :
ostream_iterator (ostreams s)
ostream_iterator (ostreams s, const char* delim)
s . ,
. s . t s t.
delim , .
t s t delim.
,
ostream_iterator<int> lout (cout, " " ) ;
*Iout = Numl;
++Iout;
*Iout = Num2;
Numl
Num2, , .
504
5.5.4 ,
, , ,
: , .
-
, , . , . , , . ,
, .
. , . , , list, list<T>::iterator.
. .
, , "+", "-", "+=", " =", .
,
( > 0) ( < 0). "[]"
, ,
. , : "<", "<=", ">", ">=", .
, i j
X, , :
i +=
i+
n+i
i -= n
i< j
true, i j; , i j
STL
505
iterator const_
iterator vector deque.
. 5.4. , , "[]" "<". V,
.
, , , . :
vector<int>::iterator II;
for (II = V.begin () + 1; II < V . e n d O - 1; I1++)
ShowMessage(": " + IntToStr(Il - V . b e g i n O + 1) +
", : " +
IntToStr(II[1] - II [-1]));
II V.begin() + 1, ..
. "+".
"<",
"-". , ShowMessage, , II V.beginO. "[]". 11[1] ,
, 11[1] , .
5.6 string
string
, C++ char *. , ,
string,
, char *. , ,
string - , AnsiString,
C++Builder.
string :
typedef basic_string <char>
string;
, string basic_string.
wstring, wchar_t. <string>.
string :
#include <string> .
using namespace std;
string S(" ! " ) ;
string S = " !";
.
string, AnsiString,
. :
string SI (2);
string SI ( '1);
. ,
- :
506
5
s t r i n g S2;
52 = ' ! ' ;
string, char *,
. .
( ) - length.
S S.length() 8.
[ind]. 0. length - 1. , S[0] "", S[7] "!".
[ind] . , , S[8] . at(ind). , [ind], (, S.at(8)) .
() "+",
AnsiString. . ,
S = S1 + ' ' + S2;
S S1 S2, .
"+=". ,
S += S2;
S S2. append:
S.append(32);
.
.
- compare, .
,
SI.compare(S2)
0, S1 S2 , , SI < S2,
, SI > S2.
compare.
.
,
SI.compare(1, 3, S2)
S1 S2. compare . .
, .
compare, . , . ,
SI.compare(0, 4, 52, 1, 4)
S1
S2.
STL
507
substr .
, . ,
S1 = S2.substr(1, 4 ) ;
S1 S2, ( 1)
4 .
swap, . ,
Sl.swap(S2) ;
S1 S2, S2 S1.
insert
. ,
SI.insert(4,S2);
S1 4 , 2 (.. ). , , , ,
.
, . find rfind .
. ,
string::npos.
,
string SI = " , . " ;
s t r i n g S2= "";
int i = S l . f i n d ( S 2 ) ;
int j= S l . . r f i n d ( S 2 ) ;
i = 2, j = 26.
, , S
"" "". :
string S2= "", S3 = "";
int i;
if ( (i = S l . f i n d ( S 2 ) ) != s t r i n g : : n p o s )
{
SI.erase(i, S2.length());
S I . i n s e r t (i, S 3 ) ;
}
else ShowMessage(" ");
508
5
string S2 = "", S3 = "";
int i = 0;
while ( (i = Sl.find(S2, i+1)) != string::nposj
{
SI.erase (i, S2.length ());
SI.insert (i, S3);
}
int i = S l . f i n d _ f i r s t _ o f ( " . ,
:;");
S2 SI S3.
string.
. , string STL
, . , , string . . ,
API Windows , , char *.
-f+Builder AnsiString.
.
char *
string. :
char * Sen = "";
string S = Sch;
AnsiString
string . - c_str()
AnsiString, AnsiString char *.
string. , string - VCL,
AnsiString, :
string S = ( E d i t l - > T e x t ) . c _ s t r ( ) ;
string SI = (Memol->Text). s t r ( ) ;
STL
509
string char *,
ShowMessage.
Editl>Text, AnsiString.
5.7
5.7.1
STL 100 . , - . ,
STL, . [2]. .
. . 5.8.
,
. , .
, STL. , ,
. ,
. ,
, , .
#include <algorithm>
, ,
: first last. , [first, last), .. ,
, first, , last.
first beginQ, last end(), .
:
( <),
. . , , , , .
, , . . 5.8 - .
.
510
5.7.2
fill
/
template <class Forwardlterator, class T>
void fill(Forward!terator first, Forwardlterator last,
const T& value);
[first, last) value
template <class Outputlterator, class Size, class T>
fill n
void fill_n(OutputIterator first, Size n, const T& value);
n , first,
value
template <class Forwardlterator, class Generator>
generate
void generate(Forward!terator first, Forwardlterator last,
Generator gen);
[first, last) , gen.
, ,
generate_n template <class Outputlterator, class Size, class Generator>
void generate_n(Output!terator first, Size n, Generator gen);
n , first, ,
gen. , ,
5.7.3
/
adjacent_find template <class Forwardlterator> Forwardlterator
Forwardlterator adjacent_find(Forward!terator first,
Forwardlterator last);
count
STL
count if
find
find end
find if
511
/
template<class Inputlterator, class Predicate>
typename iterator_traits<lnputlterator>::difference_type
count_if(lnputlterator first, Inputlterator last,
Predicate pred);
template <class Inputlterator, class Predicate, class Size>
void count_if(Inputlterator first, Inputlterator last,
Predicate pred, Size& n);
, [first, last) , pred.
. n
template <class Inputlterator, class T> Inputlterator
Inputlterator find(lnputlterator first, Inputlterator last,
const T& value);
, [first, last), value. , last
template <class Forwardlteratorl, class Forwardlterator2>
Forwardlteratorl find_end(
Forwardlteratorl firstl, Forwardlteratorl last I,
Forwardlterator2 first2, Forwardlterator2 Iast2);
template <class Forward Iteratorl, class Forwardlterator2,
class BinaryPredicate>
Forwardlteratorl find_end(
Forwardlteratorl firstl, Forwardlteratorl lastl,
Forwardlterator2 first2, Forwardlterator2 Iast2,
BinaryPredicate pred);
- [first2, Iast2) [firstl, lastl). , ,
lastl, .
[first2, Iast2) [firstl,
lastl). pred
template <class Inputlterator, class Predicate>
Inputlterator find_if(lnputlterator first, Inputlterator last,
Predicate pred);
, [first, last), ,
pred. , last
512
find first of
search
search n
5
/
template <class Forwardlteratorl, class Forwardlterator2>
Forwardlteratorl find_first_of(
Forwardlteratorl firstl, Forwardlteratorl lastl,
Forwardlterator2 first2, Forwardlterator2 Iast2);
template <class Forward Iteratorl, class Forwardlterator2,
class BinaryPredicate>
Forwardlteratorl find_first_of(
Forwardlteratorl firstl, Forwardlteratorl lastl,
Forwardlterator2 first2, Forwardlterator2 Iast2,
BinaryPredicate pred);
- [first2, Iast2) [firstl, lastl).
, , lastl,
. [first2, Iast2) [firstl, lastl).
template <class Forwardlteratorl, class Forwardlterator2>
Forwardlteratorl search(
Forwardlteratorl firstl, Forwardlteratorl lastl,
Forwardlterator2 first2, Forwardlterator2 Iast2);
template <class Forwardlteratorl, class Forwardlterator2,
class BinaryPredicate>
Forwardlteratorl search (
Forwardlteratorl firstl, Forwardlteratorl lastl,
Forwardlterator2 first2, Forwardlterator2 Iast2,
BinaryPredicate binary_pred);
[first2, Iast2) [firstl, lastl). , , lastl,
. [first2, Iast2)
[firstl, lastl). pred
template <class Forwardlterator, class Size, class T>
Forwardlterator search_n (Forwardlterator first,
Forwardlterator last, Size count, const T& value);
template <class Forwardlterator, class Size, class T,
class BinaryPredicate>
Forwardlterator search_n (Forwardlterator first,
Forwardlterator last, Size count, const T& value,
BinaryPredicate pred);
[first, last) ,
count , value
( ) , , pred value (
). , , lastl,
STL
513
5.7.4
/
binary _search template <class Forwardlterator, class T>
bool binary_search(ForwardIterator first,
Forwardlterator last, const T& value);
equal_range
lower bound
514
upper_boimd
.
<, ,
. - (. . 5.8)
comp, . , value. , .
lower_bound , equal_range. upper_bound
, equal_range.
, value, .
5.7.5
equal
STL
515
516
5.7.6
/
template <class Inputlterator, class Outputlterator>
5.7.7
/
partition template <class Bidirectionallterator, class Predicate>
Bidirectionallterator partition (Bidirectionallterator first,
Bidirectionallterator last, Predicate pred);
[first, last) , , pred, , . , , ..
, pred.
.
stable_partition
STL
random
shuffle "
517
replace_
copy
!_
copy_if
replace_if
reverse
518
/
reverse,
rotate
rotate_
copy
stable_
partition
swap
swap_
ranges
STL
519
/
transform template <class Inputlterator, class Outputlterator,
class UnaryOperation>
Outputlterator transform (Inputlterator first, Inputlterator last,
Outputlterator result, UnaryOperation op);
template <class Inputlteratorl, class Inputlterator2,
class Outputlterator, class BinaryOperation>
Outputlterator transform (
Inputlteratorl firstl, Inputlteratorl lastl,
Inputlterator2 first2, Outputlterator result,
BinaryOperation binary_op);
[first, last) (,
, )
, result. result
, .
[firstl, lastl) , first2 binary_op (, )
, result. result ,
5.7.8
/
accumulate template <class Inputlterator, class T>
accumulate (Inputlterator first, Inputlterator last, init);
for each
520
accumulate :
#include <numeric>
. 5.8.
5.7.9
remove
[first, last) ,
value. ,
. . . , ,
. ,
: container.erase(remove(first,last,value),container.end());
remove_copy template <class Inputlterator, class Outputlterator, class T>
Outputlterator remove_copy(lnputlterator first,
Inputlterator last, Outputlterator result, const T& value);
result
[first, last), , value. ,
remove_
copy_if
remove if
STL
unique
521
5.7.10
inplace_
merge
522
merge
/
template <class Inputlteratorl, class Inputlterator2,
class Outputlterator>
Outputlterator merge(lnputlterator firstl, Inputlteratorl lastl,
Inputlterator2 first2, Inputlterator Iast2,
Outputlterator result);
STL
partial_
sort_copy
523
/
template <class Inputlterator, class RandomAccessIterator>
void partial_sort_copy (Inputlterator first, Inputlterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last);
template <class Inputlterator, class RandomAccessIterator,
class Compare>
void partial_sort_copy (Inputlterator first, Inputlterator last,
RandomAccessIterator result_first,
RandomAccessIterator result_last,
Compare comp);
, : [first, last) ,
, [result_first, result_last), , sult_first. , , ,
: ,
n = min{ last - first, result_last - result_first}. <, comp
sort
stable sort
524
5.7.11
/
template <class Inputlteratorl, class Inputlterator2>
includes
bool includes (Inputlteratorl firstl, Inputlteratorl lastl,
Inputlterator2 first2, Inputlterator2 Iast2);
set_
difference
set_intersection
STL
525
/
set_
template <class Inputlteratorl, class Inputlterator2,
symmetric_
class Outputlterator>
difference
Outputlterator set_symmetric_difference (Inputlteratorl firstl,
Inputlteratorl lastl, Inputlterator2 first2,
Inputlterator2 Iast2, Outputlterator result);
set union
526
5.7.12 (heap)
/
makc_heap template <class RandomAccessIterator>
void make_heap(RandomAccess!terator first,
RandomAccessIterator last);
template <class RandomAccessIterator, class Compare>
void make_heap(RandomAccessIterator first,
RandomAccessIterator last, Compare comp);
[first, last), . . <,
comp
pop_heap
push_heap
STL
sort_heap
527
(heap) , .
make_heap . pop_heap ( ), ( 1
) . pop_heap , ,
. push_heap
. , , - pop_back.
sort_heap , , .
5.7.13
max
528
mm
min element
5.7.14
next_
permutation
(. )
[first, last).
, true.
, false. <,
prev_
permutation
(. )
[first, last).
, true.
, false.
<,
STL
529
, , {1 2 3}. , ..
.
: {1 2 3}, {1 3 2}, {2 1 3}, {2 3 1}, {3 1 2}, {3 2 1}. ,
, . next_permutation . ( , .. ), .
prev_permutation, , , .
5.8 -
. 5.7 ,
, - - . STL -.
- , operator ().
,
operator (). - , .
- , - . - :
template <class Arg, class Result>
struct u n a r y _ f u n c t i o n {
typedef Arg argument type;
typedef Result result_type;
};
template <class A r g l , class Arg2, class Result>
struct binary_function {
typedef Argl first_argument_type;
typedef Arg2 second_argument_type;
typedef Result result_type;
};
, :
argument_typ , result_type . : first_argument_type second_argument_type , result_type .
-, . , (
). <functional>.
plus
minus
530
multiplies
divides
modulus
negate
.
. . , - multiplies :
template<class T>
struct m u l t i p l i e s : binary_functiorKT, T, T> {
operator () (const & , const T & ) const;
};
accumulate mult
120.
true, ...
equal_to
==
not_equal_to
x!=y
greater
>
less
<
ht greater_equal
>=
less_equal
<=
.
bool.
. , - greater :
template <class T>
struct greater : b i n a r y _ f u n c t i o n < T , T, bool> {
bool o p e r a t o r ( ) (const TS, const T & ) const;
.
greater
sort (. . 5.7.10). less . :
STL
531
tinclude <numeric>
#include<functional>
using namespace std;
int a [ 5 ] = (3, 2, 1, 5, 4 } ;
s o r t ( a , a+5, greater<int> ( ) ) ;
logical_and
&&
logical_or
||
logical_not
.
bool.
. , - logical_and :
template <class T>
struct logical_and : binary_function<T, T, bool> {
bool operator () (const T&, const T & ) const;
);
.
,
bool ( int).
:
bool 11 [ 4 ] = ( t r u e , f a l s e , f a l s e , t r u e ) ;
bool 1 2 [ 4 ] = { f a l s e , f a l s e , true, t r u e ) ;
t r a n s f o r m ( l l , 11 + 3, 12, 11, logical_and<bool>());
532
. , . true, , .. .
bool . , ,
.
template <class T>
,
struct mycomp: binary_function<T, T, bool>
, - ( mycomp)
bool.
, , . Sign,
math.hpp. . , true,
. , true, .
, , ,
:
int [5] = {3, -10, -2, 5, 4 } ;
double b [ 5 ] = (-4.5, 6, 5.1, 0.5, -10};
sort (a, +5, mycomp<int> () ) ;
sort (b, -5, mycomp<double> () ) ;
,
. , .
4,
, . , - .
, ,
.
#
##
#define
#elif
#else
#endif
#error
#if
#ifdef
#ifndef
#include
#line
#pragma
#undef
..
classid
closure
_finally
property
published
_atoi64
_atold
_c_exit
_cexit
_creat
_doserrno
_exception
_exceptionl
_exit
_fdopen
_fileno
_flushall
1.4.5
1.4.5
1.4.2.1, 1.4.2.2
1.4.3
1.4.3
1.4.3
1.4.4
1.4.3
1.4.3
1.4.3
1.4.1
1.4.4
1.4.4
1.4.2.3
1.8.1, 1.8.2,
1.9.13
2.8.3
2.14.7.2
1.12.1
2.14.7.1
2.14.1
3.3.1.1
3.3.1.1
3.6.1
3.6.1
3.5.3
3.1.4.1
3.1.4.4
3.1.4.4
3.6.1
3.5.2
3.5.2
3.5.2
_fsopen
_getdcwd
_getw
_i64toa
_itow
_ltoa
_matherr
_matherrl
_mktemp
_msize
_rmdir
_rtl_chmod
_rtl_close
_rtl_creat
_rtl_open
_sopen
_STLP_DEBUG
_strtold
_sys_errlist
_sys_nerr
_tolower
_toupper
_ui64toa
_ultow
_unlink
_USE_OLD_RW_STL
_waccess
_wcstold
_wrtl_chmod
_wtof
_wtoi
_wtoi64
wtol
3.5.2
3.5.6
3.5.4
3.3.1.1
3.3.1.1
3.3.1.1
3.1.4.4
3.1.4.4
3.5.5
3.7.1
3.5.6
3.5.6
3.5.3
3.5.3
3.5.3
3.5.3
5.2
3.3.1.1
3.1.4.1
3.1.4.1
3.4.1
3.4.1
3.3.1.1
3.3.1.1
3.5.6
5.2
3.5.6
3.3.1.1
3.5.6
3.3.1.1
3.3.1.1
3.3.1.1
3.3.1.1
534
_wtold
access
accumulate
acos
acosl
adjacent_find
AdjustLineBreaks
alloca
allocator
AllocMem
AnsiChar
AnsiExtractQuotedStr
AnsiQuotedStr
AnsiStrLComp
Ansi StrLIComp
AnsiStrRScan
AnsiStrScan
ArcCos
ArcCosh
Arc Sin
ArcSinh
ArcTan2
ArcTanh
ARRAYSIZE
asctime
asin
asinl
assign
at
atan
atan2
atan21
atanl
atexit
atof
atoi
atol
auto
back
3.3.1.1
3.5.6
5.7.8
3.2.3
3.2.3
5.7.3
3.4.2.3
3.7.1
5.3
3.7.1
2.4
3.4.2.3
3.4.2.3
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.2.3
3.2.3
3.2.3
3.2.3
3.2.3
3.2.3
2.11.3, 3.7.4
3.3.2
3.2.3
3.2.3
5.4.2
5.4.3
3.2.3
3.2.3
3.2.3
3.2.3
1.12.1, 3.6.1
3.3.1.1
3.3.1.1
3.3.1.1
1.6.2, 1.8.1
5.4.2
back_insert_iterator
5.5.3
back_inserter
5.5.2
Beep
3.7.3
begin
5.4.1
BEGIN_MESSAGE_MAP 1.14.3
C++Builder 6
binary_function
binary_search
bitset
break
bsearch
cabs
cabsl
capacity
catch
ChangeFileExt
char
char*
chdir
chmod
chsize
cin
class
ClassParent
clear
clearerr
close
Close Window
CompareStr
const
const_cast
const_iterator
const_reference
const_reverse_iterator
continue
copy
copyjbackward
cos
Cosh
coshl
cosl
Cotan
count
count_if
cout
CreateDir
creatnew
creattemp
ctime
CurrToFMTBCD
5.8
5.7.4
5.4.3
1.10.2.4
3.7.4
3.2.2
3.2.2
5.4.3
1.12.5, 1.12.6.1
3.5.5
2.4, 2.5.1
2.5.1
3.5.6
3.5.6
3.5.6
1.9.15
1.7.8, 2.14.8
2.8.3
5.4.2
3.5.4
3.5.3
3.7.5
3.4.2.2
1.7.3, 2.14.2
2.2
5.4.1
5.4.1
5.4.1
1.10.2.4
5.7.6
5.7.6
3.2.3
3.2.3
3.2.3
3.2.3
3.2.3
5.4.6.1, 5.7.3
5.7.3
1.9.15
3.5.6
3.5.3
3.5.3
3.3.2
3.3.3
CurrToStrF
CycleToRad
date
DateTimeToFileDate
DateTimeToSystemTime
DateTimeToTimeStamp
DBL_MAX
DBL_MIN
dec
default
DegToRad
delete
DeleteFile
deque
Destroy Window
difference_type
DirectoryExists
DiskFree
DiskSize
distance
divides
DOMAIN
dup
dup2
dynamic_cast
ecvt
EDOM
empty
Enable Window
end
END_MES S AGE_M AP
endl
enum
eof
equal
equal_range
equal_to
ERANGE
erase
errno
Exception
exception
535
3.3.1.2
3.2.3
3.3.2
3.3.2
3.3.2
3.3.2
3.1.4.4
3.1.4.4
2.10.3.2
2.14.7.1
3.2.3
1.11
3.5.6
5.4.5
3.7.5
5.4.1
3.5.6
3.5.6
3.5.6
5.5.1
5.8
3.1.4.4
3.5.3
3.5.3
2.2, 2.14.6
3.3.1.1
3.1.4.3
5.4.1
3.7.5
5.4.1
1.14.3
1.9.15
2.6
3.5.4
5.7.5
5.7.4
5.8
3.1.4.3
5.4.2
3.1.4.1
1.12.4
1.12.7
EXISTINGARRAY
exit
exp
ExpandFileName
ExpandUNCFileName
expl
explicit
extern
ExtractFileDir
ExtractFileDrive
ExtractFileExt
ExtractFileName
ExtractFilePath
ExtractRelativePath
ExtractShortPathName
FA_...
fclose
fcvt
feof
ferror
f flush
fgetpos
FILE
FileAge
FileClose
FileCreate
FileDateToDateTime
FileExists
FileGetAttr
FileGetDate
filelength
FileOpen
FileRead
FileSearch
FileSeek
FileSetAttr
FileSetDate
FileWrite
fill
fill_n
find
find_end
find_first_of
2.11.3, 3.7.4
1.4.4, 1.12.2,
3.6.1
3.2.2
3.5.5
3.5.5
3.2.2
2.14.5
1.6.2, 1.8.1
3.5.5
3.5.5
3.5.5
3.5.5
3.5.5
3.5.5
3.5.5
3.5.1
2.10.2.1, 3.5.2
3.3.1.1
2.10.2.2, 3.5.4
3.5.4
3.5.2
3.5.4
2.10.2.1, 3.5.2
3.5.6
3.5.3
3.5.3
3.5.6
3.5.6
3.5.6
3.5.6
3.5.6
3.5.3
3.5.4
3.5.6
3.5.4
3.5.6
3.5.6
3.5.4
5.7.2
5.7.2
5.4.6.1, 5.7.3
5.7.3
5.7.3
C++Builder 6
536
find_if
flip
FloatToDecimal
FloatToText
FloatToTextFmt
fm...
FMTBCDToCurr
FmtStr
fnmerge
fnsplit
fopen
for_each
ForceDirectories
FormatBuf
FormatCurr
FormatFloat
FPU
fread
freopen
friend
front
front_insert_iterator
fseek
fsetpos
fstat
fstream
ftell
ftime
fwrite
gcvt
generate
generate_n
getcurdir
GetCurrentDir
getcwd
getdate
getdisk
getenv
GetFormatSettings
getftime
GetLongHint
GetMemoryManager
getpass
gets
5.7.3
5.4.3
3.1.3.4, 3.3.1.2
3.1.3.4, 3.3.1.2
3.1.3.5, 3.3.1.2
3.5.1
3.3.3
3.1.3.3, 3.3.1.2
3.5.6
3.5.6
2.10.2.1, 3.5.2
5.7.8
3.5.6
3.1.3.3, 3.3.1.2
3.3.1.2
3.1.3.5, 3.3.1.2
1.9.2, 3.2.6
2.10.2.3, 3.5.4
3.5.2
2.14.2
5.4.2
5.5.3
2.10.2.3, 3.5.4
3.5.4
3.5.6
2.10.3.1
2.10.2.3, 3.5.4
3.5.6
2.10.2.3, 3.5.4
3.3.1.1
5.7.2
5.7.2
3.5.6
3.5.6
3.5.6
3.3.2
3.5.6
3.7.4
3.3.1.2
3.5.6
3.7.4
3.7.1
3.5.4
3.5.4
GetShortHint
GetSystemDirectory
gettime
GetWmdowsDirectory
gmtime
greater
greater_equal
hdrstop
heap
hex
HUGE_VAL
hypot
Hypot
hvDotl
.7
ifstream
includes
IncMonth
InheritsFrom
inline
inplace_merge
insert
insert_iterator
IntToHex
isalnum
isalpha
isascii
isatty
iscntrl
IsDelimiter
isdigit
isgraph
IsLeapYear
islower
IsPathDelimiter
isprint
ispunct
isspace
istream_iterator
isupper
,
iswalnum
iswalpha
iswascii
iswcntrl
iswdigit
3.7.4
3.5.6
3.3.2
3.5.6
3.3.2
5.8
5.8
1.4.4
1.11, 5.7.12
2.10.3.2
3.3.1.1
3.2.3
3.2.3
3.2.3
1.9.15, 2.10.3.1
5.7.11
3.3.2
2.8.3
1.7.6, 2.14.2
5.7.10
5.4.2
5.5.3
3.3.1.2
3.4.1
3.4.1
3.4.1
3.5.6
3.4.1
3.4.2.3
3.4.1
3.4.1
3.3.2
3.4.1
3.4.2.3
3.4.1
3.4.1
3.4.1
5.5.2
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
537
iswgraph
iswlower
iswprint
iswpunct
iswspace
iswupper
iswxdigit
isxdigit
iterator
itoa
kbhit
key_type
LastDelimiter
LDBL_MAX
LDBL_MIN
less
less_equal
lexicographical_
compare
Wind
LHUGE_VAL
LineStart
list
localtime
lock
locking
logic_error
logical_and
logical_not
logical_or
LoginDialog
LoginDialogEx
lower_bound
IP
LParamHi
LParamLo
Isearch
Iseek
make_heap
manifest
map
MatchesMask
max
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
3.4.1
5.4.1
3.3.1.1
3.5.4
5.4.1
3.4.2.3
3.1.4.4
3.1.4.4
5.8
5.8
5.7.5
3.7.4
3.3.1.1
3.4.2.2
5.4.4
3.3.2
3.5.3
3.5.3
1.12.7
5.8
5.8
5.8
3.7.2
3.7.2
5.4.6.1, 5.7.4
1.14.1
1.14.1
1.14.1
3.7.4
2.10.2.4, 3.5.4
5.7.12
1.5.3
5.4.6.1, 5.4.6.2,
5.4.6.3
3.5.5
3.2.2, 5.7.13
max_element
max_size
memchr
memcmp
memicmp
merge
message
Message
MES S AGE_HANDLER
MessageBeep
min
min_element
MinimizeName
minus
mismatch
mkdir
mktime
modf
modfl
modulus
MSecsToTimeStamp
multimap
multiplies
multiset
namespace
negate
new
next_permutation
not_equal_to
nth_element
NULL
O_...
oct
ofstream
OPEN ARRAY
ostream_iterator
OVERFLOW
package
ParamCount
ParamStr
partial_sort
partial_sort_copy
partition
5.7.13
5.4.1
3.4.2.1
3.4.2.1
3.4.2.1
5.4.4, 5.7.10
1.4.4
1.12.4.1
1.14.3
3.7.3
3.2.2, 5.7.13
5.7.13
3.5.5
5.8
5.7.5
3.5.6
3.3.2
3.2.2
3.2.2
5.8
3.3.2
5.4.6.1, 5.4.6.3
5.8
5.4.6.1, 5.4.6.2
1.8.2
5.8
1.11
5.7.14
5.8
5.7.10
2.8.2
3.5.1
2.10.3.2
1.9.15, 2.10.3.1
1.12.4.2,
2.11.3, 3.7.4
5.5.3
3.1.4.4
1.4.4
3.7.4
3.7.4
5.7.10
5.7.10
5.7.7
538
PlaySound
plus
pointer
pop
pop_back
pop_front
pop_heap
precision
prev_permutation
priority_queue
private
ProcessPath
protected
pthread_alloc
public
push
push_back
push_front
push_heap
putch
putenv
puttext
putw
qsort
queue
QuotedStr
RadToCycle
RadToDeg
random_shuffle
rbegin
read
reference
register
reinterpret_cast
remove
remove_copy
rem ove_copy_if
remove_if
RemoveDir
rename
RenameFile
rend
C++Builder 6
3.5.4
3.7.3
5.8
5.4.1
5.4.5
5.4.2
5.4.4
5.7.12
2.10.3.2
5.7.14
5.4.5
2.12.3, 2.14.1
3.5.5
2.14.1
5.3
2.12.3, 2.14.1
5.4.5
5.4.2
5.4.4
5.7.12
3.5.4
3.7.4
3.5.4
3.5.4
3.7.4
5.4.5
3.4.2.3
3.2.3
3.2.3
5.7.7
5.4.2
2.14.7.1, 3.5.4
5.4.1
1.6.2
2.2
3.5.6, 5.4.4,
5.7.9
5.7.9
5.7.9
5.7.9
3.5.6
3.5.6
3.5.6
5.4.2
replace
replace_copy
replace_copy_if
replace_if
reserve
resetiosflags
resize
resource
Result
ResultHi
ResultLo
return
reverse
reverse_copy
reverse_iterator
rotate
rotate_copy
runtime_error
S_...
search
search_n
searchpath
Sender
5.7.7
5.7.7
5.7.7
5.7.7
5.4.3
2.10.3.3
5.4.2
1.4.4
1.14.1
1.14.1
1.14.1
1.7.1, 1.10.2.4
5.7.7
5.7.7
5.4.1
5.7.7
5.7.7
1.12.7
3.5.1
5.7.3
5.7.3
3.5.6
2.8.3
Set
set
2.7
set_difference
set_intersection
set_symmetric_difference
set_terminate
set_unexpected
set_union
setbase
setbuf
SetCurrentDir
setdate
setdisk
setfill
setftime
setiosflags
setmem
SetMemory Manager
setmode
setprecision
set time
5.4.6.1, 5.4.6.2
5.7.11
5.7.11
5.7.11
1.12.7
1.12.7
5.7.11
2.10.3.2
3.5.2
3.5.6
3.3.2
3.5.6
2.10.3.2
3.5.6
2.10.3.3
3.4.2.1
3.7.1
3.5.3
2.10.3.2
3.3.2
539
setvbuf
setw
SH_...
Shortcut
ShortCutToText
ShowException
sin
SinCos
SING
Sinh
sinh
sinhl
sinl
size
size_type
sizeof
slist
sort
sort_heap
splice
sqrt
sqrtl
stable_partition
stable_sort
stack
startup
stat
static
static_cast
stime
StrAlloc
StrBufSize
strcat
StrCat
strchr
strcmp
strcmpi
StrComp
strcspn
strdup
StrEnd
strerror
3.5.2
2.10.3.2
3.5.1
3.7.4
3.7.4
1.12.5.2
3.2.3
3.2.3
3.1.4.4
3.2.3
3.2.3
3.2.3
3.2.3
5.4.1
5.4.1
1.9.10
5.4.4
5.4.4, 5.7.10
5.7.12
5.4.4
3.2.2
3.2.2
5.7.7
5.7.10
5.4.5
1.4.4
3.5.6
1.6.2, 1.7.1,
1.8.1, 2.14.3,
2.14.4
2.2, 2.8.3
3.3.2
3.4.2.2
3.4.2.2
2.5.1, 3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.1.3.3, 3.3.1.2
3.4.2.2
3.4.2.2
5.6
3.4.2.3
3.4.2.2
3.4.2.2
2.5.1, 3.4.2.2
3.4.2.2
3.1.3.3, 3.3.1.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
3.4.2.2
2.5.1, 3.4.2.2
3.3.1.1
3.4.2.2
3.3.1.1
3.3.1.1
2.12.1, 2.12.3,
2.12.4
3.7.4
swab
5.4.1, 5.4.3,
swap
5.7.7
5.7.7
swap_ranges
3.7.1
SysFreeMem
3.7.1
SysGetMem
3.7.1
SysReallocMem
SystemTimeToDateTime 3.3.2
3.2.3
Tan
3.2.3
tan
3.2.3
Tanh
StrFmt
stricmp
StrlComp
string
StringReplace
StrLCat
StrLComp
strlen
StrLen
StrLFmt
StrLIComp
strncat
strncmp
strncmpi
StrNew
strnicmp
strnset
strpbrk
StrPCopy
StrPLCopy
strrchr
strrev
StrRScan
StrScan
street
strspn
strstr
strtod
strtok
strtol
strtoul
struct
C++Builder 6
540
tanh
tanhl
tanl
tell
template
terminate
text
TextToFloat
TextToShortCut
TFloatFormat
TFloatValue
THeapStatus
this
throw
time
TimeStampToDateTime
TimeS tampToMS ecs
TLOSS
tm
TMemoryManage
tmpfile
tmpnam
toascii
tolower
top
toupper
towlower
towupper
transform
Trim
TrimLeft
TrimRight
try
typedef
typeid
typename
ultoa
umask
unary_f unction
UNDERFLOW
unexpected
unexpected_handler
2.13
union
3.2.3
5.4.4, 5.7.9
unique
3.2.3
5.7.9
unique_copy
3.2.3
3.5.3
2.10.2.4, 3.5.4 unlock
5.4.6.1, 5.7.4
upper bound
1.7.8, 2.14.8
1.8.2
1.12.7
using
5.4.3
1.4.4
valarray
5.4.1
3.1.3.4, 3.3.1.2 value_type
5.4.3
3.7.4
vector
2.14.6
3.1.3.4
virtual
1.7.1, 2.1, 2.8.1
3.1.3.4
void
1.6.2, 2.2, 2.14
volatile
3.7.1
2.14.6
wchar_t
2.4
1.12.4.1,
wcstod
3.3.1.1
1.12.4.2,
wcstol
3.3.1.1
1.12.6.1, 1.12.7
wcstoul
3.3.1.1
3.3.2
what
1.12.7
3.3.2
WideChar
2.4
3.3.2
WM_ACTIVATE
3.1.5
3.1.4.4
WM ACTIVATEAPP
3.1.5
3.3.2
WM_CANCELMODE
3.1.5
3.7.1
WM_CLOSE
3.1.5
3.5.2
WM_GETMINMAXINFO 3.1.5
3.5.5
WM GETTEXT
3.1.5
3.4.1
WM_SETFONT
3.1.5
3.4.1
WM SETTEXT
3.1.5
5.4.5
wParam
1.14.1
3.4.1
WParamffi
1.14.1
3.4.1
WParamLo
1.14.1
3.4.1
WrapText
3.4.2.3
5.7.7
write
2.14.7.1, 3.5.4
3.4.2.3
2.14.6
3.4.2.3
- 1.6.2, 1.8.1
3.4.2.3
1.12.2, 1.12.5
1.6.2, 1.8.1
2.1
1.9.11
1.7.8, 2.14.8
3.3.1.1
3.5.3
5.8
3.1.4.4
1.12.7
1.12.7
2.14.6
1.6.2
1.6.2, 1.8.1
2.14.1, 2.14.3
1.9.2, 2.8.1
1.9.2, 2.8.1
1.6.2
1.1
2.14.5
- 1.6.2, 1.8.1
1.4.1, 1.4.2.1,
1.4.2.2
(- 1.6.2, 1.8.1
)
1.9.1
2.14.6
1.9.15, 2.10.2,
2.10.3
541
-
-
1.8.2
1.7.1
1.8.1, 1.8.2,
1.9.13
1.7.7
1.1
1.6.2, 1.8.1
2.12.1
5.8
2.14.1, 2.14.2
C++
C++Builder 6
C++ C++Builder.
http://delci.hl.ru
www.binom-press.ru.
1. . . C++BuiIder 6 : , 2002
, , ++ilder 6 C++Builder 5 4. C++Builder, - ,
ADO, InterBase Express, dbExpress, - COM,
COM, CORBA, MIDAS,
. ,
, , , , , , .
, , C++Builder, , , , . , , , .. , ,
. , ,
. ,
. ( )
, .
2.
C++Builder
, . C++Builder Help | Customize F1
. , , ,
[1].
,
542
C++Builder 6
, C++Builder, , ,
(,
). , ,
.
: C++ C++Builder,
C++Builder, TeeChart. 3000,
.
STL, , , .
,
C++Builder, ( ),
. , . , , , , .
: http://labl8.ipu.rssi.ru/
help2/. , 3-4 , , .
,
e-mail. , e-mail
- . , .
3. . ., . . . :
, 2002
(, ) . 3 4 . , 500. , C++Builder.
Turbo Turbo C++,
C++Builder, Visual C++. 300 .
4. . ., . . STL C++.
: , 2002
( )
STL, 5
. , , , , .
. C++ ,
C++Builder.
Turbo C++, C++Builder, Visual C++. 300 .
543
. . C++Builder 6. :
, 2003
( , , Delphi 6). ,
C++Builder, , [1] . , C++Builder 6, : ( ,
, ..), C++Builder 6;
C++Builder 6; ;
, .
,
. .
,
.
,
. .
5.
-
C++Builder . .
1. C++
..
.. , ..
26.08.02. 70100/16.
. . .
. . . 44,2. 4000 . 3145.
-, 2002 .
170026, . , ., 12.
- .
614990, . , -131, . , 34.