Ru-Board.club
← Вернуться в раздел «Программы»

» FreeArc: бесплатный open-source архиватор - Часть 3

Автор: Bulat_Ziganshin
Дата сообщения: 27.08.2010 19:09
тип lzma_[de]compress поменялся тоже. ты проверь что всё работает, завтра я уже выпущу новую версию и компиляй сам что тебе нужно
Автор: Profrager
Дата сообщения: 27.08.2010 19:13
Bulat_Ziganshin

Цитата:
тип lzma_[de]compress поменялся тоже. ты проверь что всё работает, завтра я уже выпущу новую версию и компиляй сам что тебе нужно

оки оки. В процессе.
P.S. не забывай юзать iccpatch на dllках
Автор: Bulat_Ziganshin
Дата сообщения: 27.08.2010 19:16

Цитата:
не забывай юзать iccpatch на dllках

afaik, на dll он не нужен
Автор: Profrager
Дата сообщения: 27.08.2010 19:20
Bulat_Ziganshin
для facompress.dll есть разница. Помнится ты как-то просил потестить с ним и без него. Для lzma разница, конечно, минимальна, но для того же grzip было конкретное ускорение на amd.
Автор: Bulat_Ziganshin
Дата сообщения: 27.08.2010 19:42
хм. хорошо, добавил. а ты уверен, что с exe не путаешь?
Автор: Profrager
Дата сообщения: 27.08.2010 19:42
эмм..Булат, у меня при распаковке через unarc.dll, что с facompress.dll, что без нее, сразу вылетает


Добавлено:
вот на этой строке вылетает ошибка:
temp:=FreeArcExtract(@MyUnarcCallBack, 'l', '--', Pchar(AnsiToUtf8(InputFileExt)), nil, nil , nil, nil, nil, nil, nil);
при чем, до callback'а очередь не доходит.
Автор: Bulat_Ziganshin
Дата сообщения: 27.08.2010 19:53
гм, попробуй с -m0 -mtor упаковать. вылеты останутся?

update: я имею в виду -dm0 -mtor
Автор: Profrager
Дата сообщения: 27.08.2010 20:05
Bulat_Ziganshin

Цитата:
-dm0 -mtor

та же самая ситуация - ошибка.

На счет патчей dll - ты прав, посмотрел снова свои тесты, оказалось разницы никакой. Что-то в голову не с того места видно залетело у меня)

Добавлено:
На скрине плохо видно, но ошибка похоже в msvcrt.wcscpy вылезает. Какой-то из входных параметров вместо адреса имеет значение 2)
Автор: egor23
Дата сообщения: 27.08.2010 20:40
Bulat_Ziganshin

Цитата:
ты имеешь в виду zip/7z или просто произвольные расширения? первое есть, второе готово, надо только в дистрибут занести

произвольные
Автор: V2driver
Дата сообщения: 27.08.2010 22:24
Bulat_Ziganshin как скоро появятся многотомные Sfx????
Автор: Bulat_Ziganshin
Дата сообщения: 27.08.2010 22:51
V2driver
думаю тогда же, когда и сама многотомность
Автор: MiniMan
Дата сообщения: 28.08.2010 10:03
Подскажите можно ли через консольный вариант запаковать несколько файлов в один архив? Если да то какая команда для этого есть.
Автор: DG69
Дата сообщения: 28.08.2010 12:28
у меня проблема...
распоковывая архив с игрой, FreeArc пишет что неверная аргументация и в это роде
Seek invalid argument
Что делать?????

Автор: Registered User
Дата сообщения: 28.08.2010 12:35

Цитата:
Подскажите можно ли через консольный вариант запаковать несколько файлов в один архив? Если да то какая команда для этого есть.

несколько файлов упаковываются точно так же как и один, имена файлов разделяются пробелом. или @ФайлСписка вместо имен
Автор: Bulat_Ziganshin
Дата сообщения: 28.08.2010 13:18

Цитата:
распоковывая архив с игрой, FreeArc пишет что неверная аргументация и в это роде
Seek invalid argument

