Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.04;
Скачать: CL | DM;

Вниз

Компонент для тестирования zip-архивов   Найти похожие ветки 

 
Валигози ©   (2008-11-06 10:23) [0]

Вроде бы проблем с компонентами работающими с zip-архивами быть не должно - я накачал кучу разных, но ни один не работает должным образом... :(
Собственно мне достаточно, что бы компонент мог прочитать список заархивированных файлов (это умеют почти все компоненты что я нашёл) и что бы мог протестировать любой выбранный файл - вот здесь начинаются проблемы, одни компоненты для тестирования извлекают файлы во временную директорию, другие прямо в память и в том и в том случае возникают проблемы при тестировании больших файлов внутри архива (около гига и больше).
Подскажите пожалуйста, есть ли (и где если есть) такая компонента которая тестировала бы файлы прямо на лету?
(Желательно чтобы она не таскала за собой dll и была с исходными кодами)


 
tesseract ©   (2008-11-06 10:27) [1]


> такая компонента которая тестировала бы файлы прямо на лету


Это как ? Для тестирования-то надо же собрать файл  по словарю.


 
Валигози ©   (2008-11-06 10:49) [2]

Я думаю для тестирования любого файла в zip-архиве нескольких мегабайт в памяти вполне достаточно и винду не напрягает, но если компонента для тестирования пытается выделить для гигового файла сразу всю память - я получаю "Out of memory", хотя с помощью того же WinRar"а этот архив проходит тест без запинки...


 
tesseract ©   (2008-11-06 10:54) [3]


> но если компонента для тестирования пытается выделить для
> гигового файла сразу всю память - я получаю "Out of memory"


Мне кажеться это ошибка где-то в коде. Процесс без проблем 2 гига урвать может


> Я думаю для тестирования любого файла в zip-архиве нескольких
> мегабайт в памяти вполне достаточно


Вполне возможно пройдёт вариант с извлечением файла блоками в одну область памяти. Тут и 1 мегабайта может хватить.


 
Валигози ©   (2008-11-06 10:57) [4]


> Вполне возможно пройдёт вариант с извлечением файла блоками
> в одну область памяти. Тут и 1 мегабайта может хватить.

Это мне подходит :) Где бы такую компоненту раздобыть?


 
KSergey ©   (2008-11-06 11:00) [5]

а распаковка всегда идет в предварительно выделенный буфар памяти или есть камопненты, умеющие распаковывать в Stream?


 
Riply ©   (2008-11-06 11:01) [6]

> [4] Валигози ©   (06.11.08 10:57)
> Это мне подходит :) Где бы такую компоненту раздобыть?

А полазить по исходному коду, тех, кто тебя не устраивает,
и на основе этого написать то что нужно не подходит ?


 
tesseract ©   (2008-11-06 11:05) [7]


> Где бы такую компоненту раздобыть?


Самому часок по коду полазить, и посмотреть, где они там блоками распаковывают.


 
Валигози ©   (2008-11-06 11:32) [8]


> KSergey ©   (06.11.08 11:00) [5]
> а распаковка всегда идет в предварительно выделенный буфар
> памяти или есть камопненты, умеющие распаковывать в Stream?

Основная масса компонентов которые я накачал умеют извлекать только в файл и всего один который умеет извлекать в поток: http://www.torry.net/quicksearchd.php?String=KAZip+v.2.0&Title=Yes
Я даже пробовал создать своего потомка от TStream который в методе Write вообще никуда не пишет - всё равно компонент "KAZip v.2.0" вылетает на "Out of memory"... :(


> Riply ©   (06.11.08 11:01) [6]
> > [4] Валигози ©   (06.11.08 10:57)
> > Это мне подходит :) Где бы такую компоненту раздобыть?
>
> А полазить по исходному коду, тех, кто тебя не устраивает,
>
> и на основе этого написать то что нужно не подходит ?


