Demagun erregistroen fitxategi bat sortu dugula. Fitxategiaren elementu bakoitza erregistro bat da, eta erregistroak bi eremu ditu: lehena Integer datu-motakoa eta bigarrena Real datu-motakoa.trdIntReal = RECORD Lehena : integer ; Bigarrena: real ; END ;Demagun sortutako fitxategiaren izena Zenbakiak.dat dela eta bere edukia datu-mota desberdineko fitxategien bitartez pantailaratzea nahi dugula. Eduki bera pantailaratzeko lau fitxategiren datu-motak erabiliko dira. |
1
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun datu-mota DM_rdIntReal da, hots, sorrerako datu-mota berbera. Ondorioz, pantailaratuko den informazioa "jatorrizkoa" izango da. Adibidean:
1. eremuan 163 balioa eta 2. eremuan 1.1295338E+001 balioa.
2
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun datu-mota DM_rdRealInt da, jatorrizkoaren antzekoa baina eremuen datu-motak elkar trukaturik (lehena Real datu-motakoa eta bigarrena Integer datu-motakoa):
trdRealInt = RECORD Lehena : real ; Bigarrena: integer ; END ;Ondorioz, nahiz eta Zenbakiak.dat fitxategiaren edukia ez den aldatu, pantailaratuko den informazioa bestelakoa izango da. Adibidean:
1. eremuan 9.7150463E+302 balioa eta 2. eremuan 1076270902 balioa.
3
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun FILE datu-mota DM_fbyBytak da, hots, fitxategian BYTE datu-motako informazioa dagoela interpretatzen duen fitxategia. Horregatik, Zenbakiak.dat fitxategiaren edukia hainbat byten sorta delakoan, byte guztiak banan-banan pantailaratuko dira.
4
Zenbakiak.dat fitxategiaren edukia pantailaratzeko erabiliko dugun FILE datu-mota DM_fcKaraktereak da, hots, fitxategian CHAR datu-motako informazioa dagoela interpretatzen duen fitxategia. Horregatik, Zenbakiak.dat fitxategiaren edukia hainbat karakteren sorta delakoan, karaktere guztiak banan-banan pantailaratuko dira; bide batez, karaktere bakoitzaren ordinala ere erakusten da (3 urratseko informazio bera da).
Hona hemen, fitxategi beraren edukia modu desberdinez pantailaratzen duen programa:
{---------------------------------------------------------------- Erregistroak gordetzen dituen "Zenbakiak.dat" fitxategia sortu eta datu-mota desberdineko fitxategien bitartez atzitu. ----------------------------------------------------------------} program Fitxategi_integerrealbytechar; type tsKate99 = string[99]; trdIntReal = record Lehena : integer; Bigarrena: real; end; tfrdIntReal = file of trdIntReal; trdRealInt = record Lehena : real; Bigarrena: integer; end; tfrdRealInt = file of trdRealInt; tfbyBytak = file of byte; tfcKaraktereak = file of char; {--------------bakarra den fitxategia sortu--------------} procedure INTEGER_REAL_FitxategiaSortu(sFitxIzen: tsKate99); var f: tfrdIntReal; rdZenbakiak: trdIntReal; k, iZenbat: integer; begin assign(f, sFitxIzen); rewrite(f); write('Zenbat elementu nahi dituzu (2 elementu adibidez): '); readln(iZenbat); randomize; for k:=1 to iZenbat do begin rdZenbakiak.Lehena := random(256); (* byte baten balioak *) rdZenbakiak.Bigarrena := random*100; (* 0.0 eta 99.99 artekoa *) write(f, rdZenbakiak); end; close(f); end; {-----bakarra den fitxategia INTEGER_REAL bezala ikusi-----} procedure INTEGER_REAL_FitxategiaIkusi(sFitxIzen: tsKate99); var f: tfrdIntReal; rdZenbakiak: trdIntReal; begin assign(f, sFitxIzen); reset(f); while not eof(f) do begin read(f, rdZenbakiak); writeln(filepos(f)-1, ' posizioan 1. eremua = ', rdZenbakiak.Lehena:3, '2. eremua = ':25, rdZenbakiak.Bigarrena:0:2); end; close(f); end; {-----bakarra den fitxategia REAL_INTEGER bezala ikusi-----} procedure REAL_INTEGER_FitxategiaIkusi(sFitxIzen: tsKate99); var f: tfrdRealInt; rdZenbakiak: trdRealInt; begin assign(f, sFitxIzen); reset(f); while not eof(f) do begin read(f, rdZenbakiak); writeln(filepos(f)-1, ' POSIZIOAN 1. EREMUA =', rdZenbakiak.Lehena:12, '2. EREMUA = ':16, rdZenbakiak.Bigarrena:2); end; close(f); end; {-----bakarra den fitxategia CHAR bezala ikusi-----} procedure CHAR_FitxategiaIkusi(sFitxIzen: tsKate99); var f: tfcKaraktereak; cKarakterea: char; k: integer; begin assign(f, sFitxIzen); reset(f); k:= 0; while not eof(f) do begin read(f, cKarakterea); k := k + 1; writeln(k:3, '. elementua = |', cKarakterea, '| ', Ord(cKarakterea):3); end; close(f); end; {-----bakarra den fitxategia BYTE bezala ikusi-----} procedure BYTE_FitxategiaIkusi(sFitxIzen: tsKate99); var f: tfbyBytak; byByte: byte; k: integer; begin assign(f, sFitxIzen); reset(f); k:= 0; while not eof(f) do begin read(f, byByte); k := k + 1; writeln(k:3, '. elementua = ', byByte:3); end; close(f); end; var {---------------------- Programa Nagusiko aldagaiak ---------------} sFitxIzen: tsKate99; begin {--------------------------- Programa Nagusia -------------------} { sFitxIzen := 'C:\Datuak\Zenbakiak.dat'; writeln('Fitxategi bitarraren izena: ', sFitxIzen); } sFitxIzen := 'Zenbakiak.dat'; writeln('Fitxategi bitarraren izena: ', sFitxIzen); writeln; writeln('sizeof(tsKate99) = ', sizeof(tsKate99):3, ' byte'); writeln('sizeof(integer) = ', sizeof(integer):3, ' byte'); writeln('sizeof(real) = ', sizeof(real):3, ' byte'); writeln('sizeof(byte) = ', sizeof(byte):3, ' byte'); writeln('sizeof(char) = ', sizeof(char):3, ' byte'); writeln('sizeof(trdIntReal) = ', sizeof(trdIntReal):3, ' byte'); writeln('sizeof(trdRealInt) = ', sizeof(trdRealInt):3, ' byte'); writeln; writeln('RETURN sakatu aurrera egiteko!'); readln; INTEGER_REAL_FitxategiaSortu(sFitxIzen); { Lehen eremua integer } writeln; { Bigarren eremua real } writeln('Zenbakiak.dat fitxategiaren edukia integer-real bezala azterturik:'); writeln('------------------------------------------------------------'); INTEGER_REAL_FitxategiaIkusi(sFitxIzen); writeln('------------------------------------------------------------'); writeln; writeln('Zenbakiak.dat fitxategi bera real-integer bezala azterturik:'); writeln('------------------------------------------------------------'); REAL_INTEGER_FitxategiaIkusi(sFitxIzen); writeln('------------------------------------------------------------'); writeln; writeln('Zenbakiak.dat fitxategi bera BYTE bezala azterturik:'); writeln('------------------------------------------------------------'); BYTE_FitxategiaIkusi(sFitxIzen); writeln('------------------------------------------------------------'); writeln; writeln('Zenbakiak.dat fitxategi bera CHAR bezala azterturik:'); writeln('------------------------------------------------------------'); CHAR_FitxategiaIkusi(sFitxIzen); writeln('------------------------------------------------------------'); writeln; writeln; writeln ('Programa amaitzeko RETURN tekla sakatu'); readln; end. { PROGRAMAREN BUKAERA }
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.