Turbo Pascal – 11. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Turbo Pascal – 11. lekceTurbo Pascal – 11. lekce

 

Turbo Pascal – 11. lekce

Google       Google       16. 4. 2006       28 701×

V minulém díle jsme si vysvětlili, jak pracovat s textovými soubory. Doba jde ovšem dopředu a nám se víc budou hodit soubory typové a probereme si i soubory netypové.

Reklama
Reklama

Soubory v Pascalu jsou takřka nepostradatelné při větších programech, jak jsme si již vysvětlili minule. Ovšem řešit všechno přes textové soubory je neefektivní a také bezpečnost je velmi nízká. Proto si dnes vysvětlíme typové soubory.

Typové soubory

Typové soubory vnesly do programování novou šťávu, protože v sobě uchovávají informace o proměnných, a tudíž s nimi lze pracovat velmi flexibilně.

Všechny složky typových souborů mají stejnou délku a následují postupně za sebou. Tato vlastnost nám umožňuje volně se pohybovat po souboru, a to následujícími způsoby:

  • Sekvenční přístup (postupný)
  • Přímý přístup ke složkám podle jejich pořadového čísla, kde první složka souboru má pořadové číslo 0
  • Kombinovaný přístup (kombinace obou předchozích metod)

Jednotlivé přístupy si vysvětlíme dále. Nyní se pustíme do samotného zavedení a práce se souborem.

Deklarace souboru:

Jak jsme již z Pascalu zvyklí, nejprve si musíme si všechno nadeklarovat v deklarační části a typový soubor není výjimkou. K deklaraci použijeme záznam (vysvětleno v lekci 9). Poté se soubor nadeklaruje jako soubor, jehož typ je záznam: soubor: File of lide;

Nejlepší bude uvést si příklad:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
end.

Takto jsme si tedy nadeklarovali soubor a jeho typ, který budeme používat. Znamená to, že soubor, se kterým budeme pracovat, je typový a bude pracovat jen s proměnnými ze záznamu lidé.

První kroky se souborem

Jak jsme si již vysvětlili v minulé lekci, první, co musíme udělat se souborem, je přiřazení jména souboru, tzn. název souboru na disku, na který se bude zapisovat. To učiníme příkazem Assign: Assign (název proměnné souboru,'název souboru');. V našem případě takto:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
end.

U typových souborů neplatí žádné pravidlo pro příponu souboru. Můžete si sami zvolit, jaký typ souboru chcete použít. V našem příkladu budeme používat soubor Lide.dat

Máme tedy přiřazené jméno a jediné, co nám zbývá, abychom mohli se souborem pracovat, je soubor otevřít.

Otevření souboru

Máme dvě metody otevření souboru a každá má jinou funkci, tak se na ně podíváme:

Rewrite
Pokud soubor na disku neexistuje, je vytvořen a připraven na zápis. Pokud soubor již existuje, přepíše se celý novými daty. Syntaxe: Rewrite(proměnná souboru)
Reset
Otevření existujícího souboru na disku. Pokud soubor neexistuje, program zahlásí chybu. Syntaxe: Reset(proměnná souboru)

Oba typy otevření souboru umožňují číst i zapisovat ze souboru.

V minulé lekci jsme se naučili jak ošetřit neexistující soubor na disku a to samé použijeme i zde:


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   (* Vypnutí vnitřní kontroly chyb *)
    Reset(soubor); (* Zkouška otevření souboru *)
    if IOResult<>0 then Rewrite(soubor);  (* Ověření dostupnosti souboru *)
  {$I+}  (* Znovuzapnutí vnitřní kotroly chyb *)
end.

Nyní jsme otevřeli soubor. Pokud soubor na disku neexistuje, založili jsme nový.

Úplně posledním krokem v práci se souborem je samozřejmě zavření souboru. Pamatujte si, že je nezbytné vždy soubor uzavřít. Uzavření provedeme opět příkazem Close(proměnná souboru);.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:real;
            end;  
var soubor : File of lide;
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  Close(soubor);
end.

Vše nezbytné pro samotnou práci se soubory jsme si tedy vysvětlili a můžeme se pustit do samého těla práce.

Práce se soubory

Operace, které můžeme provádět se soubory, jsou vstupní, výstupní a ostatní operace.

Výstupní operace