> tesseract ©   (06.11.08 11:05) [7]
>
> > Где бы такую компоненту раздобыть?

> Самому часок по коду полазить, и посмотреть, где они там
> блоками распаковывают.

Это понятно, благо компонентов с исходными кодами куча, корректируй какуюхоч, но вопрос же был не в этом...

Собственно и работка эта не срочная. Просто мне каждое утро приходится составлять отчёт о том как прошла архивация баз ночью. Там и SQL"ные базы 1С... Немного напряжно WinRar"ом тестировать каждый архив вот и решил автоматизировать этот процесс... Конечно я вполне всостоянии сам разобраться с исходным кодом компонент, но думаю может уже есть нормальная, миллион раз проверенная компонента, которой все вовсю пользуются, а я один о ней ничего незнаю...

Только что проверил вот этот архив: http://s42.radikal.ru/i098/0811/5f/5db23395d31b.jpg (это скриншот)
При тестировании WinRar"ом, в диспетчере задач напротив его задачи память даже нешелохнулась (как было около 5 мега оперативной и около 4 мега виртуальной, так и осталась) и свободное место на диске не уменьшилось ни на байт... А при тестировании компонентой "KAZip v.2.0", на файле 1Cv7.dat вылетает в исключение "Out of memory" и моя прога в отчёте напротив этого архива логично пишет: "Архив повреждён" :(


 
Slym ©   (2008-11-06 11:40) [9]

в стремы умеют распаковывать?
1. если да то можно стрем TNull написать :) и распаковывать в него: есть эксепшн - файл битый
2. если предоставляет инфу об CRC то можно написать стрем TNullCRCCalc и распаковывать в него: CRC не совпали - файл битый


 
KSergey ©   (2008-11-06 11:48) [10]

Тогда вам стоит ознакомиться с консольной программой rar.exe, котрая идет в составе WinRar.
В частности, у нее есть команда t, позволяющая тестировать архивы.
Таким образом достатояно написать bat-файл:

rar t *.zip|grep ошибка > errors.log

(слово "ошибка" тут от того, что у меян русская версия WinRar)
grep есть в бесплатных UnixTools или в дельфи (только в дельфи оно попроще, однако для этой задачи сгодится).
Соберет имена всех файлов из архивов, в которых встретилась ошибка в файлик errors.log
Понятно, нет предела фантазии для совершенствования (например замечено, что информацию об ошибках в архиве эта утилита выдает на stderr, чем можно воспользоваться вместо grep, для bat-файлов есть средства разделения stdout и stderr)
Вот и все! и никаких самописных программ не надо.

Кроме того, я не знаю чем вы пакуете, но у той же rar.exe для команды упаковки a есть так же ключик -t, позволяющий тестировать сразу после упаковки и писать соотв. диагностику, которую так же можно отлогировать.


 
KSergey ©   (2008-11-06 11:49) [11]

> Валигози ©   (06.11.08 11:32) [8]
> Я даже пробовал создать своего потомка от TStream который
> в методе Write вообще никуда не пишет - всё равно компонент
> "KAZip v.2.0" вылетает на "Out of memory"... :(

Я подозреваю, что у вас ошибка в программе.
Впрочем, как выяснено, прогамма тут вовсе не нужна (самописная)


 
Валигози ©   (2008-11-06 11:50) [12]


> Slym ©   (06.11.08 11:40) [9]
> в стремы умеют распаковывать?
> 1. если да то можно стрем TNull написать :) и распаковывать
> в него: есть эксепшн - файл битый
> 2. если предоставляет инфу об CRC то можно написать стрем
> TNullCRCCalc и распаковывать в него: CRC не совпали - файл
> битый

