Вы находитесь на странице: 1из 32

Turbo Pascal 7.

0 Готовые алгоритмы,
функции, процедуры

Turbo Pascal
7.0
Готовые алгоритмы,
функции, процедуры

Автор сборника и текстов программ: Дробот Виктор (Ghost)

Дата создания: 02.01.2008

Время создания: 16.35

Йошкар-Ола

2008

1
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Предисловие:

В этом сборнике собраны функции и процедуры,


позволяющие Вам использовать их в процессе создания
программы. Все функции и процедуры прекрасно
компилируются, запускаются и включаются в программу.
Здесь собраны функции работы с экраном, символами,
строками, датами и годами.

Всем, хорошо знающим Turbo Pascal без труда удастся


разобраться во всех кодах программ, переменных, которые
используются в них, константах и многом другом.

Для работы ВСЕХ представленных кодов, необходим


модуль TpCrt.

Приятной Вам работы с


Turbo Pascal!!!

2
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Содержание
Предисловие стр.2

Глава 1. Функции и процедуры работы с экраном стр.5

Процедура «Screen» стр.5

Функция «Ask» стр.5

Процедура «Message» стр.8

Процедура «Beep» стр.10

Глава 2. Функции и процедуры работы с символами и


строками стр.11

Процедура «GetStrDig» стр.11

Процедура «Perevorot» стр.14

Функция «Revert» стр.14

Функция «Char_To_Upper» стр.15

Функция «Char_To_Lower» стр.16

Функция «Compare_String» стр.17

Функция «Is_Polindr» стр.17

Процедура «My_Write» стр.18

Функция «Int_To_Str» стр.19

3
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Attr_Col» стр.19

Функция «Replicate» стр.19

Функция «Str_To_Small» стр.20

Функция «Str_To_Big» стр.21

Функция «Is_Glasn» стр.21

Функция «Calc_Glasn» стр.22

Функция «Is_Sog» стр.22

Функция «Calc_Sog» стр.23

Функция «Is_Char» стр.23

Функция «Fill_Right» стр.24

Функция «Fill_Left» стр.25

Функция «Fill_Middle» стр.25

Функция «Clr_Right» стр.26

Функция «Fill_Left» стр.27

Функция «Clr_Bound» стр.28

Функция «Visokosn» стр.28

Функция «Day_Of_Month» стр.28

Функция «Name_Month» стр.29

Глава 3. Функции и процедуры с файлами стр.31

Процедура «DosWinUltraSpeedCopyFile» стр.31

4
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функции и процедуры
работы с экраном
Процедура «Screen»

Данная процедура очищает весь экран, задает цвет букв


и цвет фона (экрана) и ставит курсор в левую верхнюю
часть экрана. Код процедуры:
PROCEDURE SCREEN(COLOR_CHAR, COLOR_BACKGROUND : BYTE);
BEGIN
TEXTCOLOR(COLOR_CHAR);
TEXTBACKGROUND(COLOR_BACKGROUND);
CLRSCR;
GOTOXY(1,1);
END;

Комментарии:

COLOR_CHAR – переменная, определяющая цвет БУКВ

COLOR_BACKGROUND – переменная, определяющая


цвет ФОНА (ЭКРАНА)

Функция «Ask»

Данная функция выводит в заданной позиции экрана


табличку с заданным текстом вопроса, на который можно
ответить только двумя способами: Да(Y)/Нет(N). Код
функции:

5
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

FUNCTION ASK(XL,YL:BYTE;VOPROS:STRING; COLVOP:BYTE;


ZAGOL:STRING; COLZAG:BYTE):BOOLEAN;
VAR
XR,YR,SAVEX,SAVEY,SAVEATTR:BYTE;
SAVEEKRAN:POINTER;
C:CHAR;
BEGIN
SAVEX:=WHEREX;
SAVEY:=WHEREY;
SAVEATTR:=TEXTATTR;
XR:=XL+LENGTH(VOPROS)+10;
YR:=YL+2;
IF SAVEWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN) THEN
BEGIN
FRAMEWINDOW(XL,YL,XR,YR,COLVOP,COLZAG,ZAGOL);
WINDOW(XL+1,YL+1,XR-1,YR-1);
TEXTATTR:=COLVOP;
CLRSCR;
WRITE(' '+VOPROS+' (Y/N) ');
REPEAT
C:=READKEY;
C:=CHAR_TO_UPPER(C);
CASE C OF
'Y','H':
BEGIN
WRITE('Y');
ASK:=TRUE;
BREAK;
END;

