ABEV .dat, .kat, .elk fájlok szerkezete

Mostanában megint elkezdtem nézegetni az ABEV nyomtatványkitöltő program adatfájljait, hátha rájövök, mi a belső szerkezetük.

A .dat, .kat, .elk fájlok tartalmáról ezeket sikerült kideríteni:

D4: két bájt, == 'D4', két karakter

ABEV verzió hossza: két bájt
ABEV verzió: 19 bájt, szöveg, a mező végéig '\0'-val kitöltve

flag1: 1 bájt
flag2: 1 bájt, == 1, ha a későbbiekben előfordul megjegyzés mező.
flag3: 1 bájt

nyomtatványnév hossza: 2 bájt
nyomtatványnév: a hossznál megadott méretű szöveg (a szövegek végén nincs '\0')

adószám hossza: 2 bájt
adószám: a hossznál megadott méretű szöveg

név hossza: 2 bájt
név: a hossznál megadott méretű szöveg

dátumtól hossza: 2 bájt
dátumtól: a hossznál megadott méretű szöveg

dátumig hossza: 2 bájt
dátumig: a hossznál megadott méretű szöveg

elmentve hossza: 2 bájt
elmentve: a hossznál megadott méretű szöveg

információ hossza: 2 bájt
információ: a hossznál megadott méretű szöveg

adóazonosítójel hossza: 2 bájt
adóazonosítójel: a hossznál megadott méretű szöveg

ha van megjegyzés, akkor
megjegyzés hossza: 2 bájt
megjegyzés: a hossznál megadott méretű szöveg

Ez volt a fejrész, ami után a nyomtatványban szereplő adatok következnek:

mezők száma: 2 bájt

majd a megadott számú adatmező:

mező kódszáma: 2 bájt
mezőérték hossza: 2 bájt
mezőérték: a hossznál megadott méretű szöveg

Végül azoknak a lapoknak a tartalma következik, amikből több példány is lehet kitöltve a nyomtatványban:

lapok száma: 2 bájt (== 0, ha nincs további lap)

majd a megadott számban az egyes lapok tartalma:

lapnév hossza: 2 bájt
lapnév: a hossznál megadott méretű szöveg

lap sorszáma: 2 bájt

majd a lapon található mezők adatai:

mezők száma: 2 bájt

majd a megadott számú adatmező:

mező kódszáma: 2 bájt
mezőérték hossza: 2 bájt
mezőérték: a hossznál megadott méretű szöveg

Az .abv fájlok elejének is ugyanez a szerkezete.

Még nem sikerült rájönnöm, hogy mit tárolnak a flag1 és a flag3 mezők, és az is lehet, hogy a flag2 mezőnek több szerepe is van annál, hogy a megjegyzés mező előfordulását tartalmazza.

Majd még nézegetem. :-)

Hozzászólások

kérdésem az:
Megadjam a telefonos elérhetőségét annak a személynek aki nagy valószinüséggel tud segiteni neked?
vagy inkább magad szeretnéd megfejteni ezt?

Es igy kezdodott az opensource ABEVIX fejlesztese :P