Upload
makcfreeman
View
2.484
Download
8
Embed Size (px)
Citation preview
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
1
Turbo Pascal 7.0
Готовые алгоритмы, функции, процедуры
Автор сборника и текстов программ: Дробот Виктор (Ghost)
Дата создания: 02.01.2008
Время создания: 16.35
Йошкар-Ола
2008
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
2
Предисловие:
В этом сборнике собраны функции и процедуры, позволяющие Вам использовать их в процессе создания программы. Все функции и процедуры прекрасно компилируются, запускаются и включаются в программу. Здесь собраны функции работы с экраном, символами, строками, датами и годами.
Всем, хорошо знающим Turbo Pascal без труда удастся разобраться во всех кодах программ, переменных, которые используются в них, константах и многом другом.
Для работы ВСЕХ представленных кодов, необходим модуль TpCrt.
Приятной Вам работы с Turbo Pascal!!!
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
3
Содержание
Предисловие стр.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
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
4
Функция «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
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
5
Функции и процедуры работы с экраном
Процедура «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). Код функции:
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
6
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
7
'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 – текст заголовка ОКНА ВОПРОСА
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
8
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
9
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
10
Процедура «Beep»
Данная процедура при нужной ситуации создаёт писк, количество которых Вы можете задавать. Код процедуры:
PROCEDURE BEEP (N : BYTE);
VAR
K : BYTE;
BEGIN
FOR K:=1 TO N DO
WRITE(#7);
END;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
11
Функции и процедуры работы с символами и
строками
Процедура «GetStrDig»
Данная процедура выводит сообщение на экран, с просьбой ввести число. Если вы ошиблись при вводе, программа выводит на экран сообщение с текстом предупреждения и заставляет работать процедуру Beep. После завершения ввода, программа преобразовывает введённое Вами число в виде строки в его числовое представление. Код процедуры:
PROCEDURE GETSTRDIG(VAR X:WORD; N : BYTE; CODE : CH AR; 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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
12
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(WHI TE,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);
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
13
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
14
Процедура «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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
15
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
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
16
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
17
Функция «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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
18
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
19
Функция «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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
20
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
21
Функция «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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
22
Функция «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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
23
Функция «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ОЛДЖЭЯЧСМИТЬБЮ';
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
24
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 : BYT E) : 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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
25
Функция «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 : BY TE) : STRING;
VAR
N,N1 : BYTE;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
26
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)
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
27
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
28
Функция «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
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
29
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АЛЬ';
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
30
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;
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
31
Функции и процедуры работы с файлами
Процедура «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);
Turbo Pascal 7.0 Готовые алгоритмы,
функции, процедуры
32
BLOCKWRITE(C,BUF^,LENBUF);
END;
FREEMEM(BUF,MAXLENBUF);
CLOSE(F);
CLOSE(C);
END;