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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение прогресса сжатия с пом.zlib 
:(
    Опции темы
MrDmitry
Дата 18.2.2011, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет. Прочитал статью http://pblog.ru/?p=67
В ней говорится об создании архивов zlib. Все прекрасно работает. 
Код

procedure TWait.FormShow(Sender: TObject);
var
 SearchRec:TSearchRec;
 ser:string; //cfg
begin
 if arch=1 then
  begin
   ser:=path+'*.cfg';
   sSaveDialog1.Execute;
   If FindFirst(ser, faAnyFile, SearchRec) = 0 then
  repeat
    if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then
      if (SearchRec.Attr and faDirectory) = 0 then
      CreateDir('c:\cscsarch');
       CopyFile(PChar(path+ExtractFileName(SearchRec.name)),PChar('c:\cscsarch\'+ExtractFileName(SearchRec.name)),false)
       until FindNext(SearchRec) <> 0;
      FindClose(SearchRec);
 end;
 DoFolderAction('c:\cscsarch',sSaveDialog1.FileName,DODO2);
 arch:=0;
 MyRemoveDir('c:\cscsarch');
 Wait.Close;
end;

Но в первой статье говорится о том что процесс архивирования и разархивирования отображается на gauge. А у меня ни чего не отображается (

M
MetalFan
Название темы должно отражать ее суть! О чем говорило название "zlib"??? Отредактировано


Это сообщение отредактировал(а) MetalFan - 21.2.2011, 13:10
PM MAIL   Вверх
Данкинг
Дата 18.2.2011, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



А где в твоём примере вообще упоминание о gauge?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 18.2.2011, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(MrDmitry @  18.2.2011,  02:21 Найти цитируемый пост)
Но в первой статье говорится о том что процесс архивирования и разархивирования отображается на gauge. 

А что говорится во второй статье? И в следующих?


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
northener
Дата 18.2.2011, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(MrDmitry @  18.2.2011,  02:21 Найти цитируемый пост)
Но в первой статье говорится о том что процесс архивирования и разархивирования отображается на gauge. А у меня ни чего не отображается ( 

Лентяй и копипастер!
Даже не удосужился прочитать статью полностью! А там есть ссылка на более раннюю статью этого автора, в которой реализовано визуальное отображение процесса!

P.S. Читать нужно уметь! Не достаточно быть "просто не чукчей"!


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
MrDmitry
Дата 18.2.2011, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Бррррррррр, я вообще прочитал все, в как я вам покажу gauge? uses ... gauge компонент на форме. И именно об этом я и писал. 

Если отбросить мой код и сделать так


Код

uses ...  FolderActions, ZLibAdvTools, gauge;

...


function DODO2(fl1,fl2:string):boolean;
begin
 Result:=ZLATCompressFile(fl1,fl2,2,false,true,nil,0,0) <> 0;
end;

procedure TFrom.Button1Click(Sender: TObject);
Begin
 SaveDialog1.execute;
 DoFolderAction('c:\cscsarch',SaveDialog1.FileName,DODO2);
end;


В gaguge не отображается ход процесса. Дело в том что мне нужно упаковать папку а не 1 файл, метод которого описывается в 1 статье

Это сообщение отредактировал(а) MrDmitry - 18.2.2011, 23:03
PM MAIL   Вверх
Gwire
Дата 19.2.2011, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

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



MrDmitry, без обид, но мне кажется програмирование это не твое.
Там действительно не кода управления gauge,
но даже беглым взглядом можно понять где его нужно поставить. 
Мало того, если разобаться, можно вписать управление 
gauge для общего прогресса и gauge для каждого файла.

А писать на форум "вставьте мне не достающие строки" это смешно.
PS: northener, верно говоришь - "Лентяй и копипастер".
 

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


Опытный
**


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

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



я так понял что нужно было писать так

Код

 function DODO2(fl1,fl2:string):boolean;
begin
 Result:=ZLATCompressFile(fl1,fl2,2,true,true,TGauge,0,0) <> 0;
end;

procedure TFrom.Button1Click(Sender: TObject);
Begin
 SaveDialog1.execute;
 DoFolderAction('c:\cscsarch',SaveDialog1.FileName,DODO2);
end


Но так в модуле из статье возникает ошибка (
PM MAIL   Вверх
uwannadie
Дата 21.2.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

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



Код

function ZLATCompressFile(

                          sourcefile:string;          //<—-|—- это понятно

                          destinationfile:string;    //<—-|

                          compressRatio:integer;// степень сжатия

                          refreshWnd:boolean;// надо ли обновлять окно во время архивации

                          needcreate:boolean;// надо ли создавать файл-результат

                          progress:Pointer;//указатель на компонент прогресса,      

                           min_value:integer; //<—- это тоже очень сильно пригодится

                          max_value:integer; //<—|

                          PositionPropName:string=’Progress’     // имя свойства прогресса

                          ):integer;// результат 

а если бы ТС еще бы включил мозг и воспользовался поиском а-ля гуголь/яндекс, то сразу бы нашел тему:
Модуль архивации – создание и использование Delphi
--------------------
PM MAIL   Вверх
MrDmitry
Дата 22.2.2011, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(uwannadie @ 21.2.2011,  14:55)
Код

function ZLATCompressFile(

                          sourcefile:string;          //<—-|—- это понятно

                          destinationfile:string;    //<—-|

                          compressRatio:integer;// степень сжатия

                          refreshWnd:boolean;// надо ли обновлять окно во время архивации

                          needcreate:boolean;// надо ли создавать файл-результат

                          progress:Pointer;//указатель на компонент прогресса,      

                           min_value:integer; //<—- это тоже очень сильно пригодится

                          max_value:integer; //<—|

                          PositionPropName:string=’Progress’     // имя свойства прогресса

                          ):integer;// результат 

а если бы ТС еще бы включил мозг и воспользовался поиском а-ля гуголь/яндекс, то сразу бы нашел тему:
Модуль архивации – создание и использование Delphi

Да штошь вы емае. Я соглашусь со всем, что я чайник, тупой копипастер и лентяй. Я видел эту статья и отталкивался от неё, но в упор не врубаю как все отоброзить на progress bar. К томуже эта статья, ссылку которую вы дали, я изучил уже сотни раз. в не говорится об упаковки одного файла. Но да эта не суть, суть проблемы в том что я не понимаю как прикрутить progressbar. 


Код

function DODO2(fl1,fl2:string):boolean;
begin
 Result:=ZLATCompressFile(fl1,fl2,2,true,true,TGauge,0,0) <> 0;
end;
procedure TFrom.Button1Click(Sender: TObject);
Begin
 SaveDialog1.execute;
 DoFolderAction('c:\cscsarch',SaveDialog1.FileName,DODO2);
end;


Как я понял в nil - тоесть пусто или 0 нужно вписать указатель на компонент который собственно и будет выводить прогресс. Но если туда вписать как я TGauge то программа тупо вылетает с ошибкой. 


PM MAIL   Вверх
northener
Дата 22.2.2011, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(MrDmitry @  22.2.2011,  00:07 Найти цитируемый пост)
Но если туда вписать как я TGauge то программа тупо вылетает с ошибкой. 

Ну так ты покажи как ты вписывал. И ошибку процитируй.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
northener
Дата 22.2.2011, 01:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(northener @  22.2.2011,  00:15 Найти цитируемый пост)
Ну так ты покажи как ты вписывал.

Ага. Нашел.
Код

  Result:=ZLATCompressFile(fl1,fl2,2,true,true,TGauge,0,0) <> 0;


Цитата(MrDmitry @  18.2.2011,  23:01 Найти цитируемый пост)
как я вам покажу gauge? uses ... gauge компонент на форме.


Функция ZLATCompressFile требует чтобы ей шестым параметром передали ссылку на экземпляр класса, реально созданный в программе. Буде он создан в дизайн-тайм или в ран-тайм. А ты чего туда передаёшь? Имя класса. 
Ну то есть. Допустим ты в дизайнере IDE выбрал в палитре компонентов TGauge. кликнул мышкой на форме. Дизайнер поместил его на форму и присвоил ему имя (типа Gauge1). Вот это имя и нужно использовать в качестве ссылки на экземпляр класса в шестом параметре той функции.

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

Это сообщение отредактировал(а) northener - 22.2.2011, 02:13


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
uwannadie
Дата 23.2.2011, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 5.6.2009
Где: Крым, Керчь

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



MrDmitry, элементарного не знать, ужас...
Код

Result:=ZLATCompressFile(fl1,fl2,2,true,true,@Gauge_Name_In_Your_Project,Progress_Min_Value,Progress_Max_Value) <> 0;
 smile 
где 
Progress_Min_Vlue - минимальное значение прогресса упаковки (обычно стоит 0)
Progress_Max_Value - максимальное значение прогресса упаковки на компоненте (не всегда равно максимальному значению Gauge)

если и это не поможет, кидаю простейший пример

Код

ZLATCompressFile('D:\somefile.txt', 'D:\somefile.dat', 2, true, true, @Gauge1, 0, 100,);


Это сообщение отредактировал(а) uwannadie - 23.2.2011, 12:49
--------------------
PM MAIL   Вверх
MrDmitry
Дата 9.3.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, за помощь, появилась другая проблема, данный код показывает на gaguge процесс упаковки каждого файла, а не подскажите как можно сделать чтоб показывался общий прогресс? Наверное стоит использовать другой компонент? 
PM MAIL   Вверх
Keeper89
Дата 9.3.2011, 14:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

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



MrDmitry, конечно, ищи TSuperComponentZlibPackWithCurrentAndOverallProgress smile

Это сообщение отредактировал(а) Keeper89 - 9.3.2011, 14:53


--------------------
PM MAIL WWW   Вверх
MrDmitry
Дата 10.3.2011, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если серьезно? Кто то может посоветовать как переделать этот скрипт, или какой то другой, который бы показывал общий ход упаковки, раcпоковки  zlib?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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