UB BRAUNSCHWEIG
Symbolfoto
  • Impressum
  • Startseite
  • allegro-C von A-Z
  • Druckversion


.TBL Struktur

So sieht der Anfang einer .TBL-Datei aus, und zwar der cat.tbl bei der Demo-Datenbank:
(in Hexadezimal-Codes)

00 03 01 00 00 01 01 00 00 FC 01 00 01 BE 01 00
02 EC 01 00 03 B2 01 00 04 CD 01 00 05 E9 01 00
07 5C 01 00 08 27 01 00 09 0B 01 00 0A 11 01 00
0B EA 01 00 0D 77 01 00 0E 8D 01 00 0F 5E 01 00
...

Die ersten zwei Bytes, 00 03, tragen besondere Verantwortung:

00 : Momentan ist die Datenbank zum Schreiben freigegeben, sonst stünde hier 01

03 : Die .ALD-Dateien können bis zu 16MB groß werden.
      Stünde hier eine 04, dann wären es  2x16 = 32MB, bei einer 05: 3x16MB = 48MB usw.

Dann kommt die Adresse des ersten Satzes, d.h. des Satzes mit der internen Nummer 1:
01 00 00 01

Die erste Zahl gibt die Dateinummer an, also steht der Satz in  cat_1.ald.
Dann kommen 3 Byte, aus der man die Position des Satzes in der Datei so errechnet:
0*65536 + 0*256 +1 = 1        (65536 = 256*256)
Das heißt: Der Satz beginnt auf der Position 1 der Datei. Dort stehen 4 Bytes für die interne Satznummer,
in diesem Fall  00 00 00 01
der Text des Satzes folgt sofort danach und endet mit der Kombination 13 10
(Siehe dazu Dokumentation des Dateiformats .ALD)

Nehmen wir jetzt mal an, der Satz mit der internen Nummer 3 soll geholt werden.
Dann rechnet das Programm so:  
(3-1)*4+2 = 10

Auf Position 10 beginnt danach in der .TBL die Adresse des Satzes 3. Und dort steht in diesem Fall:
01 00 01 BE
Also ist der Satz 3 ebenfalls in Datei 1, und zwar auf der Position  
0*65536 + 1*256 + 190 = 702
An der Position 702 in Datei 1 muß dann stehen  00 00 00 03, sonst ist es nicht
der Satz mit der internen Nummer 3 und die .TBL hat einen Fehler!

Man sieht: die interne Satznummer steht als solche nicht in der .TBL, sondern die
Adresse z.B. des Satzes 3 steht an der Stelle, die sich durch die Berechnung (3-1)*4+2
ergibt. (Die +2 in diesen Rechnungen ergeben sich aus den 2 Sonderbytes am Anfang,
und -1 muß sein, weil es keinen Satz 0 gibt.)

Abstrakter gesagt: Für den Satz mit der internen Nummer N gibt es in der TBL
einen 4 Byte langen Abschnitt, und zwar an der Stelle  (N-1)*4+2, und dort steht
seine ALD-Dateinummer und Position; an dieser Adresse in der .ALD steht dann die interne Nummer,
codiert als 4 Byte, beim Satz 3 also  00 00 00 03, und darauf folgt der Text des Satzes.

Diese Methodik ermöglicht sowohl das schnelle Auffinden eines Satzes und zugleich
das Prüfen der Adresse auf Korrektheit.



[i] zuletzt aktualisiert: 08.04.2011
Email: ub@tu-bs.de