Вверх ↑
Этот топик читают: Гость
Ответов: 824
Рейтинг: 138
#1: 2013-03-03 16:19:42 ЛС | профиль | цитата
Пытаюсь прикрутить к своей программе резервное копирование с сжатием:
и вот что получилось, как бы все правильно... но не уверен.
code_30493.txt
Сжатие то сделал, и возник вопрос - как это восстановить, то есть разжать?
По логике, нужно из файла считывать данные по блочно или сделать "карту" файла где бы указывалось количество, размер, и т.п. блоков????
Или другие варианты....
Но вот как это сделать не знаю и какие могут быть варианты

------------ Дoбавленo в 16.19:
Ни у кого нету ни каких вариантов?
карма: 1

0
файлы: 1code_30493.txt [4.6KB] [189]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-03-04 00:30:46 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2017-06-15 02:51:16
карма: 0

0
Ответов: 824
Рейтинг: 138
#3: 2013-03-04 22:53:25 ЛС | профиль | цитата
Спасибо, буду курить...
------------ Дoбавленo в 22.53:
46.165.5.26 писал(а):
как соединить файлы с маркером

Пока материал не изучил...

С помощью метода художественного втыка, таки сделал...

Сжатие указанной папки в файл и распаковка в указанную папку.
Add(Application,2033267,693,189)
{
}
Add(MainForm,2953706,49,231)
{
Width=341
Height=331
BorderStyle=1
Position=1
}
Add(Edit,11641370,210,91)
{
Left=80
Top=40
Width=240
Text=""
ReadOnly=0
link(onChange,9241815:doValue,[])
}
Add(Button,15167945,119,91)
{
Left=10
Top=40
Width=60
Caption="Pack"
link(onClick,5279826:doBrowse,[])
}
Add(Browse,5279826,167,91)
{
Title="Select Pack Folder"
NewStyle=0
NewDirButton=1
link(onBrowse,11641370:doText,[])
}
Add(FileSearch,16211729,462,147)
{
@Hint=#32:Перебор файлов в выбранной папке|
Include=2
link(onSearch,2497688:doEvent1,[])
link(onEndSearch,14728150:doEvent1,[])
link(Dir,9983045:Var,[])
}
Add(Label,11727181,742,147)
{
@Hint=#29:Имя тетущего файла для сжатия|
Left=15
Top=105
Width=305
AddHint(58,-44,183,13,@Hint)
}
Add(FileStream,6417429,602,154)
{
link(onLoad,12372662:doCompress,[(646,160)(646,202)(590,202)(590,237)])
}
Add(Hub,2497688,574,147)
{
OutCount=3
link(onEvent1,13002273:doReplace,[])
link(onEvent2,6417429:doOpen,[])
link(onEvent3,6417429:doClose,[])
}
Add(StreamPack,5291126,742,231)
{
DataCount=#4:name|4:file|
link(onPack,9160003:doCopyFromStream,[])
link(name,11727181:Caption,[])
link(file,6997951:Stream,[(755,219)(733,219)(733,271)(699,271)])
}
Add(LZMA,12372662,602,231)
{
NumFastBytes=100
Point(onError)
Point(onProgress)
Point(onProgressMax)
Point(NumFastBytes)
link(onStream,15457678:doEvent1,[(639,237)(639,230)])
link(Stream,6417429:Stream,[])
link(onError,7666746:doGetString,[])
link(onProgress,658387:doPosition,[])
link(onProgressMax,658387:doMax,[])
link(NumFastBytes,16246606:Position,[(615,215)(398,215)])
}
Add(FileStream,9160003,826,210)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(FileName,15365676:Var,[])
}
Add(Message,8038993,917,203)
{
Caption="Error"
Icon=1
}
Add(StrList,7666746,875,196)
{
@Hint=#11:Коды ошибок|
Strings=#38:Невозможно установить параметры сжатия|28:Входной поток очень короткий|20:Ошибка данных потока|24:Неверные свойства потока|0:|
Point(onGetString)
Point(doGetString)
link(onGetString,8038993:doMessage,[])
AddHint(53,60,83,13,@Hint)
}
Add(LineBreak,3813054,777,217)
{
@Color=16755200
link(Out,9160003:doClose,[])
Primary=[9017036,-238,-63]
}
Add(GlobalVar,14501088,420,35)
{
Name="file"
Data=String()
}
Add(GlobalVar,15365676,826,182)
{
Name="file"
Data=String()
}
Add(Edit,13358558,420,63)
{
Left=80
Top=70
Width=240
Text=""
ReadOnly=0
link(Str,14501088:Var,[])
}
Add(Label,10395854,119,231)
{
Left=15
Top=75
Width=60
Height=17
Caption="Pack file"
}
Add(MultiElementEx,9020048,343,91)
{
@Hint=#26:Выбор файла для сохранения|
link(onSelectFile,6126339:doEvent1,[])
AddHint(-107,-44,166,13,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,12351079,21,35)
{
WorkCount=#45:doOpenDialog=Отрывает диалог сохранения файла|
EventCount=#56:onSelectFile=Событие после выбора и проверки имени файла|
Width=433
Height=116
link(doOpenDialog,12776169:doPart,[(49,41)(49,104)])
}
Add(SDialog,12729386,182,98)
{
Filter="Аривы .arh|*.arh"
FileName=""
Point(FileName)
link(onExecute,7281363:doValue,[])
}
Add(FormatStr,753480,139,98)
{
DataCount=1
Mask="%1.arh"
Point(FString)
link(onFString,12729386:doExecute,[])
}
Add(GlobalVar,7281363,232,98)
{
Name="file"
Data=String()
link(onValue,8038178:doFileExists,[])
}
Add(FileTools,8038178,280,77)
{
link(onEnd,12229368:doCompare,[])
link(FileName,13304793:Var,[])
}
Add(If_else,12229368,322,77)
{
Op2=Integer(1)
link(onTrue,8038178:doDelete,[(366,83)(366,67)(268,67)(268,97)])
link(onFalse,12351079:onSelectFile,[(436,90)(436,41)])
}
Add(GlobalVar,13304793,280,42)
{
Name="file"
Data=String()
}
Add(FilePartElm,12776169,91,98)
{
Point(Part)
link(onPart,753480:doString,[])
}
END_SDK
Add(Hub,6126339,385,91)
{
link(onEvent1,13358558:doText,[(409,97)(409,69)])
link(onEvent2,8651271:doEvent1,[])
}
Add(Button,4267202,126,378)
{
Left=15
Top=170
Caption="Unpack"
link(onClick,5748844:doBrowse,[])
}
Add(Edit,14149603,238,378)
{
Left=80
Top=170
Width=240
Text=""
link(onChange,4717789:doExecute,[])
}
Add(LZMA,9541520,651,490)
{
Point(onError)
Point(onProgress)
Point(onProgressMax)
link(onStream,12115393:doEvent1,[(688,496)(688,489)])
link(Stream,3188131:file,[(657,450)(552,450)])
link(onError,8468926:doGetString,[])
link(onProgress,2114059:doPosition,[])
link(onProgressMax,2114059:doMax,[])
}
Add(Browse,5748844,182,378)
{
Title="Select directory for unpacking"
NewStyle=0
link(onBrowse,14149603:doText,[])
}
Add(ODialog,4717789,294,378)
{
Filter="Аривы .arh|*.arh"
link(onExecute,6699180:doText,[])
}
Add(FileStream,15990580,420,378)
{
link(onLoad,9710618:doRepeat,[])
}
Add(MemoryStream,6997951,693,231)
{
link(onCopy,5291126:doPack,[])
}
Add(Repeat,9710618,490,378)
{
Type=5
link(onRepeat,3188131:doUnPack,[])
link(Op1,15990580:Size,[(496,366)(476,366)(476,432)(433,432)])
link(Op2,15990580:Position,[(503,358)(469,358)(469,424)(440,424)])
}
Add(StreamUnPack,3188131,539,378)
{
DataCount=#4:name|4:file|
link(onUnPack,12582555:doEvent1,[])
link(Stream,15990580:Stream,[(545,366)(528,366)(528,440)(426,440)])
}
Add(Hub,12582555,588,378)
{
link(onEvent1,11912842:doData,[])
link(onEvent2,9541520:doDeCompress,[(617,391)(617,503)])
}
Add(DoData,11912842,630,378)
{
link(onEventData,262591:doEvent1,[])
link(Data,3188131:name,[(636,366)(577,366)(577,424)(545,424)])
}
Add(FileStream,16576570,763,476)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,10514405:FString,[])
}
Add(FormatStr,10514405,763,420)
{
Mask="%2\%1"
Point(FString)
link(onFString,9519986:doText,[])
link(Str2,12617946:Var2,[])
}
Add(ProgressBar,2114059,721,504)
{
Left=15
Top=265
Width=305
ProgressColor=16711680
Point(doMax)
}
Add(Dir,15765206,861,378)
{
Point(onError)
}
Add(Hub,262591,679,378)
{
link(onEvent1,1177527:doPart,[])
link(onEvent2,10514405:doString,[(707,391)(707,426)])
}
Add(LineBreak,4183425,238,427)
{
Caption="2"
Type=1
link(Data,14149603:Text,[])
Primary=[9783369,532,-91]
}
Add(Message,5512458,861,462)
{
Caption="Error"
Icon=1
}
Add(StrList,8468926,812,455)
{
@Hint=#11:Коды ошибок|
Strings=#38:Невозможно установить параметры сжатия|28:Входной поток очень короткий|20:Ошибка данных потока|24:Неверные свойства потока|0:|
Point(onGetString)
Point(doGetString)
link(onGetString,5512458:doMessage,[])
AddHint(53,60,83,13,@Hint)
}
Add(FilePartElm,1177527,735,378)
{
Mode=0
link(onPart,15329636:doString,[])
}
Add(FormatStr,15329636,798,378)
{
Mask="%2\%1"
Point(FString)
link(onFString,15765206:doDir,[])
link(Str2,12617946:Var3,[(811,365)])
}
Add(GetDataEx,12617946,770,360)
{
link(Data,9783369:Var,[])
}
Add(Hub,15457678,644,224)
{
link(onEvent1,2033267:doProcessMessages,[(672,230)(672,195)])
link(onEvent2,6997951:doCopy,[])
}
Add(Replace,13002273,693,147)
{
link(onReplace,11727181:doText,[])
link(Sub_str,3127697:Result,[])
}
Add(ProgressBar,658387,651,245)
{
Left=15
Top=130
Width=305
ProgressColor=-16777203
Point(doMax)
}
Add(Hub,8651271,420,98)
{
link(onEvent1,3127697:doStrCat,[])
link(onEvent2,16211729:doSearch,[(452,111)(452,153)])
}
Add(StrCat,3127697,700,98)
{
Str2=""
link(Str1,12462639:Var,[])
}
Add(GlobalVar,9241815,259,91)
{
Name="comr_fold"
link(onValue,9020048:doOpenDialog,[])
}
Add(GlobalVar,9983045,469,119)
{
Name="comr_fold"
}
Add(GlobalVar,12462639,700,70)
{
Name="comr_fold"
}
Add(Label,12768151,119,287)
{
Left=15
Top=210
Width=58
Height=17
Caption="Unpack file"
}
Add(Hub,12115393,693,483)
{
link(onEvent1,8341577:doProcessMessages,[(714,489)(714,461)])
link(onEvent2,16576570:doCopyFromStream,[])
}
Add(Application,8341577,721,455)
{
}
Add(Label,9519986,861,420)
{
Left=15
Top=235
Width=305
Height=20
}
Add(Hub,14728150,504,154)
{
link(onEvent1,9017036:In,[])
link(onEvent2,6449715:doMessage,[(528,167)(528,244)])
}
Add(Edit,6699180,362,378)
{
Left=80
Top=205
Width=240
Text=""
ReadOnly=0
link(onChange,15990580:doOpen,[])
}
Add(TrackBar,16246606,392,168)
{
Left=90
Top=10
Width=235
Height=20
Max=273
Min=5
Position=100
Point(doHint)
}
Add(Label,7559356,119,182)
{
Left=10
Top=15
Width=78
Height=17
Caption="Сompres quality"
}
Add(StyleXP,7260468,49,273)
{
}
Add(Message,6449715,539,238)
{
Message="Finish"
}

