Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2010, 22:34
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию Упаковка файлов

Если в конец файла дописать какую-то инфу, первоначальный файл будет открываться? Хочу сделать упаковку файлов, но так, что бы первоначальный файл можно было прочитать
Ответить с цитированием
  #2  
Старый 01.10.2010, 22:35
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

все зависит от того, какие это файлы и как ты, или не ты, их читаешь. давай более подробную информацию.
Ответить с цитированием
  #3  
Старый 01.10.2010, 22:36
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Тебе посути надо полу джойнер, полу архиватор.
Ну архиватор - zlib тебе в помощь.
Ну а с джойнеров можешь поискать, в инете есть много примеров.
Вот тому пример: http://forum.inattack.ru/delphi-Dela...mi-t24457.html
__________________
Помогаю за Спасибо
Ответить с цитированием
  #4  
Старый 02.10.2010, 19:00
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

Цитата:
Сообщение от lmikle
давай более подробную информацию.
Мне надо что: есть, скажем, 10 изображений .bmp, (1.bmp,2.bmp и т.д.)
Мне надо записать их всех в один файл (скажем, 1.bmp) так, чтобы все программы могли прочитать этот файл и отобразить 1.bmp
Ответить с цитированием
  #5  
Старый 02.10.2010, 19:08
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Цитата:
Сообщение от Моклев
Мне надо что: есть, скажем, 10 изображений .bmp, (1.bmp,2.bmp и т.д.)
Мне надо записать их всех в один файл (скажем, 1.bmp) так, чтобы все программы могли прочитать этот файл и отобразить 1.bmp

Ну запихать информацию (или файл) в ЕХЕ можно, при этом будет открываться 1 файл (как тебе и нужно), но записать в bmp 10 файлов, и чтоб открывался 1 я думаю не реально.
Если надо пример по сохранению в ЕХЕ, могу дать пример.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #6  
Старый 02.10.2010, 23:08
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

Цитата:
Сообщение от v1s2222
могу дать пример.
было бы неплохо, только я не совсем понял, что получится
Ответить с цитированием
  #7  
Старый 02.10.2010, 23:30
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Вот пример, который записывает из одного приложение, в другую программу (ЕХЕ) текст. Но этот текст может быть и другая программа.
При этом, программа, в которую записан текст полностью работоспособна и открывается проводником.

Код:
function AttachToFile(const AFileName: String; MemoryStream: TMemoryStream): Boolean;
var
  aStream: TFileStream;
  iSize: Integer;
begin
  Result := False;
  if(not(FileExists(AFileName))) then
    Exit;

  Try
    aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);
    MemoryStream.Seek(0, soFromBeginning);
    aStream.Seek(0, soFromEnd);
    aStream.CopyFrom(MemoryStream, 0);
    iSize := MemoryStream.Size + SizeOf(Integer);
    aStream.Write(iSize, SizeOf(iSize));
  Finally
    aStream.Free;
  end;

  Result := True;
end;

function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;
var
  aStream: TFileStream;
  iSize: Integer;
begin
  Result := False;
  if(not(FileExists(AFileName))) then
    Exit;

  Try
    aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
    aStream.Seek(-SizeOf(Integer), soFromEnd);
    aStream.Read(iSize, SizeOf(iSize));
    if(iSize > aStream.Size) then begin
      aStream.Free;
      Exit;
    end;

    aStream.Seek(-iSize, soFromEnd);
    MemoryStream.SetSize(iSize - SizeOf(Integer));
    MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));
    MemoryStream.Seek(0, soFromBeginning);
  Finally
    aStream.Free;
  end;

  Result := True;
end;

////////////////////////
Вот пример загрузки (уже в записанную программу):


var
  aStream: TMemoryStream;
begin
  aStream := TMemoryStream.Create;

  Try
    LoadFromFile(ExtractFileName(ParamStr(0)), aStream); // загружаю из самого себя
    Memo1.Lines.LoadFromStream(aStream)
  Except
    ShowMessage('Ошибка!!!');
    Halt; // выхожу
  end;
  aStream.Free;

/// а вот пример записывания в файл:
var
  aStream: TMemoryStream;
begin
  AStream := TMemoryStream.Create;
  Memo1.Lines.SaveToStream(aStream); // загружаю

/// записываю нужную информацию...
    AttachToFile('C:\1.exe', aStream);
///////////////////////////////////////////

  aStream.Free;
__________________
Помогаю за Спасибо
Ответить с цитированием
  #8  
Старый 03.10.2010, 11:08
Аватар для Моклев
Моклев Моклев вне форума
Новичок
 
Регистрация: 27.02.2009
Адрес: Лен. обл., г. Коммунар
Сообщения: 53
Версия Delphi: 7 и 2010
Репутация: 16
По умолчанию

большое спасибо)) очень помогло
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:19.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter