21. november 2003 - 16:08Der er
7 kommentarer og 1 løsning
Delphi skal læse filer som er lavet af BorlandPascal 7.0
Filerne består af records som indeholder følgende variable: String[10] erstattes af String[10] + tilsvarende for andre værdier af strings, altid fast længde. Integer erstattes af SmallInt. Real erstattes af Real48. LongInt erstattes af LongInt.
Forskellige værdier af "Record field alignment" er forsøgt Jeg får samme antal bytes ved sizeof/gemmes på disken fra Delphi, som når BorlandPascal gemmer på disken. Jeg bruger Delphi 7.0 Prof. Benytter file of "record type", mange records i hver fil.
Jeg får ikke de rigtige værdier, rent ulæseligt skrot. Hvad gør jeg galt ?
Foruden at du skal have variabel-størrelserne til at passe så skal du også srøge for at alignment passer. En måde (som du har forsøgt) er at via "Record Field Alignment", men netop da den gode gamle BorlandPascal ikke brugte nogen alligenment overhovedet så kan du også bruge "Packed" i forbindelse med definitionen af din Record.
Startede forfra og så virkede det, kunne ikke finde fejlen og opgav efter nogen tid at finde ud af hvor fejlen var i den gamle kode og glædede mig i stedet over det nu virkede.
Problemer er at Tp7 er et 16 bits værktøj. Dermed er en Longint i Tp7 16 bit, hvor i mod den i Delphi 2+ er 32 Bit. En word er ligmed en halv Longint. Ærgo er en 16 Bits longint det sammen som en 32 Bits word !
Jens B
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.