Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Хранение файлов в файле =)

Здравствуйте comp,
Меня интересует следующие: каким образом можно запихнуть .gif, .jpg и
т.д. файлы в один файл, но с возможностью извлечь из этого файла всё
что туда запихнул? Это не слишком сложно для неопытного программиста?

Ответить   Wed, 21 Jan 2004 14:36:15 +0200 (#60164)

 

Ответы:

Мне тоже недавно надо было сделать что - то вроде этого.
Запихнуть в один файл HtMl страницы (чтоб они не потерялись), добавить
некоторую информацию (описания html страниц и т.п.). Плюс это всё надо было
закодировать (от посторонних глаз).
Для этого я всю инфу рассматривал как текст, а для разделения использовал
теги, типа

HTML BEGIN
{Текст html}
HTML END
INF BEGIN
DATE=<> {дополнительная информация}
INF END

Создать такой файл просто.
1. Создаёшь новый файл.
2. Пишешь в нём HTML BEGIN
3. Открываешь HTML файл с помощью StringLit.
4. Читаешь строку и переписываешь её в файл. Так, пока не скопируешь все
строки.
5. Пишишь HTML END.
Так далее.
Потом это файл шифруется при помощи PGP.
Открывать тоже легко.
1. Открываешь файл и читаешь его.
2. Встречается HTML BEGIN, создаешь тот же STRINGLIST.
3. Переписываешь все последующие строки в STRINGLIST, пока не встретишь HTML
END.
4. ВСТРЕТИЛ HTML END, сохраняешь STRINGLIST в файле HTML.
Вот и всё.

Но HTML как ни как, текстовой документ, и +- 1 байт погоды не сделает, а
файл с BIN информацией такой урон может и неперенисти!

P. S. А вообще для этих целей можно использовать компоненты архиваторы (я
знаю что они есть, но не видел не одного рабочего!) или базы данных.
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Wed, 21 Jan 2004 19:05:08 +0300 (#60297)

 

Привет!

В ЕХЕшники (сделанные на Дельфе) в конец можно дописывать... вот шифруй,
дописывай, а потом тем же ЕХЕшником читай...

Ответить   Thu, 22 Jan 2004 00:16:21 +0200 (#60500)

 

Hello keel,

21 января 2004 г., 14:36:15, you wrote:


Если ты хочешь сохранить (хранить) некие файлы внутри своего ЕХЕ или
DLL и их от туда вытягивать и работать с ними, могу посоветовать
следующие на Делфи (на Билдере будет тоже самое, но другой синтаксис):

создаешь текстовый файл с расширением .RC и пишешь в нем
<имя ресурса> <тип хранимого ресурса> <имя файла>
например:
BackGround0 BITMAP "BackGround0.bmp"
BackGround1 BITMAP "BackGround1.bmp"
BackGround2 BITMAP "BackGround2.bmp"
BackGround3 BITMAP "BackGround3.bmp"
SoundAbout WAVE "About.wav"
CurSQLWait RCDATA "SQLWait.ani"
AnimateWait AVI "AnimateWait.avi"

тут перечислены стандартные типы ресурсов. так же можно использовать
свои, наприме MYGIF. но лучше использовать стандартные, так тогда
проще их вытягивать будет. Так как для GIF и JPG нет стандартных
типов, необходимо использовать RCDATA.
Потом все это сохраняешь под именем myres.rc
ОЧЕНЬ ВАЖНО, что бы все перечисленные в нем файлы и сам файл RC лежали
в одной папки.

Далее, компилируешь его с помощью утилиты brcc32 в файл .RES
brcc32 myres.rc
В результате получаешь myres.res
Вот его потом присоединяешь в свое проект или в отдельный модель.
{$R myres.res}

Тот файл RES, который сама Делфя используем по умолчания для каждого
проекта, лучше не использовать, получишь много головной боли хлопот. Я
это сам на своей шкуре испытал.

После присоединения его к проекты надо проект перебилдить (Build), а
не перекомпилировать, т.к. при компиляции он не компилит файл RES в
ЕХЕ. И в последующих изменениях в RC файле надо каждый раз билдить
весь проект.

Что бы вытянуть эти ресурсы из ЕХЕ файла и сохранить их в файлы:
var
ResStream : TResourceStream;
begin
ResStream := TResourceStream.Create(hInstance, <имя ресурса>, RT_RCDATA);
ResStream.SaveToFile('NameFile.ext');
ResStream.Free;
end;

Смотри в Хелпе:
TResourceStream, LoadImage, LoadFromResourceName, LoadFromResourceID,
LoadIcon, PlaySound, FindResource, FindResourceEx и т.д. и т.п.

С Ув. Feniks mailto: feni***@b*****.ua
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Feniks Thu, 22 Jan 2004 09:34:28 +0200 (#60687)

 

Да нет, не сложно. Нужно объявить файл нетипизированным F: File; а потом читать
с помощью BlockRead и писать с помощью BlockWrite. Им все равно, что читать,
а что писать. В Delphi можно воспользоваться потоками.

Идея: готовишь в памяти структуру, где сначала записано в виде блока фиксированного
размера - что идет дальше
(суть его), и общий размер "этого-того, что будет дальше". В начало такой структуры
добавляют 2-3 байта идентификационных (любые символы). И можно размер такой
"заголовочной части". Потом записываешь в файл и заголовок и содержимое.

Чтение: считываешь заголовок, если узнал по первым символам, то считываешь остальное
и расшифровываешь

Примерно такую идею используют все графические файлы, посмотри например, описание
BMP

С уважением,
Борис Сурин, surin_***@m*****.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Thu, 22 Jan 2004 15:21:45 +0300 (#60917)

 

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

Константин Tech.
Номер выпуска : 1782
Возраст листа : 138
Количество подписчиков : 380
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/73481
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Shewelee" Tue, 3 Feb 2004 19:41:17 +0300 (#73481)

 

Здравствуйте, Shewelee.

Вы писали 3 февраля 2004 г., 19:41:17:

Может и есть... Только смысл этих библиотек, если написать такую библиотеку -
дело пятнадцати-тридцати минут? Если будут сложности - обращайтесь на мыло...

Ответить   LinFor Fri, 6 Feb 2004 22:30:28 +0300 (#73542)

 

Тут ни чего особо сложного, считывайшь файл, дописываешь к уже
существующему, и в отдельном инишнике или реестре или еще как, сохраняешь
инфу о порядке и длинне файлов. Когда надо - распоковал, подключил. Если
надо, можно вызвать RAR или другую сжималку.

С уважением monah
janal***@n*****.ru

менее

архив

Возраст листа : 139
Количество подписчиков : 379
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/73794
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Sat, 7 Feb 2004 10:59:23 +0600 (#73794)