Výstupní operace znamená zapisovat do souboru, pohybovat se v souboru a další funkce pro práci se soubory:

Write
Zapisování hodnot (proměnných) do souboru. Syntaxe: Write(soubor,promenna);
Seek
Přesunutí v souboru na určitou složku souboru. Syntaxe: Seek(soubor,pořadí složky);
Eof
Zjištění konce souboru. Pokud se nacházíte na konci souboru, vrací hodnotu TRUE. Syntaxe: Eof(soubor);
FilePos
Vrací hodnotu (číslo) složky, ve které se právě nacházíte. Syntaxe: FilePos(soubor);
FileSize
Vrací hodnotu (počet) všech složek v souboru. Syntaxe: FileSize(soubor);
Truncate
Smazání všech složek od aktuální až do konce souboru. Syntaxe: Truncate(soubor);

Toto jsou základní výstupní operace se soubory. My je použijeme v našem případě a zapíšeme si jednu složku do souboru. Nejdříve si přidáme do deklarační části proměnnou, která má typ jako soubor.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:integer;
            end;  
var soubor : File of lide;
    clovek : lide;  
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  clovek.jmeno:='Tomas';
  clovek.vek:=17;
  clovek.vyska:=183;
  Write(soubor,clovek);
  Close(soubor);
end.

Zapsali jsme si hodnotu do souboru. Nyní ji můžeme ze souboru přečíst.

Vstupní operace

Vstupní operace je pouze jedna a je to čtení ze souboru.

Read
Vyčte ze souboru složku, kterou rozdělí do proměnných podle záznamu. Syntaxe: Read(soubor,promenna);

Zkusíme si námi vložené údaje opět vyčíst.


Program typsoubor;
uses crt;
Type lide = Record
              jmeno:string;
              vek:integer;
              vyska:integer;
            end;  
var soubor : File of lide;
    clovek : lide;  
Begin
  clrscr;
  Assign(soubor,'Lide.dat');
  {$I-}   
   Reset(soubor); 
   if IOResult<>0 then Rewrite(soubor);  
  {$I+}  
  clovek.jmeno:='Tomas';
  clovek.vek:=17;
  clovek.vyska:=183;
  Write(soubor,clovek);
  Close(soubor);
 
  Reset(soubor);
  Read(soubor,clovek);
  Close(soubor);
end.

Vyčetli jsme ze souboru naše údaje. Jistě jste si všimli, že před čtením jsme museli soubor uzavřit. Na to nikdy nezapomeňte, protože jinak se vám do souboru neuloží změny.

Poslední dvě oprace, o kterých si povíme s typovými soubory:

Erase
Smazání souboru z disku. Syntaxe: Erase(soubor);
Rename
Přejmenování souboru. Syntaxe: Rename(soubor,'nové jméno');

Naučili jsme se tedy veškerou práci s typovými soubory a můžeme se jen v rychlosti podívat na netypové.

Netypové soubory

Netypové soubory se používají hlavně tehdy, když dopředu nevíme, jaký typ souboru použijeme nebo máme k dispozici. Netypové soubory se hlavně používají pro přístup ke všem typům souborů na disku.

Netypovým souborům nechci ve svém kurzu přikládat zvláštní pozornost. Já sám jsem je nikdy nepoužil. S netypovými soubory se pracuje skoro stejně jako s typovými soubory s rozdílem dvou příkazů:

BlockWrite
Přečte z netypového souboru určitý sektor dat. Syntaxe: BlockWrite(soubor,promenna,počet,celkem);
BlockRead
Chová se stejně jako BlockWrite, ale místo zapisování čte ze souboru. Syntaxe: BlockRead(soubor,proměnná,počet,celkem);

Ostatní funkce jsou stejné nebo velice podobné jako u typových souborů, ale s netypovými soubory se v mém kurzu nesetkáte. Pokud by byl opravdu velký zájem, mohl bych napsat něco jako lekci navíc o těchto souborech.

Jsme tedy u konce dnešní lekce se soubory. Čeká nás už jen domácí úkol.

Domácí úkol

Použijte svůj domácí úkol z 9. lekce se záznamy. Záznam zapište do soubru (všech 6) a pak je všechny opět vypište. Aby někdo nepodváděl, tak na zapsání a vypsání záznamů si zvolte dvě proměnné.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor programuje v Pascalu.

Nové články

Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý