тип lzma_[de]compress поменялся тоже. ты проверь что всё работает, завтра я уже выпущу новую версию и компиляй сам что тебе нужно
» FreeArc: бесплатный open-source архиватор - Часть 3
Bulat_Ziganshin
Цитата:
оки оки. В процессе.
P.S. не забывай юзать iccpatch на dllках
Цитата:
тип lzma_[de]compress поменялся тоже. ты проверь что всё работает, завтра я уже выпущу новую версию и компиляй сам что тебе нужно
оки оки. В процессе.
P.S. не забывай юзать iccpatch на dllках
Цитата:
не забывай юзать iccpatch на dllках
afaik, на dll он не нужен
Bulat_Ziganshin
для facompress.dll есть разница. Помнится ты как-то просил потестить с ним и без него. Для lzma разница, конечно, минимальна, но для того же grzip было конкретное ускорение на amd.
для facompress.dll есть разница. Помнится ты как-то просил потестить с ним и без него. Для lzma разница, конечно, минимальна, но для того же grzip было конкретное ускорение на amd.
хм. хорошо, добавил. а ты уверен, что с exe не путаешь?
эмм..Булат, у меня при распаковке через unarc.dll, что с facompress.dll, что без нее, сразу вылетает
Добавлено:
вот на этой строке вылетает ошибка:
temp:=FreeArcExtract(@MyUnarcCallBack, 'l', '--', Pchar(AnsiToUtf8(InputFileExt)), nil, nil , nil, nil, nil, nil, nil);
при чем, до callback'а очередь не доходит.
Добавлено:
вот на этой строке вылетает ошибка:
temp:=FreeArcExtract(@MyUnarcCallBack, 'l', '--', Pchar(AnsiToUtf8(InputFileExt)), nil, nil , nil, nil, nil, nil, nil);
при чем, до callback'а очередь не доходит.
гм, попробуй с -m0 -mtor упаковать. вылеты останутся?
update: я имею в виду -dm0 -mtor
update: я имею в виду -dm0 -mtor
Bulat_Ziganshin
Цитата:
та же самая ситуация - ошибка.
На счет патчей dll - ты прав, посмотрел снова свои тесты, оказалось разницы никакой. Что-то в голову не с того места видно залетело у меня)
Добавлено:
На скрине плохо видно, но ошибка похоже в msvcrt.wcscpy вылезает. Какой-то из входных параметров вместо адреса имеет значение 2)
Цитата:
-dm0 -mtor
та же самая ситуация - ошибка.
На счет патчей dll - ты прав, посмотрел снова свои тесты, оказалось разницы никакой. Что-то в голову не с того места видно залетело у меня)
Добавлено:
На скрине плохо видно, но ошибка похоже в msvcrt.wcscpy вылезает. Какой-то из входных параметров вместо адреса имеет значение 2)
Bulat_Ziganshin
Цитата:
произвольные
Цитата:
ты имеешь в виду zip/7z или просто произвольные расширения? первое есть, второе готово, надо только в дистрибут занести
произвольные
Bulat_Ziganshin как скоро появятся многотомные Sfx????
V2driver
думаю тогда же, когда и сама многотомность
думаю тогда же, когда и сама многотомность
Подскажите можно ли через консольный вариант запаковать несколько файлов в один архив? Если да то какая команда для этого есть.
у меня проблема...
распоковывая архив с игрой, FreeArc пишет что неверная аргументация и в это роде
Seek invalid argument
Что делать?????
распоковывая архив с игрой, FreeArc пишет что неверная аргументация и в это роде
Seek invalid argument
Что делать?????
Цитата:
Подскажите можно ли через консольный вариант запаковать несколько файлов в один архив? Если да то какая команда для этого есть.
несколько файлов упаковываются точно так же как и один, имена файлов разделяются пробелом. или @ФайлСписка вместо имен
Цитата:
распоковывая архив с игрой, FreeArc пишет что неверная аргументация и в это роде
Seek invalid argument
сбойный архив?
))
Я не очен разбираюсь ...что значит сбойный архив??
если из-за него появилась ошибка seek Invalid argument,то наверное.....
Я не очен разбираюсь ...что значит сбойный архив??
если из-за него появилась ошибка seek Invalid argument,то наверное.....
Добрый день/утро/ночь всем!
Скажите пожалуйста, существует ли в природе юнит для делфи, способный распаковывать freearc архивы?
Скажите пожалуйста, существует ли в природе юнит для делфи, способный распаковывать freearc архивы?
Eric_Allman
Привет, а запуск из командной строки не подходит?
Привет, а запуск из командной строки не подходит?
4kusNick
К сожалению нет. Нужно распаковать архив из своего приложения, и обязательно с прогрессбаром. Пробовал переводить Inno скрипты в делфи, но лососнул. (
К сожалению нет. Нужно распаковать архив из своего приложения, и обязательно с прогрессбаром. Пробовал переводить Inno скрипты в делфи, но лососнул. (
Цитата:
Скажите пожалуйста, существует ли в природе юнит для делфи, способный распаковывать freearc архивы?
есть unarc.dll, как ей пользоваться - писали пару дней назад
Bulat_Ziganshin
Цитата:
Да, я видел. Там было сказано, что 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';
Цитата:
есть 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';
дай мне проект, я сам его помучаю. навскидку - убери wrap и передавай callback напрямую:
Result:= FreeArcExtract (FreeArcInfoCallback, 'x', '-o+', '-dp' + 'videos.arc', '--', 'c:\222111333', '', '', '', '', '');
соответственно изменив прототип FreeArcExtract. а для начала можно и вовсе nil/0 туда передавать
Result:= FreeArcExtract (FreeArcInfoCallback, 'x', '-o+', '-dp' + 'videos.arc', '--', 'c:\222111333', '', '', '', '', '');
соответственно изменив прототип FreeArcExtract. а для начала можно и вовсе nil/0 туда передавать
Eric_Allman
в данном случае тебе WrapFreeArcCallback совсем не требуется. Это для Inno сделано, т.к. там нет типа Pointer.
И прямое копирование из скрипта - не есть хорошо)
Плюс тебе надо запускать распаковку в отдельном потоке, иначе создастся эффект зависания.
в данном случае тебе WrapFreeArcCallback совсем не требуется. Это для Inno сделано, т.к. там нет типа Pointer.
И прямое копирование из скрипта - не есть хорошо)
Плюс тебе надо запускать распаковку в отдельном потоке, иначе создастся эффект зависания.
Profrager
Да, я уже убрал всё это зло. Проект не вылетает, но FreeArcExtract возвращает стабильную минус единицу.
Bulat_Ziganshin
Проект нехитрый, но выложу тем не менее. Для веса оставлю там архив, который пытался распаковать.
Код: http://dl.dropbox.com/u/4212902/222111333.arc
Да, я уже убрал всё это зло. Проект не вылетает, но FreeArcExtract возвращает стабильную минус единицу.
Bulat_Ziganshin
Проект нехитрый, но выложу тем не менее. Для веса оставлю там архив, который пытался распаковать.
Код: http://dl.dropbox.com/u/4212902/222111333.arc
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.
[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.
Цитата:
Eric_Allman
знаешь, как опенсорсный программист пишет программу? он создаёт проект на sourceforge и ждёт контрибьютеров
глядишь, общими усилиями и появится демо-проект для Delphi, аналогичный инносетаповскому. я бы не возражал если бы вы индикатор прогресса туда прикрутили. а я пока сишный сделаю, чтобы с багами во вчерашней dll разобраться..
Profrager
Bulat_Ziganshin
Цитата:
Это я и собираюсь сделать.
Bulat_Ziganshin
Цитата:
я бы не возражал если бы вы индикатор прогресса туда прикрутили.
Это я и собираюсь сделать.
Bulat_Ziganshin
Цитата:
дык вырезать код из ISDone для arc'а и добавить callback ф-ию вместо InnoSetup'вской свою, вот те и демо код на delphi) Тока нафига оно кому надо)
Добавлено:
Bulat_Ziganshin
и кстати, этот код Eric_Allman'а норм распаковывает с твоей новой unarc.dll. А у меня почему-то слетает. Хотя с ранними dll работает без проблем. Как-то странно все это. Щас буду смотреть в чем траблы
Цитата:
глядишь, общими усилиями и появится демо-проект для Delphi, аналогичный инносетаповскому. я бы не возражал если бы вы индикатор прогресса туда прикрутили.
дык вырезать код из ISDone для arc'а и добавить callback ф-ию вместо InnoSetup'вской свою, вот те и демо код на delphi) Тока нафига оно кому надо)
Добавлено:
Bulat_Ziganshin
и кстати, этот код Eric_Allman'а норм распаковывает с твоей новой unarc.dll. А у меня почему-то слетает. Хотя с ранними dll работает без проблем. Как-то странно все это. Щас буду смотреть в чем траблы
Цитата:
дык вырезать код из ISDone для arc'а и добавить callback ф-ию вместо InnoSetup'вской свою, вот те и демо код на delphi) Тока нафига оно кому надо)
проблема исключительно в том, что каждому придётся это делать заново
Цитата:
Цитата:
я бы не возражал если бы вы индикатор прогресса туда прикрутили.
Это я и собираюсь сделать.
ну вот и опубликуешь здесь целый проект, а я его пихну в дистрибут
Bulat_Ziganshin
траблы с unarc.dll оказывается в том, что у меня с прямой ручной загрузкой в память оно не хочет работать, а если цеплять dll как обычно через LoadLibrary, то все пашет. Осталось найти в чем разница с предыдущими dll) А так, в общем-то работает)
траблы с unarc.dll оказывается в том, что у меня с прямой ручной загрузкой в память оно не хочет работать, а если цеплять dll как обычно через LoadLibrary, то все пашет. Осталось найти в чем разница с предыдущими dll) А так, в общем-то работает)
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
Предыдущая тема: Opera (часть 14)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.