Я сам так думал сделать, но почемуто почти все компоненты не работают через поток, а тот который работает, всё равно резервирует в памяти кучу места даже если я отправляю распаковку в поток, который в методе Write вообще никуда ничего не пишет... :(


 
tesseract ©   (2008-11-06 12:08) [13]


> rar t *.zip|grep ошибка > errors.log


grep вроде борландовская штука ?


 
Валигози ©   (2008-11-06 12:13) [14]


> KSergey ©   (06.11.08 11:48) [10]
> Тогда вам стоит ознакомиться с консольной программой rar.
> exe, котрая идет в составе WinRar.
> В частности, у нее есть команда t, позволяющая тестировать
> архивы.

А как получить список файлов в архиве? Использовать компоненту для получения списка файлов а для тестирования утилиту запускать? Да и таскать за собой утилиты... Както кривизной попахивает... Лучше я тогда подправлю один из компонентов чтобы он работал в поток....


> Кроме того, я не знаю чем вы пакуете, но у той же rar.exe
> для команды упаковки a есть так же ключик -t, позволяющий
> тестировать сразу после упаковки и писать соотв. диагностику,
>  которую так же можно отлогировать.

Архивирует специальная утилита - APBackUp называется. Архиватор у неё встроенный (я так думаю), а отчёт я вывожу в файл Excel.


> KSergey ©   (06.11.08 11:49) [11]
> > Валигози ©   (06.11.08 11:32) [8]
> > Я даже пробовал создать своего потомка от TStream который
>
> > в методе Write вообще никуда не пишет - всё равно компонент
>
> > "KAZip v.2.0" вылетает на "Out of memory"... :(
>
> Я подозреваю, что у вас ошибка в программе.
> Впрочем, как выяснено, прогамма тут вовсе не нужна (самописная)

Ошибку "Out of memory" даёт не моя прога, а компонент "KAZip v.2.0" - единственный из тех что я нашёл который умеет извлекать файлы в поток (TStream) - и то как выясняется криво...

Вообщем если нормального компонента нет в природе (ну или присутствующие сейча на форуме о таком не слышали) - единственное нормальное для меня решение - переделаю в свободное время одну из компонент с исходниками... Да, самый надёжный вариант... Нет никакого смысла вызывать внешние утилиты, использовать dll и т.п.

Кстати, а почему эту тему перенесли в "Прочее"? Я посмотрел, в этом форуме почти все темы не относящиеся к Delphi... А мой вопрос всё же очень тесно относится к Delphi... Хм... Какие же тогда вопросы можно задавать в "Основной"...


 
Riply ©   (2008-11-06 12:17) [15]

> [14] Валигози ©   (06.11.08 12:13)
> Кстати, а почему эту тему перенесли в "Прочее"? Я посмотрел, в этом форуме почти все темы не относящиеся к Delphi...
> А мой вопрос всё же очень тесно относится к Delphi... Хм...
> Какие же тогда вопросы можно задавать в "Основной"...

В "Основной" спрашивают "как решить?", а ты спросил: "где найти ?".
Есть разница ? :)


 
Slym ©   (2008-11-06 12:23) [16]

внутри идет работа с мемстримом :(
function TKAZipEntriesEntry.Test: Boolean;
Var
 FS : TFileStream;
 MS : TMemoryStream;
 FN : String;
begin
 Result  := True;
 Try
   if NOT FIsEncrypted Then
      Begin
        if FParent.FParent.FUseTempFiles  Then
           Begin
             FN := FParent.FParent.GetDelphiTempFileName;
             FS := TFileStream.Create(FN,fmOpenReadWrite or FmCreate);
             Try
               ExtractToStream(FS);
               FS.Position := 0;
               Result      := FParent.CalculateCRCFromStream(FS) = CRC32;
             Finally
               FS.Free;
               DeleteFile(FN);
             End;
           End
        Else
           Begin
             MS := TMemoryStream.Create;
             Try
               ExtractToStream(MS);
               MS.Position := 0;
               Result      := FParent.CalculateCRCFromStream(MS) = CRC32;
             Finally
               MS.Free;
             End;
           End;
      End;
 Except
   Result  := False;
 End;
end;


 
Валигози ©   (2008-11-06 12:30) [17]


> Slym ©   (06.11.08 12:23) [16]
> внутри идет работа с мемстримом :(

Я знаю... Я изучал исходники этого компонента... Скорее всего переделывать я буду не этот компонент... Чтото уж слишком у него там всё наворочено...


> Riply ©   (06.11.08 12:17) [15]
> > [14] Валигози ©   (06.11.08 12:13)
> > Кстати, а почему эту тему перенесли в "Прочее"? Я посмотрел,
>  в этом форуме почти все темы не относящиеся к Delphi...
>  
> > А мой вопрос всё же очень тесно относится к Delphi...
> Хм...
> > Какие же тогда вопросы можно задавать в "Основной"...
>
> В "Основной" спрашивают "как решить?", а ты спросил: "где
> найти ?".
> Есть разница ? :)

Вобщем то разница есть, но всё же не такая большая как между "Где найти компоненту для Delphi?"  и например "Какой ноутбук купить?". Если бы я на этом форуме отвечал бы на вопросы (в качестве эксперта Delphi :) ), то вжизни не зашёл бы на эту часть форума...


 
KSergey ©   (2008-11-06 12:33) [18]

> Валигози ©   (06.11.08 12:13) [14]
> А как получить список файлов в архиве? Использовать компоненту
> для получения списка файлов а для тестирования утилиту запускать?
>  Да и таскать за собой утилиты... Както кривизной попахивает.

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

> Валигози ©   (06.11.08 12:13) [14]
> .. Нет никакого смысла вызывать внешние утилиты, использовать dll и т.п.

Да да да, своя программа - это, конечно же, не сторонняя утилита, ага 3 раза.
вы решаете явно задачу администрирования, а для нее дельфи не нужны, как правило. Все решается bat-файлами и уже готовыми тулзами.

А зачем вообще эта APBackUp нужна? Все те же самые задачи (включая "n последних копий" я сделал просто bat-файлом, запускающимся по расписанию опять же штатными виндовыми средствами.


 
brother ©   (2008-11-06 12:39) [19]

> Все те же самые задачи (включая "n последних копий" я сделал
> просто bat-файлом, запускающимся по расписанию опять же
> штатными виндовыми средствами.

батник можно посмотреть?


 
KSergey ©   (2008-11-06 12:54) [20]

Что-то такое (накидал сейчас шаблон):

@echo off

rem --- Перемещаем хранящиеся копии "вниз" ---

rd /S /Q d:\backup\5
ren d:\backup\4 5
ren d:\backup\3 4
ren d:\backup\2 3
ren d:\backup\1 2
ren d:\backup\0 1

rem --- Папка для текущей копии и дат начала копирования ---

mkdir d:\backup\0

@echo Start: > d:\backup\0\_BackUp_date.txt
date /T >> d:\backup\0\_BackUp_date.txt
time /T >> d:\backup\0\_BackUp_date.txt

rem --- Копирование и дата окончания ---

xcopy /E /H /Y c:\DataBase\*.* d:\backup\0

@echo End: >> d:\backup\0\_BackUp_date.txt
date /T >> d:\backup\0\_BackUp_date.txt
time /T >> d:\backup\0\_BackUp_date.txt


Понятно, что при особом желании можно, наверное, и циклик придумаь на переменных bat-файла, вместо нескольких ren (т.е. будет одна внутри цикла), но это уже мелочи.
Так же, понятно, при желании легко добавить архивирование, а не просто копирование, но мне это не критично, места много.


 
brother ©   (2008-11-06 13:05) [21]

идея понятна возьму на вооружение...


 
KSergey ©   (2008-11-06 13:10) [22]

Можно так же пользовать ключик rar.exe

ag[формат]    Добавить к имени архива текущие дату и время

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


 
Валигози ©   (2008-11-06 13:39) [23]


> KSergey ©   (06.11.08 12:33) [18]
> > Валигози ©   (06.11.08 12:13) [14]
> > А как получить список файлов в архиве? Использовать компоненту
>
> > для получения списка файлов а для тестирования утилиту
> запускать?
> >  Да и таскать за собой утилиты... Както кривизной попахивает.
>
> А типа не судьба попробовать приведенную мною однострочную
> команду и убедиться, что она тестирует ВСЕ файлы в расширением
> zip в текущей директории и ВСЕ файлы внутри архива? Ну да,
>  чукча писатель: нашлепать никчемную прогу (в смысле тут
> ен нужную) - это проще, чем почитать хелпы.

Абсолютно не вижу причин для споров и тем более для оскорблений. Что мне нужно было - написано вполне подробно в самом вопросе:

> Подскажите пожалуйста, есть ли (и где если есть) такая
> компонента которая тестировала бы файлы прямо на лету?
> (Желательно чтобы она не таскала за собой dll и была с исходными
> кодами)


Непонимаю как можно умудриться понять этот вопрос неправильно?
Я вижу всего два варианта ответа: либо просто ссылку на такой компонент либо "в ответ тишина", которая означала бы, что о таком компоненте никто не слышал. Но зачем засорять форум спамом? :( Здесь вроде деньги не дают за количество ответов...
Единственный который действительно попытался ответить на мой вопрос - это Slym - даже не поленился скачать компонент "KAZip v.2.0" и порыться в его исходниках :) (что на этом форуме бывает не часто) за что ему Спасибо.


 
Skyle ©   (2008-11-06 14:01) [24]


> KSergey ©   (06.11.08 13:10) [22]
> Можно так же пользовать ключик rar.exe
>
> ag[формат]    Добавить к имени архива текущие дату и время
>
> только не очень понятно как потом удалять самые страные.
>  Но и тут явно можно извратиться и придумать способ.

VBS и дата создания файла?


 
KSergey ©   (2008-11-06 15:21) [25]

> Skyle ©   (06.11.08 14:01) [24]
> VBS и дата создания файла?

да можно наверное и такой путь: dir с выдачей только имен файлов, отсортированных по дате, старые первыми, потом придумать как задействовать в for только первую строку из этого списка.
Мне не удалось придумать, если честно.

Ну а так - да, VBS - это и вовсе наше все, тут что хошь навертеть можно :)


 
KSergey ©   (2008-11-06 15:25) [26]

> Валигози ©   (06.11.08 13:39) [23]
> Абсолютно не вижу причин для споров и тем более для оскорблений.
>  Что мне нужно было - написано вполне подробно в самом вопросе:

Очевидно, что компонента эта - не само цель. Цель - сделать удобную систему архивирования.
Потому и показано, что сделоть это можно сильно иначе, при этом проблем с компонентой не возникает. Да и вообще с программированием на дельфи, что вполне возможно - правильно.


 
Валигози ©   (2008-11-06 15:45) [27]


> KSergey ©   (06.11.08 15:25) [26]
> > Валигози ©   (06.11.08 13:39) [23]
> > Абсолютно не вижу причин для споров и тем более для оскорблений.
>
> >  Что мне нужно было - написано вполне подробно в самом
> вопросе:
>
> Очевидно, что компонента эта - не само цель. Цель - сделать
> удобную систему архивирования.

Это не моя цель - этим пусть занимаются администраторы. Свою цель как программиста я описал выше.


> Потому и показано, что сделоть это можно сильно иначе, при
> этом проблем с компонентой не возникает. Да и вообще с программированием
> на дельфи, что вполне возможно - правильно.

Во-первых это форум по Delphi, а не по архивации. И вопросы обсуждаются по Delphi. И я не с рамблера свалился в этот форум. А то что мой вопрос модераторы перебросили в подфорум "Поболтать" - это на их совести. Ну раз перебросили значит я могу и пофилософствовать :)
Во-вторых я не совсем представляю как без Delphi (точнее используя только rar.exe) я могу выполнить звою задачу (т.е. свою цель):
1. Открыть файл-шаблон эксэля
2. Пройтись по строкам, разобрать команды и выполнить их (команды - проверить архив, прочитать количество свободного места на дисках серверов и т.д.)
3. Заполнить ячейки эксэля по результатам проверки и сохранить его под именем текущей даты
4. Отправить этот эксэль-файл начальнику по e-mail


 
KSergey ©   (2008-11-06 16:06) [28]

без дельфи это, пожалуй, можно сделать на VBS.
А если не ставить непременное условие "файл-шаблон эксэля", а ограничиться текстовиком - то и вовсе батничком.


 
KSergey ©   (2008-11-06 16:07) [29]

Хотя, конечно, для начальника расстараться надо, начальники они ж красивые картинки жуть как любят, больше сути. Тут да, понимаю, увы :)


 
Anatoly Podgoretsky ©   (2008-11-06 16:20) [30]

