Professional Documents
Culture Documents
121
3R*yteczne drobiazgi,
czyli PRGX\
biblioteczne
,OH UD]\ ]DVWDQDZLDH VL
MDN Z\F]\FL HNUDQ ]PLHQL NRORU WHNVWX F]\ ZSURZDG]L
znak z klawiatury bez naciskania klawisza ENTER" :\NRQDQLH W\FK F]\QQRFL QLH
Z\PDJD ]DFKRGX Z\VWDUF]\ Z\ZRD RGSRZLHGQL SURFHGXU
ELEOLRWHF]Q -DN VDPD
QD]ZD ZVND]XMH SURFHGXUD WDND QLH MHVW QD VWDH ZEXGRZDQD Z M
]\N
SURJUDPRZDQLD OHF] SRELHUDQD ] RGG]LHOQHJR SOLNX ELEOLRWHNL L GRF]DQD GR
SURJUDPXZWUDNFLHW]ZNRQVROLGDFMLQDVW
SXMFHMSRNRPSLODFML
3DVFDORZH SOLNL ELEOLRWHF]QH QRV] QD]Z
PRGXyZ DQJ unit). Wersja 7.0 oferuje
SURJUDPLFLHG]LHVL
PRGXyZVWDQGDUGRZ\FK
System
Crt
oEVXJDPRQLWRUDNODZLDWXU\LJRQLND
Dos
oEVXJDIXQNFMLV\VWHPRZ\FKZ\ZRDQLDIXQNFMLV\VWHPX06DOS);
Graph
oEVXJDJUDILNL
Strings
oEVXJDDFXFKyZ$6&,,Z;
WinDos
oGSRZLHGQLNPRGXX'26Z\NRU]\VWXMF\DFXFK\$6&,,=
Printer
oEVXJDGUXNDUNL
Overlay
oEVXJDW]ZQDNDGHN
Turbo3
mRGXX]JDGQLDMF\]7XUER3DVFDOHP
Graph3
oEVXJDW]ZJUDILNL*yZLDX*\ZDQHMZ7XUER3DVFDOX
122
uses nazwa-PRGXX
-HOLZ\NRU]\VWXMHV]NLONDUy*Q\FKPRGXyZPXVLV]UR]G]LHOLLFKQD]Z\SU]HFLQNDPL
&KRFLD* PRGX\ WUDNWRZDQH V QDMF]
FLHM MDNR ELEOLRWHNL SURFHGXU ]DZLHUDM RQH
UyZQLH*GDQHZSRVWDFLVWD\FKQSGHILQLXMF\FKNRORU\MDN Red=2), zmiennych (np.
XVWDODMF\FK VSRVyE RWZLHUDQLD SOLNyZ FileMode F]\ WH* REVXJL PRQLWRUD
DirectVideo) i typw (np. DateTime typ rekordowy przeznaczony do
przechowywania czasu i daty, PointType W\S RSLVXMF\ SXQNW QD SDV]F]\(QLH
=DUyZQRSURFHGXU\MDNLGDQHPR*HV]Z\NRU]\VW\ZDEH]RJUDQLF]HDWDN*HSU]\VDQLDZDVQ\PLGHILQLFMDPL3DPL
WDMMHGQDN*HFHQ]DGRVW
SGR]DZDUW\FKZPRGXOH
RELHNWyZ MHVW SRZL
NV]HQLH REM
WRFL JRWRZHJR SURJUDPX Z\QLNDMFH ] GRF]HQLD
LPSRUWRZDQHJR NRGX L GDQ\FK -HOL ]DOH*\ &L QD PLQLPDOL]DFML ZLHONRFL NRGX
Z\QLNRZHJR]DVWDQyZVL
F]\NRQLHF]QLHPXVLV]X*\ZDQSPRGXXCrt. Generalnie
MHGQDN QDOH*\ ]DOHFL X*\ZDQLH PRGXyZ ELEOLRWHF]Q\FK JG\* GDM RQH SURJUDPLFLH
PR*OLZR VNRU]\VWDQLD ]H VSUDZG]RQ\FK UR]ZL]D ZLHOX SUREOHPyZ ]ZDOQLDMF RG
NRQLHF]QRFLZ\P\ODQLDLFKQDZDVQU
N
6WRVXMPRGX\ELEOLRWHF]QH
6SRUyGZ\PLHQLRQ\FKZ\*HMPRGXyZQDMF]
FLHMVWRVRZDQHV CrtXPR*OLZLDMF\
HIHNW\ZQ L HIHNWRZQ REVXJ
NRPXQLNDFML ] X*\WNRZQLNLHP Graph UHDOL]XMF\
operacje w trybie graficznym, oraz DosXPR*OLZLDMF\Z\NRQ\ZDQLHIXQNFMLV\VWHmoZ\FK 3RQLHZD* RPDZLDQLH WUHFL SRV]F]HJyOQ\FK PRGXyZ MHVW NZHVWL GUXJRU]
GQ
QDV]DNVL*NDPDSU]HGHZV]\VWNLPXF]\SURJUDPRZDQLDDQLHVX*\MDNROHNV\NRQ
M
]\ND D WDN*H ]H Z]JO
GX QD V]F]XSR PLHMVFD RJUDQLF]\P\ VL
GR RPyZLHQLD
NLONX QDMSRSXODUQLHMV]\FK HOHPHQWyZ PRGXyZ Crt i Dos wraz z prostymi
SU]\NDGDPL = tych samych przyczyn zrezygnujemy z omawiania bardzo obszernej
]DZDUWRFLPRGXXGraphRGV\DMF]DLQWHUHVRZDQ\FK&]\WHOQLNyZGROLWHUDWXU\>@
=DF]QLHP\ RG PRGXX Crt ZVSRPDJDMFHJR RSHUDFMH ZHMFLD L Z\MFLD ] X*\FLHP
konsoli. Z procedur XOHSV]DMF\FK REVXJ
HNUDQX L NODZLDWXU\ FK\ED QDMF]
FLHM
wykorzystywana jest bezparametrowa procedura ClrScr SRZRGXMFD Z\F]\V]F]HQLH
HNUDQX 3U]\NDG MHM X*\FLD ]QDMG]LHV] Z IXQNFML Menu naszego programu bibliotecz-
3R*\WHF]QHGURELD]JLF]\OLPRGX\ELEOLRWHF]QH
123
QHJR -HOL GRGDWNRZR SU]\ RND]ML F]\V]F]HQLD HNUDQX FKFLDE\ ]PLHQL NRORU\
PR*HV]Z\NRU]\VWDSURFHGXU\TextColor i TextBackground:
TextColor(kolor-tekstu)
TextBackground(kolor-WD
]PLHQLDMFHRGSRZLHGQLRNRORU]QDNyZRUD]WD2F]\ZLFLH]DPLDVWOLF]ERZ\FKZDUWRFLNRORUyZNWRE\MHSDPL
WDQDMOHSLHMVWRVRZDVWDHV\PEROLF]QHQS Blue=1
GOD NRORUX QLHELHVNLHJR (IHNW G]LDDQLD REX SURFHGXU ZLGRF]Q\ MHVW GRSLHUR SR
Z\NRQDQLX NROHMQ\FK RSHUDFML Z\MFLD OXE Z\F]\V]F]HQLD HNUDQX ]D ELH*FH
ZDUWRFLNRORUyZSU]HFKRZ\ZDQHVZ]PLHQQHMTextAttr.
Procedura GotoXYVX*\GRZ\SURZDG]DQLDWHNVWXQD]DGDQ\FKZVSyU]
GQ\FKHNUDQ
WHNVWRZ\OLF]\VRELHZLHUV]\SR]QDNyZZLHUV]HL]QDNLQXPHURZDQHVRG
3U]\NDGRZHZ\ZRDQLH
for i := 1 to 24 do
begin
GotoXY(i,i);
write('*');
end;
2E\GZLHSURFHGXU\XPR*OLZLDMVNXWHF]QHWZRU]HQLHDGQ\FKPHQXF]\IRUPXODU]\
QLHZLHONLPQDNDGHPNRV]WyZFKRFLD*F]
VWRRND]XMHVL
*HOHSLHMZW\PFHOXZ\NRU]\VWDQSELEOLRWHN
7XUER9LVLRQ
$E\ZSURZDG]L]NODZLDWXU\SRMHG\QF]\]QDNEH]QDFLVNDQLDklawisza ENTER warto
Z\NRU]\VWDIXQNFM
ReadKey=ZUDFDRQDNRG$6&,,]QDNXRGSRZLDGDMFHJRNODZLszowi albo ZSU]\SDGNXQDFLQL
FLDNODZLV]DIXQNF\MQHJROXEVSHFMDOQHJR tzw.
rozszerzony kod klawisza poprzedzony znakiem o kodzie 0 (w tym przypadku konieczQH V GZD Z\ZRDQLD )XQNFja ReadKey MHVW VWRVRZDQD JyZQLH GR UHDOL]DFML PHQX
(vide program Katalog L LQQ\FK Z\P\OQLHMV]\FK RSHUDFML Z\NRU]\VWXMF\FK NODZLDWXU
6SRNUHZQLRQD ] QL IXQNFMD KeyPressed VX*\ GR EDGDQLD VWDQX EXIRUD
klawiaWXU\ MHOL SU]HG MHM Z\ZRDQLHP QDFLQL
WR MDNL NODZLV] ]ZUyFL RQD ZDUWR
true :DUWR SDPL
WD *H KeyPressed QLH RSUy*QLD EXIRUD NODZLDWXU\ WRWH* NROHMQH
Z\ZRDQLD E
G ]ZUDFD\ true D* GR FKZLOL NLHG\ ]QDN ]RVWDQLH RGF]\WDQ\ QS
w\ZRDQLHPIXQNFMLReadKey=WHJRWH*Z]JO
GXIXQNFMLKeyPressedQDOH*\X*\ZD
EDUG]RRVWUR*QLH]DVW
SXMFMZPLDU
PR*OLZRFLZ\ZRDQLHPReadKey.
124
:DUWRZLHG]LH*HG\VNLZV\VWHPLH'26QXPHURZDQHVRGMHG\QNLNWyUDRGSRZLDGD
G\VNRZL$]DZDUWRR]QDF]D]DZV]HG\VNELH*F\
Procedury FindFirst i FindNextZ\NRU]\VW\ZDQHVQDRJyGRVSUDZG]DQLDREHFQRFL SOLNX QD G\VNX L RGF]\WX OLVW\ SOLNyZ ]DZDUW\FK Z NDWDORJX 3RQL*HM SU]HGVWDZLRQRW\SRZNRQVWUXNFM
Z\ZLHWODMFOLVW
SOLNyZ]DZDUW\FKZNDWDORJXJywnym
dysku C:
FindFirst('c:\
$Q\)LOH2SLV3OLNX^]QDMG(SLHUZV]\`
{ plik }
while DosError = 0 do^V]XNDMD*GRZ\F]HUSDQLDSOLNyZ`
begin
)LQG1H[W2SLV3OLNX^]QDMG(NROHMQ\SOLN`
writeln(OpisPliku.Name);
end;
3R*\WHF]QHGURELD]JLF]\OLPRGX\ELEOLRWHF]QH
125
=DSDPL
WDM
3DVFDORZHPRGX\ELEOLRWHF]QH]DZLHUDMZLHOHX*\WHF]Q\FKSURFHGXULVWUXNWXU
danych.
$E\RGZRDVL
GR]DZDUWRFLPRGXXPXVLV]XPLHFLQDSRF]WNXSURJUDPX
GHNODUDFM
uses.
:\NRU]\VWDQLH PRGXyZ SRZRGXMH SRZL
NV]HQLH REM
WRFL VNRPSLORZDQHJR
programu.
1DMF]
FLHM Z\NRU]\VW\ZDQ\PL PRGXDPL V Crt REVXJD PRQLWRUD L NODZLDtury), Graph REVXJD JUDILNL RUD] Dos REVXJD Z\ZRD IXQNFML V\VWHmowych).