předchozí lekce (1.20) | obsah kurzu | následující lekce (1.22) |
Jména souborů a adresářů se v následujících funkcích předávají ve tvaru řetězce. Pokud se soubor nachází ve stejném adresáři jako program, není nutné uvádět k němu cestu (jméno adresáře). Stejně tak nemusíte uvádět označení disku, pokud se jedná o aktuální disk.
Asi nejčastěji používanou funkcí bude kopírování souborů. K tomu nám poslouží funkce
FileCopy, ve které musíte uvést jako parametr jméno zdrojového souboru a jméno cílového
souboru. Funkce přitom vrací logickou hodnotu o úspěšnosti kopírování:
If FileCopy('PROGRAM.KLN','PROGRAM.BAK') then
Writeln('Záložní kopie programu byla vytvořena');
Soubor se nemusí zkopírovat v mnoha různých případech. Například soubor pro
kopírování nemusí existovat, na disku je málo místa a podobně. Seznámíme se proto s
funkcemi, které nám zajistí zjištění informací o disku, volném prostoru a podobně.
Nejprve bude vhodné zjistit, zda soubor skutečně existuje. K tomu nám poslouží funkce
FileExists:
If FileExists('C:\CONFIG.SYS') then
Writeln('Soubor opravdu existuje');
Dalším krokem by mohlo být zjištění velikosti souboru, aby jsme mohli následně zjistit,
zda se nám kopie souboru na disk vejde. K tomu se použije funkce FileSize, která vrací
velikost souboru v bajtech. Záporný výsledek signalizuje neexistenci zadaného souboru:
Write ('Velikost:');
Write (FileSize('C:\AUTOEXEC.BAT')/1024);
Writeln(' Kb');
Soubor můžeme kromě kopírování také přejmenovat, případně zrušit. Zde ale opatrně.
Přejmenování souboru provádí funkce FileRename, ve které se musí jako parametry
uvést jméno původního souboru a jméno nového souboru. Funkce vrací logickou hodnotu
indikující úspěšnost operace:
If FileRename('XXX.XXX','YYY.YYY') then
Writeln('Přejmenování souboru proběhlo v pořádku');
Soubor lze samozřejmě také vymazat funkcí FileDelete, ve které se uvede jméno
souboru pro zrušení. Funkce vrací opět logickou hodnotu udávající úspěšnost výmazu
souboru:
If FileDelete('YYY.YYY') then
Writeln('Soubor YYY.YYY byl zrušen');
Další skupina procedur a funkcí se zabývá přímo diskem a disketami, kdy je
možné zjistit jejich velikost, volné místo, ale například také vytvářet a rušit adresáře.
Pro zjištění velikosti (kapacity) disku nebo diskety se použije funkce DiskSize. Jako
parametr se přitom uvádí číslo disku od A (A=1, B=2, C=3, ..). Funkce vrací velikost v
bajtech. Pokud je vrácena záporná hodnota, je tím indikována buď neexistence zařízení,
případně nepřipravenost disketové mechaniky (není založena disketa):
x := DiskSize(1);
If x < 0 then
Writeln('Velikost disku A: '+IntToStr(x/1024/1024))
else
Writeln('mechanika A: není připravena');
Obdobným způsobem je možné zjistit volnou kapacitu disku funkcí DiskFree. Funkce
se dá opět použít pro indikaci nepřipravenosti zařízení. V následujícím příkladě se však
zjišťuje volná kapacita disku C a tak se předpokládá, že opravdu existuje.
Write ('Velikost disku C:');
Write (DiskSize(3)/1024/1024);
Writeln(' Mb');
Write ('Volná kapacita C:');
Write (DiskFree(3)/1024/1024);
Writeln(' Mb');
Další funkce se již zabývají přímo adresáři. Funkce GetDir zjišťuje jméno aktuálního
adresáře. Parametr zadává opět číslo disku od A. Nulový parametr přitom předpokládá
aktuální diskovou jednotku. Změnu pracovního adresáře provedete funkcí ChDir, ve které
uvedete jméno adresáře, do kterého se chcete přepnout.
d := GetDir(0);
If ChDir('\pokus') then
begin
Writeln('Změna adresáře proběhla v pořádku');
Chdir(d); {přepneme se zpět do původního adresáře}
end else
begin
Writeln('Zadaný adresář zřejmě neexistuje !');
end;
Pokud potřebujete založit nový adresář, můžete použít funkci MkDir, kde uvedete
jako parametr jméno adresáře. Zadaný adresář nesmí přitom existovat, nebo to nesmí
být jméno souboru. V případě chyby vrací funkce nenulovou hodnotu. Adresář můžete
naopak zrušit funkcí RmDir, kde uvedete opět jako parametr jméno adresáře pro zrušení.
Adresář musí být přitom prázdný ! V případě úspěšnosti vrací funkce nulovou hodnotu.
If MkDir('pokus') = 0 then {pokud je adresář úspěšně založen}
RmDir('pokus'); {tak ho opět zrušíme, ať nezavazí}
Jak již bylo uvedeno, musíte být při práci s funkcemi pro obsluhu souborů a adresářů
zvlášť opatrní, protože případná chyba může mít nedozírné následky !
předchozí lekce (1.20) | obsah kurzu | následující lekce (1.22) |