FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   Arc Gui (beta) (https://fileforums.com/showthread.php?t=98152)

JRD! 03-01-2018 06:08

Finally I will leave the original format, I just change the way to recovered the output path in order to be compatible with ArcGUI.

for those interested here are the changes:
Code:


function IsRelativePath(const sPath: string): Boolean;
begin
  Result:=True;
  if Length(sPath) >= 2 then
    Result:=sPath[2] <> ':';
end;


function ClsMain(operation: Integer; Callback: CLS_CALLBACK; Instance: Pointer): Integer; cdecl;
const
  BuffSize = 64 * 1024;
var
  CLS: TCLSStream;
  SS: TSplitStream;
  Bytes: TBytes;
  X: Integer;
  X8: Byte;
  X64: Int64;
  s: String;
  FirstVolume, OtherVolume: Int64;
  i: integer;
begin

  Result := CLS_ERROR_GENERAL;

  case (operation) of
    CLS_COMPRESS:
      begin

        for i := 1 to ParamCount do
        begin
          if (ExtractFileExt(ParamStr(i)) = '.001') then
          begin
            Archive := ParamStr(i);
            Break;
          end;
        end;

        if IsRelativePath(Archive) then
          Archive := ExtractFilePath(GetModuleName) + Archive;


        Archive := ChangeFileExt(Archive, '');

        SetLength(Bytes, 256);
        FillChar(Bytes[0], Length(Bytes), #0);

        X := Callback(Instance, CLS_GET_PARAMSTR, @Bytes[0], Length(Bytes));
        s := StringOf(Bytes);
        s := ReplaceStr(s, #0, '');

        FirstVolume := ConvertToBytes(LeftStr(s, Pos(':', s) - 1));
        OtherVolume := ConvertToBytes(ReplaceStr(s, LeftStr(s, Pos(':', s)), ''));

        CLS := TCLSStream.Create(Callback, Instance);
        CLS.WriteBuffer(FirstVolume, sizeof(FirstVolume));

        Bytes := BytesOf(ExtractFileName(Archive));

        X := Length(Bytes);

        CLS.WriteBuffer(X, sizeof(X));
        CLS.WriteBuffer(Bytes, Length(Bytes));

        X64 := StreamToStream(CLS, CLS, BuffSize, FirstVolume);

        if X64 = FirstVolume then
        begin
          X := CLS.Read(Bytes, Length(Bytes));
          if X > 0 then
          begin
            X8 := 1;
            CLS.WriteBuffer(X8, sizeof(X8));
            SS := TSplitStream.Create(Archive, False, OtherVolume, OtherVolume);
            SS.WriteBuffer(Bytes, X);
            StreamToStream(CLS, SS, BuffSize);
            SS.Free;
          end else
          begin
            X8 := 0;
            CLS.WriteBuffer(X8, sizeof(X8));
          end;
        end;
        CLS.Free;
        SetLength(Bytes, 0);
        Result := CLS_OK;
      end;
    CLS_DECOMPRESS:
      begin
        try
          if SrcPath = '' then
            SrcPath := GetCurrentDir;
          CLS := TCLSStream.Create(Callback, Instance);
          CLS.ReadBuffer(FirstVolume, sizeof(FirstVolume));
          CLS.ReadBuffer(X, sizeof(X));
          SetLength(Bytes, X);
          CLS.ReadBuffer(Bytes, Length(Bytes));
          Archive := IncludeTrailingBackSlash(SrcPath) + StringOf(Bytes);
          X64 := StreamToStream(CLS, CLS, BuffSize, FirstVolume);
          if FirstVolume = X64 then
          begin
            CLS.ReadBuffer(X8, sizeof(X8));
            if X8 = 1 then
            begin
              SS := TSplitStream.Create(Archive, True, OtherVolume, OtherVolume, MyDiskRequest);
              StreamToStream(SS, CLS, BuffSize);
              SS.Free;
            end;
          end;
          CLS.Free;
          SetLength(Bytes, 0);
          Result := CLS_OK;
        except
          Result := CLS_ERROR_GENERAL;
        end;
      end;
  else
    Result := CLS_ERROR_NOT_IMPLEMENTED;
  end;
end;

I also re-implemented the external compressors in the popup menu:

https://img15.hostingpics.net/pics/453678arcgui0987.jpg

JRD! 04-01-2018 18:30

On this short video I add a folder to compressed which contains 2 files, one with the extension *.esm, the other with the extension *.mp4, the method used contains an extension group that is bound with a method,
the extension *.mp4 is located in the group "$void" this implies that the mp4 file will receive the srep64 compression method, so no have two files with 2 different compression methods and it works.

I remove Precomp from the Max method in order to shorten the video... If someone has a remark he does not hesitate to share it with me.

I need to update the language files, I will share a version in the day with the folder "masked Data Compressor 2.5" from Panker, the directory contains the categories files as you can see below:

https://img15.hostingpics.net/pics/8...ionmethods.jpg

https://img15.hostingpics.net/pics/3...ompressors.jpg

The CLS-Diskspan is not integrated with Arcgui at the moment, but the options present in the program implies its presence for it to work,
it will have to use the version I have a little bit change. I'll post the DLL below the program.

Thanks to Razor for his work!

https://img15.hostingpics.net/pics/853854about.jpg

Sorry for the old-fashioned layout, when the version will be 100% functional, I'll make a great presentation page with big characters and colors like we do more since the invention of HTML;)

JRD! 04-01-2018 22:19

i applied full masked method: "/$text=ppmd/$jpeg=paq8pxd/$exe=exe2"

The result:
Code:

G:\Delphi\Projets\Arc GUI\Arc GUI 0.9.8.7\Win32\Release\working_dir>arc a --logfile=C:\Temp\freearc.log -ma9 -ds -lc1024 -ld1024 -di -i1 -ep1 -ed -r -s -wE:\ArcGUI\Temp E:\ArcGUI\Output\Data.bin.001 -mdiskspan:10mb:10mb/$text=ppmd/$jpeg=paq8pxd/$exe=exe2 C:\Users\Arnaud\Desktop\Data
FreeArc 0.67 (March 15 2014) Creating archive: E:\ArcGUI\Output\Data.bin.001 using diskspan:10mb:10mb, $text => ppmd:10:48mb, $jpeg => paq8pxd, $exe => dispack070
Memory for compression 450mb, decompression 450mb, cache 16mb
Compressed 3 files, 39,415,777 => 10,485,792 bytes. Ratio 26.60%         
Compression time: cpu 0.03 sec/real 0.24 sec = 13%. Speed 164.91 mB/s
All OK

Here is the function that allows you to set the position of Diskspan to not be considered as part of the value bound to the last extension group:

Code:

function SetDiskspanValuePosition(const sMethodValue, sDiskspanValue: string): string;
var
  i: integer;
begin
  if Length(sDiskspanValue) > 0 then
  begin
    i:=Pos('/$', sMethodValue);
    if i > 0 then
    begin
      Result:=sMethodValue;
      Insert(Copy(sDiskspanValue, 2, Length(sDiskspanValue)), Result, i);
    end else
      Result:=sMethodValue+sDiskspanValue;
  end else
    Result:=sMethodValue;
end;

Example:
Code:

  ShowMessage('-m'+SetDiskspanValuePosition('/$text=ppmd/$jpeg=paq8pxd/$exe=exe2', '+diskspan:4460mb:4470mb'));

JRD! 04-01-2018 23:49

Updated. Included Masked Data compressor 2.5 by panker1992 as well as modified CLS-Diskpan.
I create the categories of compression methods and external compressors. I will do a series of videos to make a brief tour of the
Features. I quickly released this version, there are definitely bugs, if you noticed, make me know about the thread, thanks to all.

JRD! 05-01-2018 09:41

Quote:

Originally Posted by Simorq (Post 465554)
Hi JRD!
Not work
Please share version 0.9.8.7.
Thanks

http://uupload.ir/files/gnxr_2018-01-05_181913.jpg

Edit:
Solved:D

It reminds me of someone ;)

JRD! 16-01-2018 12:40

Here is the list of changes to the next version:
Quote:

- Ability to apply the same compression method to all archives from the Edit button.
- Tabs remain visible during compression, but events are disabled.
- A file listing function in the archive is available at the right click, (filename | file weight in bytes).
- A function of detecting the space necessary during the decompression (NeedSpace) has been added, activate the log to be able to access this information.
- The ability to create a decompression folder, this folder will contain everything necessary to unpack the created archives.
- Create setup with Inno Setup, you just need to specify the required values in the script, copy the folder generated by ArcGUI to the module folder and then start compiling from the batch file, you can unpack the created archives.
Fixed bugs:
Quote:

- Cannot add a file in the parent folder of an added folder.
- Unable to delete the first character of the password.
- The URL of CLS-Diskspan has been changed.
Little note:

I currently have no tester, so I am forced to test myself what slowed the development.
At the level of translation only KaktoR has brought help. If someone could make me some return it would be great.

KaktoR 16-01-2018 12:42

Unfortunatelly i don't have much time for deep testing atm, but if you like make a public beta... some kind of.

JRD! 16-01-2018 12:57

Quote:

Originally Posted by KaktoR (Post 465987)
Unfortunatelly i don't have much time for deep testing atm, but if you like make a public beta... some kind of.

Yes, that's what I tried to do with the previous version but without much success.

JRD! 16-01-2018 15:06

An analysis of the output stream is used to determine whether file decompression will require more free space or not.
Code:

+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                        2018/01/17    00:01:25                        |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
| Step 1/1
|
| Creating archive Data-1.bin
|
| Method name camel5
| Method value pzlib_x64+static1+7z_xz
| Expanded method value pzlib_x64+srep_x64+exe+delta+7z_xz
|
| Compressor 1: pzlib_x64
| Compressor 2: srep_x64
| Compressor 3: exe
| Compressor 4: delta
| Compressor 5: 7z_xz
|
| NeedSize: 618,31 MB
|
| Status: Operation success
| Compression time: 00:01:19
|
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|                                                                      |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+


pakrat2k2 17-01-2018 17:10

re-opened by request

JRD! 18-07-2018 07:54

The update of the program will be done on this thread.

JRD! 18-07-2018 10:48

If you have a better translation or if you have translated to other language, do not hesitate to posted the file in the thread, I will integrate it in the following versions. Thank you.

JRD! 15-01-2019 12:55

1.14 preview

https://cdn1.imggmi.com/uploads/2019...cbe3d-full.jpg

Simorq 15-01-2019 14:13

Quote:

Originally Posted by JRD! (Post 465541)
i applied full masked method: "/$text=ppmd/$jpeg=paq8pxd/$exe=exe2"

The result:
Code:

G:\Delphi\Projets\Arc GUI\Arc GUI 0.9.8.7\Win32\Release\working_dir>arc a --logfile=C:\Temp\freearc.log -ma9 -ds -lc1024 -ld1024 -di -i1 -ep1 -ed -r -s -wE:\ArcGUI\Temp E:\ArcGUI\Output\Data.bin.001 -mdiskspan:10mb:10mb/$text=ppmd/$jpeg=paq8pxd/$exe=exe2 C:\Users\Arnaud\Desktop\Data
FreeArc 0.67 (March 15 2014) Creating archive: E:\ArcGUI\Output\Data.bin.001 using diskspan:10mb:10mb, $text => ppmd:10:48mb, $jpeg => paq8pxd, $exe => dispack070
Memory for compression 450mb, decompression 450mb, cache 16mb
Compressed 3 files, 39,415,777 => 10,485,792 bytes. Ratio 26.60%         
Compression time: cpu 0.03 sec/real 0.24 sec = 13%. Speed 164.91 mB/s
All OK

Here is the function that allows you to set the position of Diskspan to not be considered as part of the value bound to the last extension group:

Code:

function SetDiskspanValuePosition(const sMethodValue, sDiskspanValue: string): string;
var
  i: integer;
begin
  if Length(sDiskspanValue) > 0 then
  begin
    i:=Pos('/$', sMethodValue);
    if i > 0 then
    begin
      Result:=sMethodValue;
      Insert(Copy(sDiskspanValue, 2, Length(sDiskspanValue)), Result, i);
    end else
      Result:=sMethodValue+sDiskspanValue;
  end else
    Result:=sMethodValue;
end;

Example:
Code:

  ShowMessage('-m'+SetDiskspanValuePosition('/$text=ppmd/$jpeg=paq8pxd/$exe=exe2', '+diskspan:4460mb:4470mb'));

Hi JRD!
Has this project been canceled?

JRD! 11-02-2019 13:51

Hi Simorq,

This is an example for those who want to implement cls-diskspan.dll in their program.
This places the diskspan value before the part of the method that contains the groups.

About cls-diskspan:

The implementation in ArcGUI allows division into multiple DVDs or a custom size.
The first volume size of the next archive is calculated by the size of the last previous volume, which greatly simplifies its use.
If an error occurs during compression, it will retrieve information from the previous archive.

About ArcGUI:

I'm going to post version 1.15.1, it includes an automated compression method function that is based on the default values assigned to extension groups.
With a simple click, you designate a default compression method for files whose extension is not part of the groups, it allows to apply the masks when it is necessary.


All times are GMT -7. The time now is 17:04.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com