сбойный архив?
Автор: DG69
Дата сообщения: 28.08.2010 22:21
))
Я не очен разбираюсь ...что значит сбойный архив??
если из-за него появилась ошибка seek Invalid argument,то наверное.....
Автор: Eric_Allman
Дата сообщения: 29.08.2010 02:52
Добрый день/утро/ночь всем!
Скажите пожалуйста, существует ли в природе юнит для делфи, способный распаковывать freearc архивы?
Автор: 4kusNick
Дата сообщения: 29.08.2010 02:55
Eric_Allman
Привет, а запуск из командной строки не подходит?
Автор: Eric_Allman
Дата сообщения: 29.08.2010 03:02
4kusNick
К сожалению нет. Нужно распаковать архив из своего приложения, и обязательно с прогрессбаром. Пробовал переводить Inno скрипты в делфи, но лососнул. (
Автор: Bulat_Ziganshin
Дата сообщения: 29.08.2010 08:59

Цитата:
Скажите пожалуйста, существует ли в природе юнит для делфи, способный распаковывать freearc архивы?

есть unarc.dll, как ей пользоваться - писали пару дней назад
Автор: Eric_Allman
Дата сообщения: 29.08.2010 09:37
Bulat_Ziganshin


Цитата:
есть unarc.dll, как ей пользоваться - писали пару дней назад


Да, я видел. Там было сказано, что unarc.dll имеет единственную функцию, и ссылка на скрипт для Inno setup. Собственно, его я и пытался взять за основу.


Код: function FreeArcExtract(var callback: longword; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; cdecl; external 'unarc' name 'FreeArcExtract';
Автор: Bulat_Ziganshin
Дата сообщения: 29.08.2010 09:46
дай мне проект, я сам его помучаю. навскидку - убери wrap и передавай callback напрямую:

Result:= FreeArcExtract (FreeArcInfoCallback, 'x', '-o+', '-dp' + 'videos.arc', '--', 'c:\222111333', '', '', '', '', '');

соответственно изменив прототип FreeArcExtract. а для начала можно и вовсе nil/0 туда передавать
Автор: Profrager
Дата сообщения: 29.08.2010 09:47
Eric_Allman
в данном случае тебе WrapFreeArcCallback совсем не требуется. Это для Inno сделано, т.к. там нет типа Pointer.
И прямое копирование из скрипта - не есть хорошо)
Плюс тебе надо запускать распаковку в отдельном потоке, иначе создастся эффект зависания.
Автор: Eric_Allman
Дата сообщения: 29.08.2010 10:17
Profrager

Да, я уже убрал всё это зло. Проект не вылетает, но FreeArcExtract возвращает стабильную минус единицу.

Bulat_Ziganshin

Проект нехитрый, но выложу тем не менее. Для веса оставлю там архив, который пытался распаковать.


Код: http://dl.dropbox.com/u/4212902/222111333.arc
Автор: Profrager
Дата сообщения: 29.08.2010 11:08
Eric_Allman
[more]
Код: unit main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
TFreeArcCallback = function (what: PAnsiChar; int1, int2: Integer; str: PAnsiChar): Integer;stdcall;


var
Form1: TForm1;
origsize: integer;
CancelCode: integer;

function FreeArcExtract(callback: TFreeArcCallback; cmd1,cmd2,cmd3,cmd4,cmd5,cmd6,cmd7,cmd8,cmd9,cmd10: PAnsiChar): integer; cdecl; external 'unarc' name 'FreeArcExtract';

implementation

{$R *.dfm}

function FreeArcInfoCallback (what: PAnsiChar; Mb, sizeArc: Integer; str: PAnsiChar): Integer; stdcall;
begin
Application.ProcessMessages;
if string(what)='origsize' then origsize := Mb else
if string(what)='compsize' then else
if string(what)='total_files' then else
Result:= CancelCode;
end;

function Unpack: Integer;
Begin
try
Result:= FreeArcExtract(@FreeArcInfoCallback, 'x', '-o+', '-dp' + 'c:\222111333\', '--', 'electropium.arc', '', '', '', '', '');
if CancelCode < 0 then Result:= CancelCode;
if Result >= 0 then Result:= origsize;
except
Result:= -63;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(Unpack));
end;

end.
Автор: Bulat_Ziganshin
Дата сообщения: 29.08.2010 11:24

Цитата:
Eric_Allman

знаешь, как опенсорсный программист пишет программу? он создаёт проект на sourceforge и ждёт контрибьютеров

глядишь, общими усилиями и появится демо-проект для Delphi, аналогичный инносетаповскому. я бы не возражал если бы вы индикатор прогресса туда прикрутили. а я пока сишный сделаю, чтобы с багами во вчерашней dll разобраться..
Автор: Eric_Allman
Дата сообщения: 29.08.2010 11:29
Profrager



Bulat_Ziganshin


Цитата:
я бы не возражал если бы вы индикатор прогресса туда прикрутили.


Это я и собираюсь сделать.
Автор: Profrager
Дата сообщения: 29.08.2010 11:32
Bulat_Ziganshin

Цитата:
глядишь, общими усилиями и появится демо-проект для Delphi, аналогичный инносетаповскому. я бы не возражал если бы вы индикатор прогресса туда прикрутили.

дык вырезать код из ISDone для arc'а и добавить callback ф-ию вместо InnoSetup'вской свою, вот те и демо код на delphi) Тока нафига оно кому надо)

Добавлено:
Bulat_Ziganshin
и кстати, этот код Eric_Allman'а норм распаковывает с твоей новой unarc.dll. А у меня почему-то слетает. Хотя с ранними dll работает без проблем. Как-то странно все это. Щас буду смотреть в чем траблы
Автор: Bulat_Ziganshin
Дата сообщения: 29.08.2010 12:10

Цитата:
дык вырезать код из ISDone для arc'а и добавить callback ф-ию вместо InnoSetup'вской свою, вот те и демо код на delphi) Тока нафига оно кому надо)

проблема исключительно в том, что каждому придётся это делать заново


Цитата:

Цитата:
я бы не возражал если бы вы индикатор прогресса туда прикрутили.

Это я и собираюсь сделать.

ну вот и опубликуешь здесь целый проект, а я его пихну в дистрибут
Автор: Profrager
Дата сообщения: 29.08.2010 12:14
Bulat_Ziganshin
траблы с unarc.dll оказывается в том, что у меня с прямой ручной загрузкой в память оно не хочет работать, а если цеплять dll как обычно через LoadLibrary, то все пашет. Осталось найти в чем разница с предыдущими dll) А так, в общем-то работает)

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Opera (часть 14)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.