Standardised compression of files and memory objects

The compression of data always plays an important role. Especially in the age of mobile data usage, people want to keep the amount of data transferred by the web pages to be displayed as small as possible. The upcoming version of conzept 16 will be expanded to include functions with which the content of memory objects and external files can be compressed using standardised methods.

New commands

The two functions MemCompress() and FsiFileCompress() are available for compression and MemUncompress() and FsiFileUncompress() for decompression.

The following formats are supported for compression:

The ZLIB and GZIP formats are based on the DEFLATE format. Sie wurden um einen definierten Header- und Footer-Bereich erweitert. Both formats also contain a checksum, which is used to check the consistency of the data when unpacking. None of the three formats contain an archive function (comparable to ZIP or RAR). They are purely for compressing individual files.
The respective format is specified by the constants _ComprFmtDeflate, _ComprFmtZlib and _ComprFmtGzip. In addition, a compression level between 0 (no compression) and 9 (maximum compression) or the standard level _ComprLvlDefault can be specified.

Neither the format nor the compression level needs to be specified for decompression. The algorithm recognizes the format automatically.

Application

Modern web browsers support compression methods. The list of supported methods is sent to the web server in header entry “Accept-Encoding” with every request. If the conzept 16 SOA service is used to prepare data for a web browser, the data can be compressed as follows:

// Query and evaluate the "Accept-Encoding" HTTP header field
tEncoding # SysHTTP:HTTP.ReqHeaderGet('Accept-Encoding');
if (tEncoding != '')
{
  if (tEncoding =* '*gzip*')
  {
    // Compression of the complete data of the memory object with GZIP
    // at the maximum level
    gMem->MemCompress(_ComprFmtGzip, 9);
    SysHTTP:HTTP.RspHeaderSet('Content-Encoding', 'gzip');
  }
  else if (tEncoding =* '*deflate*')
  {
    // Compression of the complete data of the memory object with DEFLATE
    // at the standard level
    gMem->MemCompress(_ComprFmtDeflate);
    SysHTTP:HTTP.RspHeaderSet('Content-Encoding', 'deflate');
  }
}

The SysHTTP procedure from the code library was used for communication in the example.

With the new functions, a section of the source to be read out and a separate destination can also be specified. If no separate destination is specified, the source is overwritten. For example, an external file can be compressed as follows and the compressed data written to another file:

FsiFileCompress('Update.d01', _ComprFmtGzip, _ComprLvlDefault, 0, 0, 'Update.d01.gz');

In the previous example, the two zeros stand for source position and source length. If 0 is specified here, the entire file is compressed.

Klicken Sie hier, um die Nutzungsbedingungen für unseren Blog zu lesen.

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!

Requests, questions or feedback are welcome:

Terms of use of the comment function in the blog

1. General information

Vectorsoft AG (‘Provider’) provides a public blog for Internet users (‘Users’) on the vectorsoft.de website. The public blog is intended for the exchange of information and ideas. Users who participate with contributions and comments undertake to comply with the blog terms of use and are responsible for the accuracy, appropriateness and freedom from legal infringements of their contributions. By using the comment function in our blog, you accept these terms of use.

2. Netiquette

We ask you to refrain from personal attacks and provocations based on other opinions. Please argue objectively and maintain a constructive discussion culture. Your comment should always be related to the topic in question in order to avoid digressions into other topics. Posting the same comment or several similar comments more than once is not permitted.

3. Prohibition of illegal content

By submitting your comment, you confirm that you are not violating any copyrights or other rights of third parties. Inciting, racist statements, instructions for criminal offences and their glorification, depictions of violence, pornographic content and statements that violate personal rights are prohibited.

4. No advertising

The use of the comment function is not permitted for commercial or party-political purposes. Advertising contributions of any kind will be deleted immediately.

5. Details of the name

When entering your name, pay attention to the principles mentioned above.

6. Source references

If you intend to publish quotes or contributions from third parties, please indicate the respective sources and explain how they relate to the blog post.

7. Violation of the terms of use

Posts that violate this policy will be deleted immediately. If you notice any violations yourself, please send us the link to the comment in question by e-mail to . We expressly point out that we will exclude individual users in the event of repeated or serious violations of these terms of use.

As of: Sept. 2024

Get your Trial Version now!

Test yeet free of charge

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Subscribe to our newsletter

[cleverreach_signup]
WordPress Cookie Notice by Real Cookie Banner