Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.01.04;
Скачать: [xml.tar.bz2];

Вниз

Компонент для тестирования 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.005 c
2-1227619523
snake-as
2008-11-25 16:25
2009.01.04
Работа с файлами


15-1226089477
Поросенок Винни-Пух
2008-11-07 23:24
2009.01.04
прикольный квартальчик в сан-диегском районе


15-1225721676
kazar
2008-11-03 17:14
2009.01.04
вопросы по Halcyon


2-1227180191
Андрей Алекс.
2008-11-20 14:23
2009.01.04
Отправка почты


2-1227668527
Riply
2008-11-26 06:02
2009.01.04
Гарантия записи в реестр.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский