type
перед разделом var, и могут быть
как локальными для процедур и функций, так и глобальными. Разумеется,
если вы используете
type <имя_записи> = record ...; //описание полей end; //record
Однако мало описать такую
var myPerem : имя_записи;
В дальнейшем можно обращаться к отдельным
myPerem.имя_поля
Давайте посмотрим, как можно сохранить в var
создайте раздел type. Неважно, что выше уже есть такой раздел, мы
можем создать еще один, главное, чтобы он был перед var.
type
myForm = record
Left : Integer;
Top : Integer;
Width : Integer;
Height : Integer;
end; // record
Теперь у нас есть описанная myForm, в которой имеется 4 Left, Top, Width и Height. Как вы уже догадались, в эти
Теперь внимание! myForm, а также использовать
myForm. Посмотрите на следующие
примеры:
var
perem : myForm; //переменная нашего типа
ar : array [0..10] of myForm; //массив
f : File of myForm; //типизированный файл
Вернемся к нашему проекту. Ниже записи имеется глобальный раздел var, где описана переменная Form1. Ниже нее добавим еще одну
переменную:
myF : myForm;
Теперь мы можем при разрушении формы создать двоичный файл, в
котором будут сохраняться положение и размер формы. Создайте
обработчик событий onDestroy для формы, и в нем напишите следующий
код:
var f : File of myForm; //типизированный файл begin //сохраняем данные в запись: myF.Left := Form1.Left; myF.Top := Form1.Top; myF.Width := Form1.Width; myF.Height := Form1.Height; //создаем или перезаписываем файл: try AssignFile(f, 'my.dat'); Rewrite(f); Write(f, myF); finally CloseFile(f); end; // try
Обратите внимание, что мы не делаем проверку на существование файла, поскольку если файла нет, он будет создан, а если есть – перезаписан. Кроме того, в качестве имени мы используем строку 'my.dat'. Файл с таким именем будет создан в текущей папке. Поскольку наша программа не меняет папок, то текущей будет являться та, в которой находится программа. Сохраните проект, скомпилируйте, посмотрите, как работает программа. Закройте ее и файловым менеджером перейдите в папку с проектом. Посмотрите, появился ли файл my.dat, попробуйте его прочитать.
Как видите, данные в файле хранятся в двоичном виде, что-либо прочитать там довольно сложно. Иногда удобней пользоваться таким способом, потому что всегда может найтись пользователь, который попытается играть с настройками в текстовых файлах. Ini – файлы имеют текстовый тип, и пользователь будет иметь возможность изменять там настройки вручную. Неважно, если мы сохраняем только размеры и положение формы, но мы можем сохранять и другие, более серьезные параметры! Однако пароли напрямую сохранять не получится – текст все же будет виден.
Насчет текста... Тип string имеет динамический характер. Другими
словами, размер переменной такого типа может изменяться в процессе
работы программы. Тип динамического характера (строка String или
динамический массив) можно указать в записи, однако его нельзя
использовать в
Перейдем в раздел, где мы описывали наш тип данных. После описания Height опишем еще одно
Caption : String[50]; //размер строки задан жестко, его можно использовать в файле
Теперь перейдем в обработку события onDestroy, и
добавим строку:
myF.Caption := Form1.Caption;
в разделе сохранения данных в запись. Еще раз сохраните, откомпилируйте и запустите программу. Закройте ее и посмотрите на файл my.dat. Как видите, надпись в заголовке формы появляется в файле без изменений, так что любые ваши пароли все-таки можно будет прочитать. Измените заголовок формы, снова скомпилируйте проект и посмотрите в файл – строка по-прежнему читается.
Теперь нам нужно при открытии формы применить все эти настройки.
Если вы помните пример с ini – файлом, настройки мы применяли в
событии формы onCreate, также поступим и здесь. Создайте это событие
для формы. Здесь нам придется проверять наличие файла – ведь если
программа запускалась у клиента впервые, то файла там еще не было, он
будет создан при закрытии программы. Поэтому будем применять настройки
в том случае, если файл существует.
var
f : File of myForm;
begin
//если файла нет - выходим:
if not FileExists('my.dat') then Exit;
//открываем файл и считываем настройки в запись:
try
AssignFile(f, 'my.dat');
Reset(f);
Read(f, myF); //считываем запись в нашу глобальную переменную
finally
CloseFile(f);
end; //try
//применяем полученные настройки:
Form1.Left := myF.Left;
Form1.Top := myF.Top;
Form1.Height := myF.Height;
Form1.Width := myF.Width;
Form1.Caption := myF.Caption;
end;
Конечно, в
Такой способ сохранения параметров кажется менее удобным, чем ini-файлы, однако компенсируется тем, что здесь можно сохранять данные любого типа – строки и даты, целые и вещественные числа, логические данные и даже массивы.
Самостоятельно измените программу. Добавьте на форму один CheckBox,
состояние которого (включен или нет) будем сохранять в файл. Добавьте
в CheckBox, записывайте в него либо True, либо False.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.