Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 06 10:47 #727

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sikerült helyesen beolvasni a rekordot. Ha szükséges lesz biztosan megoldom valahogy a visszaírást is...
Köszönöm a segítségeteket!

Szerkesztés:
Sikerült megoldani a Lazarus-ról TPascal-ra konverziót is. Bár a törtrésznél, ha nem alkalmozunk maszkolást váratlan dolgok jelentkezhetnek. :S pl.: 26,12 -> 26,1199999999953.
Ezt ki tudom küszöbölni, vagy ez a real48 alkalmazásának a hátránya, vagy csak a sok számolási műveletből adódó hibaszázalék, illetve egyéb hiba.
Ez a hiba egyelőre, szerencsére nem befolyásolja az alap feladatot.

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 05 16:29 #723

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A Borland féle 6 (és 10) bájtos Real típusú számok átalakításáról itt olvashatsz:
Conversion to/from Pascal/Delphi Floating-Point

Letölthető forráskódok is vannak...
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 05 08:28 #722

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sajnos a {$mode TP} kapcsolóval nem sikerült megoldani. Egy külön unit-ban próbáltam létrehozni a rekordszerkezetet, mivel ha a fő unit-ba rakom akkor már az osztály hivatkozásokat is ismeretlennek veszi a fordító...
Lehet, hogy marad a real saját visszafejtése. Sajnos rég foglalkoztam hasonlóval... :(
Köszönöm a leírást!

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 04 21:11 #721

  • ejbenjaro
  • ejbenjaro profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
A real típusra nem tudom megoldás lehet e ha beszúrsz a program (vagy unit) fejébe egy {$mode TP} sort, amivel bekapcsolod a Turbo Pascal kompatibilitást.
Illetve, van itt valami leírás arról, hogy a TP hogyan ábrázolja a real típust : www.inf.unideb.hu/~bodai/pascal/egyszeru_adattipusok.html#lebegopontos_abr
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 04 20:56 #720

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Köszönöm! Így már a rekordszerkezet jól működik.
Már csak a real típusra kell kitalálnom valami megoldást. Ez az adatállományban 6 byte hosszú.

Válasz:Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 04 20:31 #719

  • ejbenjaro
  • ejbenjaro profilkép
  • Haladó forumozó
  • Haladó forumozó
  • Hozzászólások: 66
  • Köszönetek: 4
Tegyél egy packed-et a rekordodhoz és jó lesz.
pl.:
  Tid3v11TagRec = packed record //ID3v1.1
    fSignature : Str3;
    fTitle : Str30;
    fArtist: Str30;
    fAlbum : Str30;
    fYear : Str4;
    fComment : Str28;
    fZero : byte;
    fTrack : byte;
    fGenre : byte;
  end;
Mottó:
"Az ember sokszor más mint aminek látszik. De ritkán jobb..."
--
Gép : Asus P5G41T-M LX, Intel Celeron DC E3400, 4GB DDR3, 320GB SATA2, minden más integrált.
OS : Ubuntu 14.04
--
web: lassuviz.blogspot.hu/

Turbo Pascal rekordszerkezet olvasása fájlból... 2011 márc. 04 19:42 #718

  • zoli19
  • zoli19 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sziasztok!
Van egy Turbo Pascal-os program amely egy rekordszerkezetbe írja ki fájlba az adatokat. Ezt szeretném visszaolvasni (esetleg módosítani) Lazarus-al.
Próblémáim:
- A real típus szerkezete teljesen eltér a két rendszerben.
- A Lazarus a rekordszerkezetbe plusz adatokat illeszt be, ami lehetetlenné teszi az adatok pozícióhelyes beolvasását, kezelését.

Egyelöre két megoldást tudok csak elképzelni:
1. Beolvasni egy byte tömbbe egy rekordot és ki bit-elni belöle az adatokat... (de hogy?)
2. Írni Turbo Pascalban egy segédprogramot ami kiolvassa és átadja (NE!...)

Előre is köszönöm az ötleteket!

  • Oldal:
  • 1