Keresés

Új hozzászólás Aktív témák

  • vz12

    tag

    válasz orbano #4210 üzenetére

    Hali!

    Anno amikor a DOS-os Pascalból (TP) átírtam egy progimat D3-ba én is találkoztam ezzel a problémával. Input + output célból volt egy rekordokból álló tipusos fájlom ami TP alatt tökéletes volt, de D3-ban nekem is elcsúszott beolvasáskor. Én magamtól rátaláltam a megoldásra, csak most kapásból nem emlékeztem hogy mi volt az. :D De egy kis keresgélés után megtaláltam hogy melyik volt az a progi, és mivel szerencsére kommentelni sem felejtettem el (!) így az én megoldásomat most el tudom mondani. Fordítási direktívákkal (!!!) kellett játszani, na nem sokat de célirányosan.

    Én ezt a kettőt állítottam be a program elején, lehet később is de legkésőbb a fájlkezelés előtt:
    {$H-} // default is ShortString
    {$A-} // NOT Aligned record fields

    A Project Options/Compiler menüpontban is le lehet szedni a 2 pipát a checkboxból, de így a programból kiadott utasításként hosszabb távon biztosabb a siker ... ;)

    A {$H-} sem árt, de főleg a {$A-} a lényeges, mert az alapértelmezett "+" valami automatikus szóhatárra illesztést végez, tehát 4 byte-os határra "tol" adatokat a rekordban (igazából nem tudom hogy mi célból), kikapcsolva meg nem tologat semmit, nekem így megszűnt az elcsúszás. Sajnos a "+" a default. Nekem gyanús hogy ez lesz a megoldás Nálad is, tehát ez(eke)t ki kellene kapcsolni.
    Egy próbát megér.

Új hozzászólás Aktív témák