Прошу указать на ошибки, недочеты и т.п.
карма: 1

1
Голосовали:foksov
Ответов: 1376
Рейтинг: 197
#4: 2013-03-05 23:25:32 ЛС | профиль | цитата
для себя (пригодится) так уменьшил схему
code_30505.txt

карма: 1

0
файлы: 1code_30505.txt [6.6KB] [243]
Ответов: 824
Рейтинг: 138
#5: 2013-03-06 00:21:38 ЛС | профиль | цитата
foksov писал(а):
для себя (пригодится) так уменьшил схему

Да, так красивше, НО! А если папка с подпапками, то как сохранить структуру папок?
А у вас все пути обрезанными получаются.
И еще кое что к вашей схемке
Add(MainForm,525705,161,217)
{
Width=341
Height=264
BorderStyle=1
Position=1
}
Add(Edit,11641370,371,259)
{
Left=80
Top=40
Width=240
Text=""
ReadOnly=0
link(onChange,16186774:doWork1,[])
}
Add(Button,15167945,280,259)
{
Left=10
Top=40
Width=60
Caption="Pack"
link(onClick,5279826:doBrowse,[])
}
Add(Browse,5279826,328,259)
{
Title="Select Pack Folder"
NewStyle=0
NewDirButton=1
link(onBrowse,11641370:doText,[])
}
Add(FileSearch,16211729,595,273)
{
@Hint=#32:Перебор файлов в выбранной папке|
Include=2
link(onSearch,2497688:doEvent1,[])
link(onEndSearch,8981773:doWork2,[])
link(Dir,11641370:Text,[(608,246)(270,246)(270,304)(377,304)])
}
Add(FileStream,6417429,728,280)
{
link(onLoad,12372662:doCompress,[])
}
Add(Hub,2497688,693,273)
{
OutCount=3
link(onEvent1,8103499:doPart,[(716,279)(716,223)])
link(onEvent2,6417429:doOpen,[])
link(onEvent3,6417429:doClose,[])
}
Add(StreamPack,5291126,910,280)
{
DataCount=#4:name|4:file|
link(onPack,9160003:doCopyFromStream,[])
link(name,8103499:Part,[])
}
Add(LZMA,12372662,777,280)
{
NumFastBytes=100
Point(onError)
Point(onProgress)
Point(onProgressMax)
Point(NumFastBytes)
link(onStream,5291126:doPack,[])
link(onError,2937064:In,[])
link(onProgress,658387:doPosition,[])
link(onProgressMax,658387:doMax,[])
link(NumFastBytes,16246606:Position,[])
}
Add(FileStream,9160003,959,259)
{
Mode=2
AutoCopy=0
Point(doPosition)
Point(doCopyFromStream)
link(FileName,13358558:Text,[])
}
Add(Edit,13358558,959,203)
{
Left=80
Top=70
Width=240
Text=""
ReadOnly=0
}
Add(Label,10395854,210,217)
{
Left=15
Top=75
Width=60
Height=17
Caption="Pack file"
}
Add(Hub,6126339,497,259)
{
link(onEvent1,13358558:doText,[(766,265)(766,209)])
link(onEvent2,8167377:doStart,[(529,272)(529,279)])
}
Add(Button,4267202,203,350)
{
Left=15
Top=135
Caption="Unpack"
link(onClick,5748844:doBrowse,[])
}
Add(Edit,14149603,294,350)
{
Left=80
Top=135
Width=240
Text=""
link(onChange,4717789:doExecute,[])
}
Add(LZMA,9541520,812,413)
{
Point(onError)
Point(onProgress)
Point(onProgressMax)
link(onStream,16576570:doCopyFromStream,[])
link(Stream,3188131:file,[(818,397)(727,397)])
link(onError,1784934:doWork2,[])
link(onProgress,2114059:doPosition,[])
link(onProgressMax,2114059:doMax,[])
}
Add(Browse,5748844,245,350)
{
Title="Select directory for unpacking"
NewStyle=0
link(onBrowse,14149603:doText,[])
}
Add(ODialog,4717789,336,350)
{
Filter="Аривы .arh|*.arh"
link(onExecute,6699180:doText,[])
}
Add(FileStream,15990580,427,350)
{
link(onLoad,9680130:doStart,[])
}
Add(Repeat,9710618,574,350)
{
Type=5
link(onRepeat,13446187:doEvent1,[])
link(Op1,16558484:Var1,[(580,338)(567,338)])
link(Op2,7466463:Var1,[(587,330)(560,330)])
}
Add(StreamUnPack,3188131,714,350)
{
DataCount=#4:name|4:file|
link(onUnPack,12582555:doEvent1,[])
link(Stream,15990580:Stream,[(720,338)(623,338)(623,453)(433,453)])
}
Add(Hub,12582555,763,350)
{
link(onEvent1,10514405:doString,[])
link(onEvent2,9541520:doDeCompress,[(792,363)(792,426)])
}
Add(FileStream,16576570,917,399)
{
Mode=1
AutoCopy=0
Point(doCopyFromStream)
link(FileName,10514405:FString,[])
}
Add(FormatStr,10514405,917,350)
{
Mask="%1\%2"
Point(FString)
link(Str1,14149603:Text,[(923,333)(1003,333)(1003,478)(300,478)])
link(Str2,3188131:name,[(930,340)(1079,340)(1079,470)(720,470)])
}
Add(ProgressBar,2114059,868,427)
{
Left=15
Top=200
Width=305
ProgressColor=16711680
Point(doMax)
}
Add(Message,5512458,1036,385)
{
Caption="Error"
Icon=1
}
Add(StrList,8468926,987,378)
{
@Hint=#11:Коды ошибок|
Strings=#38:Невозможно установить параметры сжатия|28:Входной поток очень короткий|20:Ошибка данных потока|24:Неверные свойства потока|0:|
Point(onGetString)
Point(doGetString)
link(onGetString,5512458:doMessage,[])
AddHint(53,60,83,13,@Hint)
}
Add(ProgressBar,658387,833,294)
{
Left=15
Top=100
Width=305
ProgressColor=-16777203
Point(doMax)
}
Add(Label,12768151,210,259)
{
Left=15
Top=175
Width=58
Height=17
Caption="Unpack file"
}
Add(Edit,6699180,383,350)
{
Left=80
Top=170
Width=240
Text=""
ReadOnly=0
link(onChange,15990580:doOpen,[])
}
Add(TrackBar,16246606,784,231)
{
Left=90
Top=10
Width=235
Height=20
Max=273
Min=5
TickCount=10
Position=100
}
Add(Label,7559356,210,175)
{
Left=10
Top=15
Width=78
Height=17
Caption="Сompres quality"
}
Add(StyleXP,7260468,161,259)
{
}
Add(Message,6449715,651,280)
{
Message="Finish"
}
Add(HubEx,1784934,966,420)
{
link(onEvent,8468926:doGetString,[])
}
Add(LineBreak,1519131,917,441)
{
Caption="err"
link(Out,1784934:doWork3,[(970,447)])
Primary=[2937064,-42,-154]
}
Add(FilePartElm,8103499,910,217)
{
Point(Part)
}
Add(MultiElement,16186774,420,259)
{
link(onEvent1,6126339:doEvent1,[])
}
BEGIN_SDK
Add(EditMulti,16311143,217,84)
{
EventCount=1
WorkCount=1
Width=335
Height=109
link(doWork1,12916087:doPart,[])
}
Add(Memory,6949699,434,98)
{
}
Add(FilePartElm,12916087,238,84)
{
Point(Part)
link(onPart,12088736:doString,[])
}
Add(FormatStr,12088736,279,84)
{
DataCount=1
Mask="%1.arh"
Point(FString)
link(onFString,12372000:doExecute,[])
}
Add(SDialog,12372000,322,84)
{
Filter="Аривы .arh|*.arh"
FileName=""
link(onExecute,6581540:doEvent1,[(375,90)(375,160)])
}
Add(Hub,6581540,385,154)
{
OutCount=3
link(onEvent1,1180747:doFileExists,[])
link(onEvent2,15374328:doEvent,[(417,167)(417,146)])
link(onEvent3,16311143:onEvent1,[(529,174)(529,90)])
}
Add(IndexToChanel,15374328,434,140)
{
Point(Index)
link(onEvent2,1180747:doDelete,[])
link(Index,6949699:Value,[])
}
Add(FileTools,1180747,483,133)
{
link(onEnd,6949699:doValue,[(522,139)(522,90)(424,90)(424,104)])
}
END_SDK
Add(Hub,13446187,616,350)
{
link(onEvent1,3188131:doUnPack,[])
link(onEvent2,1044259:doCompare,[(641,363)(641,419)])
}
Add(HubEx,8981773,637,280)
{
link(onEvent,6449715:doMessage,[])
}
Add(If_else,1044259,651,413)
{
link(onTrue,8981773:doWork3,[(695,419)(695,323)(641,323)])
link(Op1,16558484:Var3,[(657,404)])
link(Op2,7466463:Var3,[(664,396)])
}
Add(GetDataEx,16558484,561,399)
{
Angle=3
link(Data,15990580:Size,[(440,404)])
}
Add(GetDataEx,7466463,554,391)
{
Angle=3
link(Data,15990580:Position,[(447,396)])
}
Add(Thread,8167377,546,273)
{
FastStop=0
link(onExec,16211729:doSearch,[])
}
Add(Thread,9680130,497,350)
{
FastStop=0
link(onExec,9710618:doRepeat,[])
}



карма: 1

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)