Вопросы - ответы по Pascal.

Вывод двумерного массива в виде таблицы.
Создание файла и запись информации в него.
Обработка ошибок ввода численных значений.
Определение ASCII-кода нажатой клавиши.
Звук через спикер.
Определение даты и времени.
Определение размера диска.
Поиск файлов.
Изменение атрибутов файлов.
Определение версии Dos.

Вывод двумерного массива в виде таблицы.

Все очень просто. Программа имеет такой вид:

Код:
var
mas:array[1..5,1..5] of integer; {объявление двухмерного массива}
i,j:integer;
begin
{Ввод значений элементов массива}
for i:=1 to 5 do
for j:=1 to 5 do readln(mas[i,j]);
{Вывод значений элементов массива}
for i:=1 to 5 do begin
for j:=1 to 5 do
write(' ',mas[i,j]);
writeln;
end;
end.

Создание файла и запись информации в него.

Результатом работы следующей программы будет созданный текстовый файл test.txt, содержащий строчку "record" . Программа имеет такой вид:

Код:
var
f: file;{файловая переменная f}
begin
assign(f,'test.txt');{назначение файловой переменной f имени файла test.txt}
rewrite(f);{создание файла и открытие его для записи}
writeln(f,'record');{запись информации в файл}
close(f);{закрытие файла}
end.

Обработка ошибок ввода численных значений.

В приведенном примере программа закончит работу только при правильном вводе значения, т.е. если будет введено целое число.

Код:
uses crt;
var
i:integer;
flag:boolean;
begin
{$I-}{отключаем контроль ошибок ввода вывода}
repeat
readln(i);{ввод значения}
if IoResult=0 then flag:=true {если нет ошибки, то выходим из цикла}
else begin
gotoxy(wherex,wherey-1);{перевод курсора на строку вверх}
delline;{удаляем строку}
end;
until flag;
{$I+}{включаем контроль ошибок ввода вывода}
end.

Определение ASCII-кода нажатой клавиши.

Используется функция Ord. Программа закончит работу после нажатия клавиши Esc.

Код:
Uses crt;
Var ch : char;
Begin
clrscr; {очистка экрана}
repeat
ch:=readkey; {ожидание нажатия клавиши}
WriteLn('ASCII-код клавиши равен ',ord(ch)); {Вывод ASCII - кода клавиши}
until ch=#27; {27 - ASCII - код клавиши Esc}
End.

Звук через спикер.

Используется процедура Sound(Hz:word), где Hz - частота звуковых колебаний, и процедура Delay(Ms:Word), где Ms - время задержки (время звучания).

Код:
Uses Crt;
Begin
Sound(600); {включение звука, частота 600Гц}
Delay(100); {Задержка 100мс}
NoSound; {выключение звука}
End.

Определение даты и времени.

Код:
Uses Dos;
Var
Year,Month,Day,DayOfWeek:Word;
Hour,Minute,Second,Hund:Word;
Begin
GetDate(Year,Month,Day,DayOfWeek); { определение даты }
Writeln(Day,'.',Month,'.',Year); { выод даты }
GetTime(Hour,Minute,Second,Hund); { определение времени }
WriteLn(Hour,':',Minute,':',Second,'.',Hund); { вывод времени }
End.

Определение размера диска.

Используется функция DiskSize(Drive:Byte):LongInt, где Drive - номер диска. 0 - текущий дисковод, 1 дисковод А, 2 - дисковод В, 3 - диковод С и т.д. При неправильном номере диска функция выдаст значение 1.

Код:
Uses Dos;
Begin
WriteLn('DiskSize = ',DiskSize(0) div 1024 div 1024,' Mb'); { объем диска }
WriteLn('DiskFree = ',DiskFree(0) div 1024 div 1024,' Mb'); { объем свободного пространства на диске }
End.

Поиск файлов.

Используются процедуры FindFirst и FindNext. В данном примере поиск будет осуществлятся в том каталоге из которого запущена программа, можно указать каталог. Например: С:\*.ехе.

Uses Dos;
Var
S:SearchRec;
Begin
FindFirst('*.exe',AnyFile,S);
While DosError=0 do begin
WriteLn(S.Name);
FindNext(S);
End;
End.

Изменение атрибутов файлов.

Используется процедура SetFAttr(var F;var Attr:Word), где F - файловая переменная и Attr - атрибуты файла.

Код:
Uses Dos;
Var
F:File;
Begin
Assign(F,'test.txt');
SetFAttr(F,Hidden+ReadOnly);{ присваеваем файлу атрибуты скрытый и только для чтения }
End.

Атрибуты файла могут иметь следующие значения:
Hidden - скрытый.
Archive - архивный.
ReadOnly - только для чтения.
SysFile - системный.

Определение версии Dos.

Uses Dos;

Код:
Var
V:Word;
Begin
V:=DosVersion;
WriteLn('Dos Vesion: ',Lo(V),'.',Hi(V));
End.