Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 62 - Методы, наследование классов, операции с классами Delphi, (часть 4/6)

  В предыдущих уроках мы уже создали ряд методов: чтения и записи свойств, конструктор, деструктор. Поскольку вы уже освоились с методами, давайте создадим еще два метода: SaveToFile и LoadFromFile, позволяющих сохранять сведения о личности в файле и читать их из файла.

  Без подобных методов наш класс явно неполноценный. Введите в класс объявления открытых методов:

procedure SaveToFile(FileName: string  = '');
procedure LoadFromFile(FileName:   string);
  Первый метод содержит значение параметра по умолчанию. Предполагается, что если при вызове метода параметр не задан, то имя файла бу-.дет совпадать с именем личности, записанным в поле FName. Реализация объявленных методов может быть такой:
procedure  TPerson.SaveToFile(FileName: string  = '');
var  
	F:   TextFile;
begin
	if FileName = '' then 
		FileName := FName + '.txt'
	else 
		FileName := ChangeFileExt (FileName, '.txt');
		
	AssignFile(F, FileName);
	Rewrite(F);
	Writeln(F, FName);
	Writeln(F, FDepl) ;
	Writeln(F, FDep2) ;
	Writeln(F, FDep3);
	Writeln(F,    IntToStr(FYear)) ;    .
	Writeln(F,   FSex);
	if  FAttr   then  Writeln(F, 't')  else Writeln(F, 'f') ;
	Writeln(F,   FComment);
	CloseFile(F);
	
	if FDoc <> nil then  
		FDoc^.Lines.SaveToFile(ChangeFileExt(FileName, '.rtf')); 
end;

procedure   TPerson.LoadFromFile(FileName:   string);
var  
	F:   TextFile;
	s:   string;
begin
	FileName   :=  ChangeFileExt(FileName,  '.txt'); AssignFile(F,   FileName); Reset(F);
	Readln(F, FName); Readln(F, FDepl); 
	Readln(F, FDep2); Readln(F, FDep3); 
	Readln(F, s) ; 
	FYear   :=   StrToInt(s); Readln(F, FSex); Readln(F, s) ; FAttr :=   (s  =  ' t' ) ; 
	Readln(F,   FComment); CloseFile(F); 
	if   (FDoc  <>  nil) and  
	FileExists(ChangeFileExt(FileName, '.rtf)) then  
	begin
		FDoc^.Lines.LoadFromFile(ChangeFileExt(FileName, '.rtf'));  
		FDoc^.Lines.SaveToFile(FileTMP); 
	end;
end;

   Вы уже достаточно опытны, чтобы подобный код можно было не комментировать. Отмечу только, что в этом коде хранение данных полей предусмотрено в текстовом файле. Это не лучший вариант, но наиболее простой. Одним из недостатков такого хранения является то, что файлы доступны возможным злоумышленникам, которые могут прочитать их, получить доступ к конфиденциальным данным, а могут и изменить характеристику. Правда, все это они смогут сделать и с помощью вашего тестового приложения. Но приложение можно защитить паролем. А текстовый файл ничем не защитишь.

  Так что может иметь смысл хотя бы зашифровать его в процедуре SaveToFile и дешифровать в процедуре LoadFromFile. Вызов метода SaveToFile в вашем тестовом приложении может быть оформлен оператором:

Pers.SaveToFile;

ИЛИ

if SaveDialogl.Execute then Pers.SaveToFile(SaveDialogl.FileName);

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

  Вызов метода LoadFromFile в вашем тестовом приложении может быть оформлен оператором:

if OpenDialogl.Execute then Pers.LoadFromFile(OpenDialogl.FileName);

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

Продолжение в следующем уроке.

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 12 Июля 2013
Просмотров:

Урок 61 - Конструкторы классов Delphi, (часть 3/6) Урок 63 - Конструкторы классов Delphi, (часть 5/6)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Theihpled [Новичок] Дата: 2017-11-07
Здравствуйте, Савельев Александр. У меня к вм небольшой вопрос по языку https://cloud.mail.ru/public/KFS1/dYUrFbaTU . Cпасибо за уроки.