Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Без трафика, Архивирование 
V
    Опции темы
S6T6N6
Дата 18.1.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2006

Репутация: нет
Всего: нет



Вообщем начну попорядку: (прошу мою идею не воровать :-))
Эта идея мне давненько пришла в голову и вот работаю над этим проектом, главное его предназначение, неважно tidhttp или tsocket,(работаю с tidhttp), суть в следующем написал сервер кинул на камп в универе где круглые сутки инет, так вот дома клиентская часть программы, я делаю запрос к серверу на загрузку той или иной страницы в инете, сервер загружает её сохраняет в файл и должен архивировать, потот архив передаёться мне домой, где я его разархивирую и просматриваю данные той или иной страницы тоесть получаеться что траффика набегает во много раз меньше(ну просто вздумалось мне написать такую прогу инет то и так халявный), с раззархивированием всё норм, так всё получаеться и работает единственная загвоздка в архивировании подскажите пожжжалуйста, как мне архивировать скок рыл никак неполучаеться архивировать, киньте пожалуйста исходником если есть возможность . . .
PM MAIL   Вверх
Snowy
Дата 18.1.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

unit compress;
{* Модуль компрессии}

interface

uses Windows, Classes, ZLib;

type
  TCompress = class
  {* Компрессор потока. На вход подается поток src, на выход dest.
   Сжимаются Size байт из входящего в исходящий поток.}
    private
      cs: TCompressionStream;
    public
      constructor Create(src, dest:TStream; size: dword);
      {* Все действие выполняется в конструкторе. После создания, сразу уничтожить
      |<br>
      Пример: TCompress.Create(src, dest, size).Free;}
  end;

  TDecompress = class
  {* Декомпрессор потока, созданного с помощью TCompress.
    На вход подается сжатый поток src, распакованный результат пишется в dest}
    private
      cs: TDecompressionStream;
    public
      {* Все действие выполняется в конструкторе. После создания, сразу уничтожить
      |<br>
      Пример: TDecompress.Create(src, dest).Free;}
      constructor Create(src, dest:TStream);
  end;

implementation

constructor TCompress.Create;
begin
  cs:=TCompressionStream.Create(clMax, dest);
  cs.Write(size,SizeOf(size));
  cs.CopyFrom(src,Size);
  cs.Free;
end;

constructor TDecompress.Create;
var
  Size: dword;
begin
  cs:=TDecompressionStream.Create(src);
  cs.Read(size,SizeOf(Size));
  dest.CopyFrom(cs,size);
  cs.Free;
end;

end.

PM MAIL   Вверх
Snowy
Дата 18.1.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



закачивать данные методами IdHTTP.Get и IdHTTP.Put в TMemoryStream.
При помощи этого модуля, сжимаешь полученный TMemoryStream в другой TMemoryStream.
Сжатый TMemoryStream отправляешь себе. У себя его расжимаешь в TMemoryStream или TFileStream.

Только твой сервер должен работать как прокси, иначе возникнут проблемы с относительными ссылками.

Пример использования:
Код

// сжать файл
procedure CompressFile(FileName: string);
var
  fsrc, fdst: TFileStream;
begin
  try
    fsrc:=TFileStream.Create(FileName, fmOpenRead);
    try
      fdst:=TFileStream.Create(FileName+'.z', fmCreate);
      try 
        TCompress.Create(fsrc, fdst, fsrc.Size).Free;
      finally
        fdst.Free;
      end;
    finally
      fsrc.Free;
    end;
  except end;
end;    

// или без обработчиков исключений - только суть
procedure CompressFile(FileName: string);
var
  fsrc, fdst: TFileStream;
begin
    fsrc:=TFileStream.Create(FileName, fmOpenRead);
    fdst:=TFileStream.Create(FileName+'.z', fmCreate);
    TCompress.Create(fsrc, fdst, fsrc.Size).Free;
    fdst.Free; fsrc.Free;
end;    

Аналогично декомпрессия.
PM MAIL   Вверх
S6T6N6
Дата 18.1.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 10.1.2006

Репутация: нет
Всего: нет



Всё, Ураа ! Спасибо огромнейшее, вопросов больше неимею. Snowy, точто нужно(чтож я раньше неподумал об этом) !
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.