Мысли
о
Паскале
г
Владислав Д ЕМ Ь Я Н И Ш И Н
Продолжение, начало см. в М К № 46, 51-52, 4, 6-7, 10, 12-13, 16-18, 22, 24, 29, 34, 41, 46, 4, 6, 17, 21, 23, 28, 30,
32, 39, 42, 45, 47(165, 170-171, 175, 177-178, 181, 183-184, 187-189, 193, 195, 200, 205, 212, 217, 227, 229, 240, 244,
246, 251, 253, 255, 262, 265, 268, 270)
Навигация пи файлу
Д
ля ги б кости р о б о т ы с ф а й л а м и в T u rb o P a sc a l п р е д у-
см о тр е н ы д о п о л н и те л ьн ы е в о зм о ж н о сти .
П р о ц е д у р а
S e e k (v a r F ; N : l o n g i n t )
п о зи ц и о н и р у е т
у к а за т е л ь н а эле м ен т N (н ум ер ац и я с нуля) о тк р ы то го
ф айл а, п р е д ста в л е н н о го ф а й л о в о й п е р е м е н н о й
F.
П о с л е это -
го те кущ ая позиция уко зате л я ф а й л а устан а в л и в а е тся н а N -й
элем ент, и п о с л е д у ю щ и е о п е р а ц и и ч те н и я/зап и си б у д у т п р о -
водиться с это й пози ци и. Если в каче ств е н о в о й п о зи ц и и в
ф ай л е у к а з а т ь зн ач е н и е , р а в н о е или п р е в ы ш а ю щ е е р а з м е р
ф а й л а в эле м ен тах, т о зн а ч е н и е те к у щ е го у к а за те л я б уд е т
у с т а н о в л е н о н а о к о н ч а н и е ф айл а.
Ф ун к ц и я
F i l e S i z e ( v a r F ) : lo n g i n t
в о з в р а щ а е т р а з м е р
о тк р ы то го ф ай л а, п р е д с та в л е н н о го ф а й л о в о й п е р е м е н н о й
F,
в эл е м е н тах б а з о в о г о типа.
Ф ун к ц и я
F i l e P o s ( v a r F ) : lo n g i n t
в о з в р а щ а е т те к у щ у ю
п о зи ц и ю указател я (но м ер те к ущ е го элем ента) о ткр ы то го ф ай -
л а, п р е д с та в л е н н о го ф а й л о в о й п е р е м е н н о й F.
Ф ун к ц и я
E o F (v a r F ) : b o o le a n
в о з в р а щ а е т True, есл и д о с -
тигнут к о н е ц ф айл а, и False в п р о ти в н о м случае;
F
— ф а й -
л о в а я п ер е м е н н ая.
П р о ц е д у р а
T r u n c a t e ( v a r F )
о б р у б а е т х в о с т о в у ю часть
ф айл а, п р е д с та в л е н н о го ф а й л о в о й п е р е м е н н о й F, н а ч и н а я с
те к ущ е й п ози ц и и в о т к р ы то м ф айле. Т аки м о б р а з о м м о ж н о
у ста н о в и ть новы й р а з м е р для о т к р ы то го ф айл а. П р и м е р ы :
v a r F ile W o r d : f i l e o f w o rd ;
b e g in
A s s ig n ( F ile W o r d , 'c :\ d a t a \ w o r d s .d a t ' ) ;
R e s e t( F ile W o r d ) ;
W r i t e l n ( 'F i l e S i z e = ' . F i l e S i z e ( F i l e W o r d ) , 'w o r d ( s ) ' ) ;
{ пози ци они руем у к а з а т е л ь ф ай ла н а х в о с т )
S e e k ( F ile W o r d , F i l e S i z e ( F ile W o r d ) ) ;
{ пози ци они руем у к а з а т е л ь ф айла на се р е ди н у }
S e e k ( F ile W o r d , F i l e S i z e ( F ile W o r d ) d i v 2 ) ;
{ уко рачи ва ем ф айл н а п о ло в и н у )
T r u n c a t e ( F ile W o r d ) ;
W r i t e l n ( 'F i l e S i z e = ' ,F i l e S i z e ( F i l e W o r d ) , 'w o r d (s ) ' )
І
C lo s e ( F ile W o rd ) ;
e n d .
Специальные пперации
С л е д у е т п ер ечи сли ть н е к о то р ы е о п е р а ц и и , п р е д н а з н а ч е н -
н ы е для м а н и п у л я ц и й с э л е м е н т а м и ф а й л о в о й си с те м ы
M S - D O S — ф а й л а м и и к а та л о га м и (папкам и).
О п е р а ц и я уд аления ф а й л а
E ra s e ( v a r F )
вы зы вается с у к а -
за н и е м ф а й л о в о й п ер е м е н н о й , при это м ф айл м о ж е т б ы ть свя-
за н с этой п ер е м е н н о й и д а ж е открыт. В л ю б о м сл у ч ае п о сл е
в ы зо в а
E ra s e
за к р ы в а ть ф айл не им еет см ы сла (закр ы вать не-
чего), п о это м у с тр о к у
c lo s e (F ile W o r d )
м о ж н о опустить:
b e g in
A s s ig n (F i le W o r d , 'w o r d s .d a t ' ) ;
R e s e t ( F ile W o r d ) ;
E r a s e ( F ile W o r d ) ;
C lo s e ( F ile W o r d ) ;
e n d .
О п е р а ц и я пер еим ен ован ия (переброски) ф айл а
Rename ( v a r
F ; NewName : s t r i n g )
тр е б у е т у к азан и я п ри сое д и н ен н ой ф а й -
л о в о й п ер е м е н н о й , а такж е стр о ки с н о вы м и м ен ем ф айла:
b e g in
a s s ig n ( F ile W o r d , 'w o r d s .d a t ' ) ;
Renam e( F ile W o r d , 'a w o r d s .d a t ' ) ;
e n d .
П р и это м ф айл не следует откры вать, и н ач е при вы пол н е-
нии ком ан д ы
Rename
п р о и зо й д е т о ш и б к а
Error 5: File access
denied
— з а п р е щ е н д о ступ к ф айл у (то б и ш ь к
words.dat,
к о т о -
ры й следует переим еновать). Д а н н а я о ш и б к а м о ж е т во зн и к-
нуть е щ е и тогда, когд а ф айл с новы м и м ен ем уж е с ущ е ств у-
ет (в н а ш е м сл у ч ае — ф айл
awords.dat).
Если ж е п е р е и м е н о в ы -
ваем ы й ф айл отсутствует, то в о зн и к ае т о ш и б к а
Error 2: Rie
not found
(ф айл не найден). У к а за н и е т а к о го к о р о тк о го им е-
ни ф а й л а (без пути) п ри е м л е м о лиш ь для ф айла, кото р ы й н а -
ходится в те кущ е м к а тал о ге (с п р о гр а м м о й или ж е у с т а н о в -
л ен н о м ко м а н д о й
c h D ir).
Если ж е н е о б х о д и м о ф айл не п р о -
сто п е р е и м е н о в а ть, н о е щ е и п е р е б р о с и ть его в д р уго е м е -
сто н а диске, т о то гд а след ует у к азать н о в о е имя ф а й л а и путь,
куд а е го с л е д у е т п е р е м е с ти ть —
Rename (F i le W o r d , 'd : \
a w o r d s .d a t ').
Так как ф айл откр ы т н е был, т о и за к р ы в а ть
е го о п е р а ц и е й
c lo s e
не нуж но. Есть м аленький н ю ан с, к о т о -
ры й м о ж е т бы ть ч р е в а т серьезны м и н е уд об ствам и , и с о с то и т
он в том , что при попы тке п е р е б р о с и т ь ф айл с о д н о го д иска
н а д р угой п р о и зо й д е т о ш и б к а вы полнения. Так, стр оки
a s s i g n ( F ile W o r d , 'd :\ a w o r d s .d a t ' ) ;
Renam e( F ile W o r d , 'c s \ a w o r d s .d a t ' ) ;
в ы зо в ут о ш и б к у
Error 17: Cannot rename across drives
(нель-
зя п е р е и м е н о в ы в а ть с д и с к а н а диск). О т с ю д а вывод: м о ж н о
п е р е и м е н о в ы в а ть ф айлы в п р е д е л ах о д н о го диска.
О п е р а ц и я
M k D ir
( s :
s t r i n g )
с о з д а е т но вы й п о д к а та л о г
с и м е н е м
S.
Д ля с о з д а н и я п а п к и
files
в те к у щ е й п а п к е —
M k D ir
(
' f i l e s '
), для с о зд а н и я н о в о й п ап к и в к о р н е в о м к а -
та л о ге D -д и ска —
M k D ir ( 'd : \ f i l e s ' ).
Д ля уд але н и я п ап к и сл е д ует вы звать
R m D ir(S : s t r i n g )
с и м е н е м п ап ки в те к ущ е м к а та л о ге
R m D ir( ' f i l e s ' )
или с
у к а з а н и е м п о л н о го пути к п ап к е
R m D ir
(
' d : \ f i l e s '
)
.
Д ля см ен ы те к у щ е й п ап к и с л е д у е т в ы зы в ать о п е р а ц и ю
C h D ir ( S : s t r i n g )
с те м ж е и м ен ем папки, ч то и для п р е д ы -
д ущ е й о п е р а ц и и , а п ро вер и ть, к а ка я п а п к а н а д а н н ы й м о -
м е н т является текущ е й , м о ж н о п ри п о м о щ и п р о ц е д у р ы
G e t -
D i r ( D ;b y t e ; v a r
S :
s t r i n g )
с у к а з а н и е м н о м е р а д и ска
D
и
п о л уч е н и е м и м ени те к ущ е й п ап ки в с тр о к е S. П р и э то м сл е -
д у е т у к а з а т ь н о м е р д и ск а 0 для те к у щ е го д и ск а или н о м е р а
1,2,3,4,5,.
.. для д и сков A,B,C,D,E,.
.. с о о тв е т с тв е н н о . П р и м е р :
v a r S : s t r i n g ;
b e g in
G e t D i r ( 0 , S ) ;
w r i t e l n ( S ) ;
C h D i r ( ' d : \ f i l e s ' ) ;
G e t D i r ( 0 , S ) ;
w r i t e l n ( S ) ;
e n d .
Ч то б ы п ер е й ти н а од ин у р о в е н ь д е р е в а п а п о к вы ш е, сл е -
д у е т вы пол нить
c h D i r
( ' .
. ' ) с двум я то ч ка м и в ка че ств е п а -
р а м е тр а .
В ы п о л н е н и е всех этих о п е р а ц и й в о п р е д е л е н н о й си туац и и
м о ж е т в ы звать о ш и б к у, и р а б о т а п р о гр а м м ы б у д е т п р е р в а -
на. К а к с этим б о р о ть с я , б у д е т р а с с к а з а н о ниже.
Для пол учен ия и н ф о р м а ц и и о р а з м е р е д и ск а в б а й т а х сл е -
дует вы звать ф ункцию
D i s k S i z e (D r iv e :B y t e )
:
lo n g i n t
с та н -
д а р т н о г о м од уля D O S , где п а р а м е т р
D r i v e
у к а з ы в а е т н о м е р
д и ска в со о тв е тс тв и и с о с к а за н н ы м вы ш е. П р и э то м если р а з -
м е р л о ги ч е с ко го д и ск а п р е в ы ш а е т 2 Гб, все р а в н о б у д е т п о -
л учен р е зу л ь та т 2 Гб.
№ 52/275 29 декабря-5 января 2003/04
предыдущая страница 44 Мой Компьютер 2004 52 читать онлайн следующая страница 46 Мой Компьютер 2004 52 читать онлайн Домой Выключить/включить текст