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.BON","PROGRAM.BAK") then
Writeln("Zßlo₧nφ kopie programu byla vytvo°ena")
End If
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")
End If
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")
End Sub
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")
End Sub
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: "+CStr(x/1024/1024))
Else
Writeln("Mechanika A: nenφ p°ipravena")
End If
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
Writeln("Zm∞na adresß°e prob∞hla v po°ßdku")
Chdir(d) 'p°epneme se zp∞t do p∙vodnφho adresß°e
Else
Writeln("Zadan² adresß° z°ejm∞ neexistuje !")
End If
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φ
End If
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) |