> Валигози  (06.11.2008 15:45:27)  [27]

> А то что мой вопрос модераторы перебросили в подфорум "Поболтать" - это на их совести. Ну раз перебросили значит я могу и пофилософствовать :)

Ты просто еще не знаешь, что могут модераторы.


 
Валигози ©   (2008-11-06 17:12) [31]


> KSergey ©   (06.11.08 16:06) [28]
> без дельфи это, пожалуй, можно сделать на VBS.

Боюсь, что я не в курсе что такое VBS... Да собственно мне незачем учить другие языки, пока я знаю Delphi... :)


> А если не ставить непременное условие "файл-шаблон эксэля",
>  а ограничиться текстовиком - то и вовсе батничком.

Это не совсем моё условие... Так хочет начальник...


> KSergey ©   (06.11.08 16:07) [29]
> Хотя, конечно, для начальника расстараться надо, начальники
> они ж красивые картинки жуть как любят, больше сути. Тут
> да, понимаю, увы :)

Ага. Вместо того чтобы каждое утро битый час практически вручную заполнять файл эксэля, думаю, напишука лучше утилитку, которая сама будет всё делать, а я лучше в это время в интернете что нибудь почитаю... :)


> Anatoly Podgoretsky ©   (06.11.08 16:20) [30]
> > Валигози  (06.11.2008 15:45:27)  [27]
>
> > А то что мой вопрос модераторы перебросили в подфорум
> "Поболтать" - это на их совести. Ну раз перебросили значит
> я могу и пофилософствовать :)
>
> Ты просто еще не знаешь, что могут модераторы.

