AS ImageDecoder. Работа с TFileStream

4 минуты на чтение

Итак хочу рассказать о своей работе AS ImageDecoder. Смысле программы очень простой, вы выбираете графическое изображение, составляете список информации, затем жмете кнопку «RUN» и все, все ваши данные уже в этом графическом файле, и никто не знает в каком, кроме Вас, а если еще и зашифруете их, то есть поставите галочку «Шифровать данные», то их вообще будет сложно найти. Можно будет найти только лишь с помощью этой программы и зная, где шифруется информация (в каком файле).

За основу был взят класс типа данных TFileStream. Смысл его, что я гружу в переменную данного типа все информацию файла и потом просто напросто дописываю туда нужную информацию, да всего ничего, не правда ли? легко все. А графические изображение при добавлении в них новой информации свою структуру не меняют и можно их открывать и дальше. Сейчас я Вам покажу как можно очень легко записать в графический файл информацию, а потом с него считать ее. На основе этого Вы сможете сделать свой Decoder, только потом прикрутить еще шифрование данных (об этом поговорим в других статьях).
Итак для начала нам надо определиться со структурой, которую мы будем записывать в наш графический файл будем записывать структуру такого плана:

  • имя (строковый тип данных) — name
  • пароль (строковый тип данных) — pass

Так теперь переведем ее на язык, который воспринимает Delphi

Type
TDecoder=record
name:string[100];
pass:string[100];
end;

Итак структура у нас готова. Дальше мы просто напросто пишем вот такой вот код на Button1Click , да не забудьте кинуть на форму компонент TOpenDialog, чтобы открывать файл.

procedure TForm1.Button1Click(Sender: TObject);
var
FileDecoder:TFileStream;
Decoder:TDecoder;
begin
try
if OpenDialog1.Execute then
begin
FileDecoder:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite   or fmShareDenyNone);
Decoder.name:='Vkontakte.ru+devdelphi';
Decoder.pass:='123123';
FileDecoder.Seek(0,soFromEnd);
FileDecoder.WriteBuffer(Decoder,SizeOf(TDecoder));
FileDecoder.Free;
end;
except
on e:Exception do
FileDecoder.Free;
end;
end;

Здесь мы открываем файл с помощью TFileStream, затем заполняем нашу запись, ставим указатель на конец файл с помощью Seek и записываем в файл с помощью WriteBuffer, а затем разрушаем переменную с помощью Free.

Запись вроде бы прошла у меня без ошибок, теперь пишем на Button2Click чтение из файла, код будет примерно такой:

procedure TForm1.Button2Click(Sender: TObject);
var
FileDecoder:TFileStream;
Decoder:TDecoder;
begin
try
if OpenDialog1.Execute then
begin
FileDecoder:=TFileStream.Create(OpenDialog1.FileName,fmOpenReadWrite or fmShareDenyNone);
FileDecoder.Seek(-SizeOf(Decoder),soFromEnd);
FileDecoder.ReadBuffer(Decoder,SizeOf(TDecoder));
if Pos('devdelphi',Decoder.name)<>0 then
begin
Delete(Decoder.name,pos('+',Decoder.name),length(Decoder.name));
ShowMessage('name - '+Decoder.name+' pass - '+Decoder.pass);
end
else
Application.MessageBox('Not','Error',MB_OK);
FileDecoder.Free;
end;
except
on e:Exception do
begin
Application.MessageBox('Not','Error',MB_OK);
FileDecoder.Free;
end;
end;
end;

Здесь кода уже чуток побольше. Ну здесь почти тоже самое только устанавливаем указатель на размер нашей записи, и считываем информацию с помощью ReadBuffer. Я при записи нашей структуры, дописывал в поле name — devdelphi, чтобы потом разделить данные, то есть у нас в файле может быть блок размером равный нашей структуре и он конечно выведет нам разные «кракозябры» и иероглифы, так что просто ввожу какое-то уникальное слово, вот так.

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

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Не долго пришлось ждать следующей статьи — про MapWindow GIS в Delphi, а тема ее — Работа с таблицами атрибутов, а точнее, работа, с тем самым, файлом dbf. Вообще, как Вы догадались возможно раньше, что приложен файл dbf - к shp-файлу не с проста. Вообще, если...
Здравствуйте, вот все продолжаю мучать VK API в Delphi. На этой раз «перст пал» на расширенные методы API. К данным методам относятся работа с личными сообщениями работа со стеной пользователя работа с фотографиями и альбомами фотографий В данный момент хоте...
Всех приветствую, хочу продолжить тему по MapWindow GIS в Delphi, а на этот раз хотелось бы поговорить о новой версии, которая вышла совсем недавно в июне, данного года, последняя версия сборки 4.8.2. Скачать можно с официального сайта MapWindow GIS, благо дан...