Difference between revisions of "Zeno file format"

Jump to navigation Jump to search
709 bytes added ,  18:22, 11 January 2013
m
(4 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Box|'''Please note:''' This page only exists for historical reasons, therefore it has not been translated to English.
The Zeno file format has been obsoleted by the ZIM (Zeno IMproved) file format. The ZIM library is not compatible to Zeno anymore as there are major differences between Zeno and ZIM concerning features and compression. Zeno was never widespread and is not used anymore.
The successor of Zeno is the [[ZIM File Format]] which is used in many [[ZIM Readers|reader applications on different platforms]] and offers an easy to use [[zimlib]].}}
Documentation by Erwin Jurschitza (DirectMedia Verlagsgesellschaft Berlin, http://www.directmedia.de/).
= ZenoReader/Library =
= ZenoReader/Library =
Die Dokumentation wurde für das Zeno-2.0-Format aktualisiert!  
Die Dokumentation wurde für das Zeno-2.0-Format aktualisiert!  
Line 30: Line 38:
=== Inhaltsverzeichnis ===
=== Inhaltsverzeichnis ===
Um den Code erstmal einfach zu halten, wird das ganze Inhaltsverzeichnis auf einen Schlag eingelesen (kann mit dem Parameter /f erzwungen werden, bringt Geschwindigkeitsgewinn auf Kosten von RAM).  
Um den Code erstmal einfach zu halten, wird das ganze Inhaltsverzeichnis auf einen Schlag eingelesen (kann mit dem Parameter /f erzwungen werden, bringt Geschwindigkeitsgewinn auf Kosten von RAM).  
<pre>
  TWPVLibrary = class (TObject)
  TWPVLibrary = class (TObject)
  private
  private
   FBuffer: array of byte;  // das Inhaltsverzeichnis als Byte-Stream mit Records variabler Länge
   FBuffer: array of byte;  // das Inhaltsverzeichnis als Byte-Stream mit Records variabler Länge
   FBufferSize: integer;
   FBufferSize: integer;
</pre>


Auf jeden Fall ganz eingelesen werden muss die Zeigerliste auf das Inhaltsverzeichnis. Sie wird in einer Listenstruktur gehalten, könnte aber auch ein array of integer sein. Die Liste ist vorsortiert, siehe ZenoReader/Qunicode.  
Auf jeden Fall ganz eingelesen werden muss die Zeigerliste auf das Inhaltsverzeichnis. Sie wird in einer Listenstruktur gehalten, könnte aber auch ein array of integer sein. Die Liste ist vorsortiert, siehe ZenoReader/Qunicode.  
<pre>
   FList: TList;             
   FList: TList;             
</pre>


Beispiel: Das nullte Element der Liste hat den Wert 0 und zeigt auf Nullte Byte in FBuffer. Das erste Element hat z.B. den Wert 56 und zeigt auf das 56. Byte in FBuffer, was einem Zeiger auf den zweiten Eintrag des Inhaltsverzeichnisses entspricht, usw. Dabei ist der Inhalt von FBuffer folgendermaßen zu interpretieren:  
Beispiel: Das nullte Element der Liste hat den Wert 0 und zeigt auf Nullte Byte in FBuffer. Das erste Element hat z.B. den Wert 56 und zeigt auf das 56. Byte in FBuffer, was einem Zeiger auf den zweiten Eintrag des Inhaltsverzeichnisses entspricht, usw. Dabei ist der Inhalt von FBuffer folgendermaßen zu interpretieren:  
<pre>
  TZenoLibraryCompressionType = (zenocompDefault, zenocompNone, zenocompZip);
  TZenoLibraryCompressionType = (zenocompDefault, zenocompNone, zenocompZip);
  TZenoLibraryMimeType = (ZenomimeTextHtml, ZenomimeTextPlain, ZenomimeImageJpeg, ZenoMimeImagePng,  
  TZenoLibraryMimeType = (ZenomimeTextHtml, ZenomimeTextPlain, ZenomimeImageJpeg, ZenoMimeImagePng,  
Line 56: Line 72:
   rExtra: array [0..$FFF] of char;            // Artikeltitel, Nullbyte, evtl. Parameter wie h=200, durch Nullbyte getrennt
   rExtra: array [0..$FFF] of char;            // Artikeltitel, Nullbyte, evtl. Parameter wie h=200, durch Nullbyte getrennt
  end;
  end;
</pre>


Es ist zu beachten, dass der Record auf Bytegrenzen gepackt ist, d.h. ohne rExtra genau 26 Byte groß ist. Durch das zwingene Nullbyte in rExtra auch bei einem leeren Artikeltitel ist somit jeder Eintrag mindestens 27 Byte groß.  
Es ist zu beachten, dass der Record auf Bytegrenzen gepackt ist, d.h. ohne rExtra genau 26 Byte groß ist. Durch das zwingene Nullbyte in rExtra auch bei einem leeren Artikeltitel ist somit jeder Eintrag mindestens 27 Byte groß.


=== Zusatzdaten bei Indexdateien ===
=== Zusatzdaten bei Indexdateien ===

Navigation menu