Да, давненько я не заходил на этот форум... А раньше, помню, даже отвечал на вопросы...

Кстати, я нашёл ещё одну компоненту которая может извлекать из zip-архива в поток (в TStream): http://tpabbrevia.sourceforge.net

В ней, к сожалению, нет (или я не нашёл) фунции тестирования, но можно тестирование выполнить по-другому.
Для её тестирования написал небольшой класс:

type
 TNullStream = class(TStream)
 protected
   procedure SetSize(NewSize: Longint); override;
   procedure SetSize(const NewSize: Int64); override;
 public
   FSL: TStringList;
   constructor Create();
   function Read(var Buffer; Count: Longint): Longint; override;
   function Write(const Buffer; Count: Longint): Longint; override;
   function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;
 end;

{ TNullStream }

constructor TNullStream.Create;
begin
 FSL:=TStringList.Create;
end;

function TNullStream.Read(var Buffer; Count: Integer): Longint;
begin
 FSL.Add("Read::"+IntToStr(Count));
end;

function TNullStream.Seek(const Offset: Int64; Origin: TSeekOrigin): Int64;
const
 cc: array[TSeekOrigin]of String = ("soBeginning", "soCurrent", "soEnd");
begin
 FSL.Add("Seek::"+IntToStr(Offset)+"::"+cc[Origin]);
