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) |