6
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

'N','Т':
BEGIN
WRITE('N');
ASK:=FALSE;
BREAK;
END;
ELSE C:=C;
END;
UNTIL FALSE;
TEXTATTR:=SAVEATTR;
WINDOW(1,1,80,25);
RESTOREWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN);
GOTOXY(SAVEX,SAVEY);
END
ELSE
BEGIN
ASK:=FALSE;
END;
END;

Комментарии:

XL, YL – это переменные, определяющие положения


левого верхнего угла ОКНА ВОПРОСА

VOPROS – текст вопроса

COLVOP – параметры, определяющие цвет текста


ВОПРОСА

ZAGOL – текст заголовка ОКНА ВОПРОСА

7
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

COLZAG – параметры, определяющие цвет текста


ЗАГОЛОВКА

Процедура «Message»

Данная процедура выводит в определённой части


экрана сообщение с заданным текстом, в ответ на которое
программа предлагает следующее: «Для продолжения
нажмите "ENTER"» заголовком и цветами этих параметров.
Необходимые функции и процедуры: Fill_Middle. О данной
функции будет рассказано в разделе «Работа с символами и
строками». Код процедуры:
PROCEDURE MESSAGE(XL,YL:BYTE;TXT:STRING; COLTXT:BYTE;
ZAGOL:STRING; COLZAG:BYTE);
CONST
MY_TXT='ДЛЯ ПPОДОЛЖЕНИЯ НАЖМИТЕ "ENTER"';
VAR
XR,YR,SAVEX,SAVEY,CC,SAVEATTR,LEN_MY,LENTXT:BYTE;
SAVEEKRAN:POINTER;
C:CHAR;
BEGIN
SAVEX:=WHEREX;
SAVEY:=WHEREY;
SAVEATTR:=TEXTATTR;
LENTXT:=LENGTH(TXT);
LEN_MY:=LENGTH(MY_TXT);
IF LENTXT>LEN_MY THEN LEN_MY:=LENTXT;
LEN_MY:=LEN_MY+2;
XR:=XL+LEN_MY+2;

8
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

YR:=YL+3;
IF SAVEWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN) THEN
BEGIN
FRAMEWINDOW(XL,YL,XR,YR,COLTXT,COLZAG,ZAGOL);
WINDOW(XL+1,YL+1,XR-1,YR-1);
TEXTATTR:=COLTXT;
CLRSCR;
WRITE(FILL_MIDDLE(TXT,' ',LEN_MY));
WRITE(FILL_MIDDLE(MY_TXT,' ',LEN_MY));
REPEAT
C:=READKEY;
CC:=ORD(C);
CASE CC OF
13:BREAK;
ELSE C:=C;
END;
UNTIL FALSE;
TEXTATTR:=SAVEATTR;
WINDOW(1,1,80,25);
RESTOREWINDOW(XL,YL,XR,YR,TRUE,SAVEEKRAN);
GOTOXY(SAVEX,SAVEY);
END
ELSE
BEGIN
END;
END;

9
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Процедура «Beep»

Данная процедура при нужной ситуации создаёт писк,