end;

procedure TNullStream.SetSize(NewSize: Integer);
begin
 inherited;
 FSL.Add("SetSize::"+IntToStr(NewSize));
end;

procedure TNullStream.SetSize(const NewSize: Int64);
begin
 inherited;
 FSL.Add("SetSize::"+IntToStr(NewSize));
end;

function TNullStream.Write(const Buffer; Count: Integer): Longint;
begin
 FSL.Add("Write::"+IntToStr(Count));
 Result:=Count;
end;


И когда выполняю этот код:

procedure TForm1.Button1Click(Sender: TObject);
var
 ss: TNullStream;
begin
 ss:=TNullStream.Create;
 AbZipKit1.OpenArchive("C:\08-11-06.zip");
 Edit1.Text:=AbZipKit1.Items[1].FileName;
 AbZipKit1.ExtractToStream("1Cv77.dat", ss);

 AbZipKit1.CloseArchive;
 Memo1.Lines.Assign(ss.FSL);
 ss.Free;
end;


Возвращает мне в Memo1:
Seek::0::soCurrent
Write::32768
Write::32768
....................
Write::32768
Write::32768
Write::58949
Seek::0::soCurrent

Осталось только этот класс переделать, чтобы он вычислял CRC32 и после чего сравнивать с тем который в архиве прописан и порядок :) Этим я уже дома займусь - пора идти домой...


 
сюжетнаялиния   (2008-11-06 17:21) [32]

