2) Uložení do netextového souboru s pevnou strukturou
- předpokládáme existenci typu, na jehož základě můžeme definovat soubor
type položka = string [100];
var F: file of položka; jedná se o identické typy, proto nelze použít
S : položka; F: file of string [100];
begin S: string [100];
assign (F, ); počítač neví, že se jedná o identifikátory
rewrite (F);
while not eof do begin
readln (S);
writeln (F,S);
end;
close (F);
end.
Výsledný soubor :
- proměnná S zabere 101 bytů, na každém bytu je znak proměnné.
- na 0. bytu okamžitá délka řetězce
- počítač zobrazí nějaký znak pak A opět nějaké znaky atd.
- chybí značka konce řádku – pojede se pořád dál
- soubor je netextový i když obsahuje samé znaky
- soubor, který vzniká je binární, přenos dat mezi oper. pamětí a souborem probíhá jednoduše, vezmu všechny byty s S a vysypu do souboru – proměnná S zabere v paměti 101 bytů, pole od 0 do 101, na každém bytu 1 znak ředtězce, na 0. bytu okamžitá délka řetězce
- soubor tvořen úseky o velikosti 101 bytů
- délka souboru je celistvým násobkem 101
- máme soubor, který má při N řetězcích a průměrné délce řetězce 50 znaků soubor o délce 101 N (ukládá se tolik znaků, kolik je potřeba + nějaké oddělovače)
- soubor je netextový, protože s ním němůžeme pracovat jako s textovým, protože operace, které na ně můžeme použít neovládají soubor tak, jak bychom potřebovali (nejsou to operace shodné s text. souborem)
- netext. soubor po příkazu typu vypíše i ?
- nevýhoda – vélka délka
- výhoda – jednoduchost (všechny položky stejně dlouhé), víme, kde se nachází určititý řetězec, udáváme pozici, osubory jsou výhodné tehdy, poku charakter nemusí číst celý řetězec
Žádné komentáře:
Okomentovat