количество которых Вы можете задавать. Код процедуры:
PROCEDURE BEEP (N : BYTE);
VAR
K : BYTE;
BEGIN
FOR K:=1 TO N DO
WRITE(#7);
END;

10
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функции и процедуры
работы с символами и
строками
Процедура «GetStrDig»

Данная процедура выводит сообщение на экран, с


просьбой ввести число. Если вы ошиблись при вводе,
программа выводит на экран сообщение с текстом
предупреждения и заставляет работать процедуру Beep.
После завершения ввода, программа преобразовывает
введённое Вами число в виде строки в его числовое
представление. Код процедуры:
PROCEDURE GETSTRDIG(VAR X:WORD; N : BYTE; CODE : CHAR; KEY :
BOOLEAN);
VAR
S :STRING;
P :BYTE;
WX,WY :BYTE;
SIM :CHAR;
C :BYTE ABSOLUTE SIM;
CERR,Z :INTEGER;
MISTAKE :BYTE;
CONST
ENTER=#13;
ESC=#21;
MAX=5;

11
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

MYSAY: ARRAY [1..MAX] OF STRING [50]=


('ОШИБКА! БУДЬ ВНИМАТЕЛЬНЕЕ!','ТЫ ПPИКИДЫВАЕШЬСЯ ТУПЫМ? ПИШИ
НОPМАЛЬНО!!','ИЗДЕВАЕШЬСЯ?','ОХPЕНЕЛ?',
'ТЫ, БЫДЛА НЕДОДЕЛАННАЯ! ЗАДОЛБАЛ!!!');
PROCEDURE MYTALK(N:BYTE);
VAR
S,S2 : STRING;
BEGIN
IF N=0 THEN N:=1;
S2:='ОШИБКА '+INT_TO_STR ( N,0)+' ';
IF N>MAX THEN N:=MAX;
S:=MYSAY[N];
MESSAGE(1,1,S,ATTR_COL(WHITE,BLACK),S2,ATTR_COL(WHITE,BLACK));
END;
BEGIN
WX:=WHEREX;
WY:=WHEREY;
MISTAKE:=0;
IF KEY THEN
BEGIN
S:='';
FOR P:=1 TO N DO
S:=' '+S;
END;
WRITE(S:N);
P:=1;
WHILE P<=N DO
BEGIN
GOTOXY(WX+P-1,WY);

12
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

SIM:=READKEY;
CASE SIM OF
'0'..'9' :
BEGIN
WRITE(SIM);
S[P]:=SIM;
P:=P+1;
END;
ENTER, ESC :
BEGIN
BREAK;
END;
ELSE
BEGIN
BEEP;
MISTAKE:=MISTAKE+1;
MYTALK(MISTAKE);
END;
END;
END;
REPEAT
VAL(S,X,CERR);
IF CERR<>0 THEN DELETE(S,CERR,1);
UNTIL CERR=0;
CODE:=SIM;
END;

13
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Процедура «Perevorot»

Данная процедура переворачивает введённую Вами


строку. Код процедуры:
PROCEDURE PEREVOROT( VAR S : STRING);
VAR
X,N,N1 : BYTE;
KA : CHAR;
BEGIN
N:=LENGTH(S);
N1:=N DIV 2;
FOR X:=1 TO N1 DO
BEGIN
KA:=S[X];
S[X]:=S[N+1-X];
S[N+1-X]:=KA;
END;
END;

Функция «Revert»

Данная функция почти такая же, как и предыдущая


процедура. Отличие только в том, что это – ФУНКЦИЯ,
которая возвращает результат – т.е., строка, которую Вы
задали, может быть присвоена другим строкам. Код
функции:
FUNCTION REVERT( S : STRING) : STRING;
VAR
X,N,N1 : BYTE;

14
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

KA : CHAR;
BEGIN
N:=LENGTH(S);
N1:=N DIV 2;
FOR X:=1 TO N1 DO
BEGIN
KA:=S[X];
S[X]:=S[N+1-X];
S[N+1-X] :=KA;
END;
REVERT:=S;
END;

Функция «Char_To_Upper»

Данная функция преобразует заданный символ в


ЗАГЛАВНЫЙ. Код функции:
FUNCTION CHAR_TO_UPPER(S : CHAR):CHAR;
CONST
BIG:STRING=
'QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬБЮ';
SMALL:STRING=
'qwertyuiopasdfghjklzxcvbnmйцукенгшщзхъфывапpолджэячсмитьбю';
VAR
L : BYTE;
BEGIN
L:= POS(S,SMALL);
IF L<>0

15
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

THEN S:=BIG[L];
CHAR_TO_UPPER:=S;
END;

Функция «Char_To_Lower»

Данная функция работает почти также, как и


предыдущая, только она преобразовывает заданный
символ в маленький символ. Код функции:
FUNCTION CHAR_TO_LOWER(S : CHAR) : CHAR;
CONST
BIG:STRING=
'QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬБЮ';
SMALL:STRING=
'qwertyuiopasdfghjklzxcvbnmйцукенгшщзхъфывапpолджэячсмитьбю';
VAR
L : BYTE;
BEGIN
L:= POS(S,BIG);
IF L<>0
THEN S:=SMALL[L];
CHAR_TO_LOWER:=S;
END;

16
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Compare_String»

Данная функция сравнивает две строки на равенство.


Код функции:
FUNCTION COMPARE_STRING( S,W : STRING) : BOOLEAN;
VAR
LS,LW ,J : BYTE;
F : BOOLEAN;
BEGIN
LS:=LENGTH(S);
LW:=LENGTH(W);
IF LS<>LW
THEN COMPARE_STRING:=FALSE
ELSE
BEGIN
F:=TRUE;
FOR J:=1 TO LS DO
F:=F AND (CHAR_TO_UPPER(S[J])=CHAR_TO_UPPER(W[J]));
COMPARE_STRING:=F;
END;
END;

Функция «Is_Polindr»

Даннаяфункция проверяет, является ли слово


палиндромом. Если это так, функция возвращает значение
True. Код функции:
FUNCTION IS_POLINDR(S:STRING):BOOLEAN;
VAR K,N,N2:BYTE;

17
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

P:BOOLEAN;
BEGIN
N:=LENGTH(S);
N2:=N SHR 1;
P:=TRUE;
FOR K:=1 TO N2 DO
BEGIN
P:=P AND (CHAR_TO_UPPER(S[K])=CHAR_TO_UPPER(S[N+1-K]));
END;
IS_POLINDR:=P;
END;

Процедура «My_Write»

Данная процедура печатает заданный Вами текст в


заданной позиции экрана с заданной цветовой настройкой
(цвет символов и фона (экрана)). Код процедуры:
PROCEDURE MY_WRITE(X,Y,ATTR:BYTE;S:STRING);
VAR
SAVE:BYTE;
BEGIN
SAVE:=TEXTATTR;
TEXTATTR:=ATTR;
GOTOXY(X,Y);
WRITE(S);
TEXTATTR:=SAVE;
END;

18
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Int_To_Str»

Данная функция переводит число в строку и печатает


его на определённой позиции. Код функции:
FUNCTION INT_TO_STR(X:LONGINT;N:BYTE):STRING;
VAR
S:STRING;
BEGIN
STR(X:N,S);
INT_TO_STR:=S;
END;

Функция «Attr_Col»

Данная функция устанавливает цветовые параметры


экрана, строки, заголовка окна и т.д. Код функции:
FUNCTION ATTR_COL(BUKVA,FON:BYTE):BYTE;
BEGIN
BUKVA:=BUKVA AND 15;
FON:=FON AND 7;
ATTR_COL:=(FON SHL 4) OR BUKVA;
END;

Функция «Replicate»

Данная функция печатает заданную строку заданное


количество раз. Код функции:
FUNCTION REPLICATE(S:STRING;N:BYTE):STRING;

19
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

VAR
Z:STRING;
BEGIN
Z:='';
FOR N:=N DOWNTO 1 DO
Z:=Z+S;
REPLICATE:=Z;
END;

Функция «Str_To_Small»

Данная функция преобразовывает все символы в


строке в маленькие символы. Код функции:
FUNCTION STR_TO_SMALL( SIM : STRING) : STRING;
VAR
N : BYTE;
BEGIN
N:=LENGTH(SIM);
FOR N:=N DOWNTO 1 DO
SIM[N]:=CHAR_TO_LOWER(SIM[N]);
STR_TO_SMALL:=SIM;
END;

20
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Str_To_Big»

Данная функция отличается от предыдущей лишь тем,


что все символы в строке преобразовываются в
ЗАГЛАВНЫЕ. Код функции:
FUNCTION STR_TO_BIG( SIM : STRING) : STRING;
VAR
N : BYTE;
BEGIN
N:=LENGTH(SIM);
FOR N:=N DOWNTO 1 DO
SIM[N]:=CHAR_TO_UPPER(SIM[N]);
STR_TO_BIG:=SIM;
END;

Функция «Is_Glasn»

Данная функция проверяет, является ли заданный


символ гласным. Код функции:
FUNCTION IS_GLASN( SIM : CHAR) : BOOLEAN;
CONST
ALL_GLASN='УЕЫАОЭЯИЮУЕЫАОЭЯИЮEUIOAEUIOA';
BEGIN
IS_GLASN:=POS(SIM,ALL_GLASN)<>0;
END;

21
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Calc_Glasn»

Данная функция считает, сколько гласных в данной


строке. Код функции:
FUNCTION CALC_GLASN( S : STRING) : INTEGER;
VAR
SUM : INTEGER;
I,N : BYTE;
BEGIN
N:=LENGTH(S);
SUM:=0;
FOR I:=1 TO N DO
BEGIN
IF IS_GLASN(S[I])
THEN SUM:=SUM+1;
END;
CALC_GLASN:=SUM;
END;

Функция «Is_Sog»

Данная функция проверяет, является ли данный


символ согласным. Код функции:
FUNCTION IS_SOG( SOG : CHAR) : BOOLEAN;
BEGIN
IS_SOG:=IS_CHAR(SOG) AND (NOT IS_GLASN(SOG));
END;

22
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Calc_Sog»

Данная функция вычисляет, сколько согласных в


заданной строке. Код функции:
FUNCTION CALC_SOG( G : STRING) : INTEGER;
VAR
SUM : INTEGER;
I,N : BYTE;
BEGIN
N:=LENGTH(G);
SUM:=0;
FOR I:=1 TO N DO
BEGIN
IF IS_SOG(G[I])
THEN SUM:=SUM+1;
END;
CALC_SOG:=SUM;
END;

Функция «Is_Char»

Данная функция проверяет, является ли данный


символ буквой. Код функции:
FUNCTION IS_CHAR ( GL : CHAR ) : BOOLEAN;
CONST
BIG_CHAR:
STRING='QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕHГШЩЗХЪФЫВАПPОЛДЖЭЯЧСМИТЬ
БЮ';

23
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

SMALL_CHAR:
STRING='qwertyuiopasdfghjklzxcvbnmйцукенгшщзхъфывапpолджэячсмить
бю';
BEGIN
IS_CHAR:=POS(GL,BIG_CHAR+SMALL_CHAR)<>0;
END;

Функция «Fill_Right»

Данная функция помещает текст с левой стороны


экрана, а справа от него заполняет указанным символом.
Код функции:
FUNCTION FILL_RIGHT(S : STRING; C : CHAR;LONG : BYTE) : STRING;
VAR
N : BYTE;
BEGIN
N:=LENGTH(S);
IF N>=LONG
THEN S:=COPY(S,1,LONG)
ELSE
BEGIN
N:=LONG-N;
FOR N:=N DOWNTO 1 DO
S:=S+C;
END;
FILL_RIGHT:=S;
END;

24
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Fill_Left»

Данная функция помещает текст с правой стороны


экрана, а слева от него заполняет указанным символом.
Код функции:
FUNCTION FILL_LEFT(S : STRING; C : CHAR;LONG : BYTE) : STRING;
VAR
N : BYTE;
BEGIN
N:=LENGTH(S);
IF N>=LONG
THEN S:=COPY(S,1,LONG)
ELSE
BEGIN
N:=LONG-N;
FOR N:=N DOWNTO 1 DO
S:=C+S;
END;
FILL_LEFT:=S;
END;

Функция «Fill_Middle»

Данная функция помещает текст по центру экрана, а по


обеим от него заполняет указанным символом. Код
функции:
FUNCTION FILL_MIDDLE(S : STRING; C : CHAR;LONG : BYTE) : STRING;
VAR
N,N1 : BYTE;

25
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

BEGIN
N:=LENGTH(S);
IF N>=LONG
THEN S:=COPY(S,1,LONG)
ELSE
BEGIN
N1:=(LONG-N) DIV 2;
S:=FILL_LEFT(S,C,N+N1);
S:=FILL_RIGHT(S,C,LONG)
END;
FILL_MIDDLE:=S;
END;

Функция «Clr_Right»

Данная функция убирает из заданной строки справа


заданный символ. Код функции:
FUNCTION CLR_RIGHT(S:STRING; SIM:CHAR): STRING;
VAR
N : BYTE;
BEGIN
REPEAT
N:=LENGTH(S);
IF N<>0 {СИМВОЛЫ ЕСТЬ}
THEN
BEGIN
IF S[N]=SIM
THEN DELETE(S,N,1)

26
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

ELSE BREAK;
END
UNTIL N=0;
CLR_RIGHT:=S;
END;

Функция «Clr_Left»

Данная функция убирает из заданной строки слева


заданный символ. Код функции:
FUNCTION CLR_LEFT(S: STRING; SIM : CHAR): STRING;
VAR
N : BYTE;
BEGIN
REPEAT
N:=LENGTH(S);
IF N<>0 {СИМВОЛЫ ЕСТЬ}
THEN
BEGIN
IF S[1]=SIM
THEN DELETE(S,1,1)
ELSE BREAK;
END
UNTIL N=0;
CLR_LEFT:=S;
END;

27
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функция «Clr_Bound»

Данная функция убирает из заданной строки с обеих


сторон заданный символ. Необходимые функции и
процедуры: Clr_Left, Clr_Right. Код функции:
FUNCTION CLR_BOUND(S:STRING; SIM:CHAR): STRING;
BEGIN
S:=CLR_LEFT(S,SIM);
S:=CLR_RIGHT(S,SIM);
CLR_BOUND:=S;
END;

Функция «Visokosn»

Данная функция проверяет, является ли заданный год


високосным. Код функции:
FUNCTION VISOKOSN(G:WORD):BOOLEAN;
BEGIN
VISOKOSN:=((G MOD 4)=0) AND ( ((G MOD 400)=0) OR ((G MOD
100)<>0) );
END;

Функция «Day_Of_Month»

Данная функция считает, сколько дней в данном


месяце в данном году (високосном, или нет). Необходимые
функции и процедуры: Visokosn. Код функции:
FUNCTION DAY_OF_MONTH(MONTH : BYTE; YEAR : WORD) : BYTE;
VAR

28
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

DAY : BYTE;
BEGIN
CASE MONTH OF
2:BEGIN
IF VISOKOSN(YEAR)
THEN DAY:=29
ELSE DAY:= 28;
END;
4,6,9,11:DAY:=30;
ELSE
BEGIN
IF (MONTH<1) OR (MONTH>12)
THEN DAY:=0
ELSE DAY:=31
END;
END; { CASE }
DAY_OF_MONTH:=DAY;
END;

Функция «Name_Month»

Данная функция выводит имя месяца по его номеру.


Код функции:
FUNCTION NAME_MONTH(MONTH : BYTE) : STRING;
BEGIN
CASE MONTH OF
1: NAME_MONTH:='ЯHВАPЬ';
2: NAME_MONTH:='ФЕВPАЛЬ';

29
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

3: NAME_MONTH:='МАPТ';
4: NAME_MONTH:='АПPЕЛЬ';
5: NAME_MONTH:='МАЙ';
6: NAME_MONTH:='ИЮHЬ';
7: NAME_MONTH:='ИЮЛЬ';
8: NAME_MONTH:='АВГУСТ';
9: NAME_MONTH:='СЕHТЯБPЬ';
10: NAME_MONTH:='ОКТЯБPЬ';
11: NAME_MONTH:='HОЯБPЬ';
12: NAME_MONTH:='ДЕКАБPЬ';
ELSE NAME_MONTH:='ОШИБКА В HОМЕPЕ МЕСЯЦА';
END; {CASE}
END;

30
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

Функции и процедуры
работы с файлами
Процедура «DosWinUltraSpeedCopyFile»

Данная процедура гениально сделана. Она позволяет


копировать файлы как в DOSе, так и WINDOWSе.
Максимальная скорость копирования составляет 70 MB/sec.
Код процедуры:
PROCEDURE WINCOPYFILE(STARTFILEPATH,CLONEFILEPATH:STRING);
VAR
F,C:FILE;
BUF : POINTER;
MAXLENBUF : LONGINT;
LENBUF : WORD;
BEGIN
ASSIGN(F,STARTFILEPATH);
RESET(F);
MAXLENBUF:=MAXAVAIL;
IF MAXLENBUF>65535
THEN MAXLENBUF:=65535;
GETMEM(BUF,MAXLENBUF);
ASSIGN(C,CLONEFILEPATH);
REWRITE(C);
WHILE NOT EOF(F) DO
BEGIN
BLOCKREAD(F,BUF^,MAXLENBUF,LENBUF);

31
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры

BLOCKWRITE(C,BUF^,LENBUF);
END;
FREEMEM(BUF,MAXLENBUF);
CLOSE(F);
CLOSE(C);
END;

32