>Валигози ©   (06.11.08 17:12) [31]
>Для её тестирования написал небольшой класс:

Кто мешал включить голову и сделать все это до того, как создавать тему?


 
Валигози ©   (2008-11-06 17:45) [33]


> сюжетнаялиния   (06.11.08 17:21) [32]
> >Валигози ©   (06.11.08 17:12) [31]
> >Для её тестирования написал небольшой класс:
>
> Кто мешал включить голову и сделать все это до того, как
> создавать тему?

До этого мешало то, что я эту компоненту не нашёл. Там же ясно написано? Я разве не русским языком написал? Включай глаза и смотри. Цитирую:

> Кстати, я нашёл ещё одну компоненту которая может извлекать
> из zip-архива в поток (в TStream): http://tpabbrevia.sourceforge.
> net



 
сюжетнаялиния   (2008-11-06 18:30) [34]

О, да... я не заметил! Извини меня пожалуйста, Валигози! Ты прав! Прав!


 
KSergey ©   (2008-11-06 18:32) [35]

я не смог скачать инструкцию по компоненте, но у меня есть сильное пдозрение, что она сама умеет проверять CRC и возвращать признак "удачно распаковалось" или "неудачно".
Ну во всяком случае я бы сделал так.


 
Валигози ©   (2008-11-07 12:08) [36]


> KSergey ©   (06.11.08 18:32) [35]
> я не смог скачать инструкцию по компоненте, но у меня есть
> сильное пдозрение, что она сама умеет проверять CRC и возвращать
> признак "удачно распаковалось" или "неудачно".
> Ну во всяком случае я бы сделал так.

Совершенно верно! Именно так всё и оказалось на самом деле :)
Если после извлечения файла контрольная сумма не совпадает - вызывается событие OnProcessItemFailure :)



Страницы: 1 вся ветка

Текущий архив: 2009.01.04;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.013 c
2-1227161056
Valerik
2008-11-20 09:04
2009.01.04
ComboBox


15-1225961941
axd
2008-11-06 11:59
2009.01.04
Хот кейс


2-1227249390
Asellya
2008-11-21 09:36
2009.01.04
Здравствуйте! Помогите мне, пожалуйста!!!!


15-1225510312
Slider007
2008-11-01 06:31
2009.01.04
С днем рождения ! 1 ноября 2008 суббота


15-1226050249
cosinus
2008-11-07 12:30
2009.01.04
Посоветуйте книгу