Przetwarzanie plików
Typ plikowy
ciąg elementów tego samego typu, przy czym liczba
jego składowych jest zmienna
type identyfikator_typu = file of
opis_typu_elementów_pliku;
type identyfikator_typu = file;
Przykład:
type dane = file of Integer;
wyniki = file of Real;
Text - standardowy typ plikowy
• elementy pliku: wiersze
podzielone na znaki;
• każdy wiersz kończy para
znaków CR/LR (carriage return
/ line feed);
• plik kończy znak Ctrl-Z;
Przykład:
var dane : Text;
Przetwarzanie plików
• opis zmiennej plikowej (część
opisowa)
• skojarzenie pliku z fizycznym
zbiorem danych
• otwarcie pliku
• wykonanie operacji na pliku
• zamknięcie pliku
Skojarzenie zmiennej plikowej
z fizycznym zbiorem danych
Assign
(identyfikator_pliku,
wyrażenie_łańcuchowe);
identyfikator_pliku - dowolna zmienna plikowa
wyrażenie łańcuchowe - fizyczny zbiór danych
Fizyczne zbiory danych:
– konsola (klawiatura, ekran monitora)
'CON'
– drukarka
'LPT1' lub 'PRN'
– szeregowe porty wejścia-wyjścia
'COM1', 'COM2'
– urządzenie puste
'NUL'
– zbiór danych na dysku
'ścieżka_dostępu'
Skojarzenie zmiennej plikowej
z fizycznym zbiorem danych
Przykład:
var zm_plikowa1, zm_plikowa2 : Text;
begin
...
Assign
(zm_plikowa_1,'C:\DANE\PLIK.TXT');
Assign (zm_plikowa_2,'LPT1');
...
end.
Otwieranie pliku
utworzenie nowego fizycznego zbioru danych
Rewrite
(zmienna_plikowa);
lub dla plików niezdefiniowanych
Rewrite (zmienna_plikowa, rozmiar_zapisu)
wskaźnik plikowy (File Location Pointer) 0
gdy zbiór już istnieje zostaje usunięty i utworzony nowy
Utworzenie nowego fizycznego zbioru
danych
Przykład 1:
var numery : file of integer;
begin
...
Assign (numery,'C:\DANE\PLIK.OUT');
Rewrite (numery);
...
end.
Przykład 2:
type data = record
rok
: Integer;
miesiac
: 1 .. 12;
dzien : 1 .. 31
end;
var data_ur : file of data;
begin
...
Assign (data_ur,'C:\DANE\PLIK.OUT');
Rewrite (data_ur);
...
end.
Otwieranie pliku
otwarcie już istniejącego zbioru danych
Reset
(zmienna_plikowa);
lub dla plików niezdefiniowanych
Reset (zmienna_plikowa, rozmiar_zapisu)
Wskaźnik plikowy 0
Append (zmienna_plikowa);
tylko do plików
tekstowych
Wskaźnik plikowy koniec
Zamykanie pliku
Close
(zmienna_plikowa);
Funkcje do przetwarzania plików
tekstowych
Eof
(zmienna_plikowa)
True - gdy koniec zbioru lub gdy brak elementów
Eoln
(zmienna_plikowa)
True - gdy koniec wiersza (CR)
SeekEof
(zmienna_plikowa)
True - jak Eof (ignoruje spacje, tabulatory, CR i
LF)
SeekEoln
(zmienna_plikowa)
True - jak Eof (ignoruje spacje, tabulatory)
Funkcje i procedury do przetwarzania
plików zdefiniowanych i
niezdefiniowanych
Eof
(zmienna_plikowa)
True - gdy koniec zbioru lub gdy brak elementów
FilePos
(zmienna_plikowa)
Aktualne położenie wskaźnika plikowego (LongInt)
FileSize
(zmienna_plikowa)
Rozmiar pliku=liczba elementów (LongInt)
Seek
(zmienna_plikowa, pozycja)
Przesunięcie wskaźnika plikowego do elementu o
numerze 'pozycja'
Truncate
(zmienna_plikowa)
obcina zbiór w miejscu aktualnego położenia
Read (zmienna_plikowa,lista-
zmiennych);
oraz wyłącznie dla plików tekstowych
Readln (zmienna_plikowa ,lista-
zmiennych);
Wprowadzanie elementów z pliku
Write (zmienna_plikowa,lista-
zmiennych);
oraz wyłącznie dla plików tekstowych
Writeln (zmienna_plikowa ,lista-
zmiennych);
Wyprowadzanie elementów do pliku
Przykład:
program zapis;
uses Crt;
var
x : Text;
Wiersz : String;
begin
ClrScr;
Assign (x, 'DANE.TXT' );
Rewrite (x);
repeat
readln (Wiersz);
if Wiersz<>'' then writeln
(x, Wiersz);
until Wiersz ='';
Close (x);
readln;
end.
Grafika
Moduł Graph
Układ współrzędnych ekranu
dla karty graficznej VGA wysokiej rozdzielczości
63
9
34
9
0
0
Inicjowanie trybu graficznego
InitGraph (sterownik, tryb, skorowidz)
sterownik
- (Integer) wartość określająca sterownik obsługujący
kartę
graficzną;
tryb
- (Integer) wartość określająca tryb pracy karty
graficznej;
skorowidz
- (String) ścieżka dostępu do sterownika (w przypadku
łańcucha pustego przyjmowany jest katalog bieżący);
DetectGraph (sterownik, tryb)
CloseGraph
Zamykanie trybu graficznego
Zmiana trybu graficznego
SetGraphMode (tryb)
tryb
- (Integer) wartość określająca tryb
pracy karty graficznej;
Przełączenie na tryb tekstowy
RestoreCrtMode
Przykład 1:
program Grafika;
uses Graph;
var sterownik, tryb : Integer;
begin
DetectGraph (sterownik, tryb);
InitGraph (sterownik, tryb,
'C:\STEROWNIKI');
...
CloseGraph
end.
Przykład 2 (Sterownik jest w katalogu
bieżącym):
program Grafika;
uses Graph;
var sterownik, tryb : Integer;
begin
sterownik:=9;
tryb:=2;
InitGraph (sterownik, tryb,'');
...
CloseGraph
end.
Stałe definiujące sterowniki
const
Detect
= 0
CGA = 1
MCGA
= 2
EGA = 3
EGA64
= 4
EGAMono
= 5
IBM8514
= 6
HercMono
= 7
ATT400
= 8
VGA = 9
PC3270
= 10
CurrentDriver
= -128
Przykładowe stałe
definiujące tryby ekranu
stała wartość rozdzielczość
liczba kolorówstrony
const EGALo
= 0
640 x 200
16
4
EGAHi = 1
640 x 350
4
4
VGALo = 0
640 x 200 16
4
VGAMi = 1
640 x 350 16
2
VGAHi = 2
640 x 480 16
1
Przykład 3:
program Grafika;
uses Graph;
var sterownik, tryb : Integer;
begin
sterownik:=VGA;
tryb:=VGAHi;
InitGraph (sterownik, tryb,'');
...
CloseGraph
end.
Funkcje i procedury dotyczące ekranu
Przykład 1:
var x,y : integer;
begin
x:=GetMaxX;
y:=GetMaxY;
writeln ('Rozdzielczość ekranu: ',x,'
×',y)
end.
GetMaxX
rozdzielczość ekranu w kierunku osi x
GetMaxY
rozdzielczość ekranu w kierunku osi y
Ustawienie parametrów graficznych
Ustalenie koloru linii
SetColor(kolor)
Ustalenie koloru tła
SetBkColor(kolor)
kolor (Word)
- wartość lub stała określająca kolor
Stałe definiujące kolory
const
Black
= 0
(kolor czarny)
Blue = 1
(kolor niebieski)
Green = 2
zielony
Cyan = 3
turkusowy
Red
= 4
czerwony
Magenta
= 5
karmazynowy
Brown
= 6
brązowy
Lightgray
= 7
jasnoszary
Lightblue
= 9
jasnoniebieski
Lightgreen
= 10
jasnozielony
Lightcyan
= 11
jasnoturkusowy
Lightred
= 12
jasnoczerwony
Lightmagneta
= 13
jasnokarmazynowy
Yellow
= 14
żółty
White = 15
biały
Ustawienie parametrów graficznych
Ustalenie rodzaju i grubości linii
SetLineStyle(rodzaj,wzór,grubość)
rodzaj (Word) - wartość lub stała określająca linię
wzór (Word)
- istotny tylko gdy rodzaj
zdefiniowany przez programistę
Stałe definiujące linie
Stałe rodzajów linii:
const
SolidLn
= 0
ciągła
DottedLn
= 1
kropkowana
CenterLn
= 2
symetrii
DashedLn
= 3
przerywana
UserBitLn
= 4
zdefiniowana przez
programistę (SetFillStyle)
Stałe grubości linii:
const
NormWidth = 1
normalna
ThickWidth
= 3
pogrubiona
Ustawienie parametrów graficznych
Ustalenie rodzaju i koloru wypełnienia
SetFillStyle(wzór,kolor)
wzór (Word) - wartość lub stała określająca wzór
wypełnienia
kolor (Word)
- wartość lub stała określająca kolor
Zdefiniowanie wypełnienia
SetFillPattern(wzór,kolor)
wzór (FillPatternType)
- ośmioelementowa tablica
liczb całkowitych typu Byte
kolor (Word)
- wartość lub stała określająca kolor
Stałe definiujące wypełnienia
const
EmptyFill
= 0
w kolorze tła
SolidFill
= 1
w kolorze pierwszoplanowym
LineFill
= 2
linie poziome
LtSlashFill
= 3
linie ukośne
SlashFill
= 4
linie ukośne, pogrubione
BkSlashFill
= 5
przeciwne linie ukośne
LtBkSlashFill
= 6
przeciwne linie ukośne, pogr.
HatchFill
= 7
kratka
XHatchFill
= 8
kratka X
InterleaveFill
= 9
gęste kropki
WideDotFill
= 10
kropki
CloseDotFill
= 11
rzadkie kropki
UserFill
= 12
zdefiniowana przez
programistę (SetFillPattern)
Funkcje i procedury dotyczące ekranu
czyszczenie ekranu, ustawienie okna na cały ekran
ClearDevice
deklaracja okna
SetViewPort (x1,y1,x2,y2,odcięcie)
x1,y1 (Word) - współrzędne lewego-górnego narożnika okna
x2,y2 (Word) - współrzędne prawego-dolnego narożnika okna
odcięcie (Boolean)
- TRUE - grafika ograniczona do
bieżącego okna
(mogą być stałe: ClipOn, ClipOf)
czyszczenie okna
ClearViewPort
Funkcje i procedury dotyczące ekranu
skierowanie danych na odpowiednią stronę
SetActivePage(strona)
wyświetlenie strony
SetVisualPage(strona)
strona (Word) - numer strony
Funkcje i procedury dotyczące ekranu
Przesunięcie wskaźnika ekranu do punktu o współrzędnych
(x,y);
MoveTo(x,y)
x,y : Integer
Przesunięcie wskaźnika ekranu o wektor (x,y);
MoveRel(
x,
y)
x,y : Integer
Współrzędne aktualnego położenia wskaźnika ekrany
względem bieżącego okna
GetX
GetY
Procedury graficzne
Narysowanie linii od punktu o współrzędnych (x1,y1) do punktu
o współrzędnych (x2,y2)
Line(x1,y1,x2,y2)
x1,y1,x2,y2 : Integer
Narysowanie linii od bieżącego położenia wskaźnika ekranu do
punktu oddalonego o wektor (x,y);
LineRel(
x,
y)
x,y : Integer
Narysowanie linii od bieżącego położenia wskaźnika ekranu do
punktu o współrzędnych (x,y);
LineTo(x,y)
x,y : Integer
Procedury graficzne
Zaznaczenie punktu o współrzędnych (x,y)
PutPixel(x,y,kolor)
x,y
: Integer
kolor : Word
Narysowanie prostokąta
Rectangle (x1,y1,x2,y2)
x1,y1 (Integer)- współrzędne lewego-górnego narożnika okna
x2,y2 (Integer)- współrzędne prawego-dolnego narożnika okna
Procedury graficzne
Narysowanie okręgu
Circle (x,y,r)
x,y (Integer)
- współrzędne środka okręgu
r (Word)
- promień okręgu
Narysowanie wielokąta
DrawPoly (n,wsp)
n (Word)
- liczba wierzchołków wielokąta
wsp - współrzędne wierzchołków (zmienna tablicowa o
elementach typu PointType)
Procedury graficzne
Narysowanie łuku okręgu
Arc (x,y,a,b,r)
x,y (Integer)
- współrzędne środka okręgu
a,b (Word)
- kąt początkowy i kąt końcowy
promienia
wodzącego (w stopniach względem osi x)
r (Word)
- promień okręgu
Narysowanie łuku elipsy
Ellipse (x,y,a,b,xr,yr)
x,y,a,b
- j.w.
xr,yr (Word)
- długość osi elipsy w kierunku osi x i y
Procedury graficzne
Wypełnienie prostokąta aktualnym znakiem wypełnienia i
kolorem
Bar (x1,y1,x2,y2)
x1,y1 (Integer)- współrzędne lewego-górnego narożnika okna
x2,y2 (Integer)- współrzędne prawego-dolnego narożnika okna
Narysowanie prostopadłościanu i wypełnienie przedniej ściany
Bar3D (x1,y1,x2,y2,g,w)
g (Word)
- głębokość prostopadłościanu
w (Boolean)
- TRUE - będzie zaznaczona górna płaszczyzna
(mogą być stałe: TopOn, TopOf)
Procedury graficzne
Wypełnienie wycinka kołowego
Arc (x,y,a,b,r)
x,y (Integer)
- współrzędne środka okręgu
a,b (Word)
- kąt początkowy i kąt końcowy
promienia
wodzącego (w stopniach względem osi x)
r (Word)
- promień okręgu
Narysowanie i wypełnienie elipsy
FillEllipse (x,y,r1,r2)
x,y (Integer) - środek elipsy
r1,r2 (Word)
- półosie elipsy
Funkcje i procedury tekstowe
Ustawienie kroju pisma
SetTextStyle(krój,kierunek,rozmiar)
krój (Word)
- wartość lub stała określająca krój
kierunek (Word)
- wartość lub stała określająca kierunek
rozmiar (Word) - wartość określająca rozmiar (1..10)
Wyrównanie tekstu
SetTextJustify(poziom,pion)
poziom (Word) - wartość lub stała określająca poziome
wyrównanie pion (Word)
- wartość lub stała
określająca pionowe wyrównanie
Stałe definiujące kroje pisma
const
DefaultFont = 0
standardowe
TriplexFont = 1
"triplex"
SmallFont
= 2
małe
SansSerifFont
= 3 "sansserif"
GothicFont = 4
gotyckie
Stałe definiujące justowanie
const
CenterText = 0
lewo
LeftText
= 1
Środek
RightText
= 2
prawo
BottomText = 0
dół
TopText
= 2
góra
Stałe definiujące kierunek
const
HorizDir
= 0
lewo
VertDir
= 1
Środek
Stałe definiujące kierunek
const
HorizDir
= 0
lewo
VertDir
= 1
Środek
Procedury tekstowe
Wyprowadzenie tekstu na ekran
OutText(tekst)
OutTextXY(x,y,tekst)
x,y (Integer) - położenie tekstu w bieżącym oknie
tekst (String) - tekst wyprowadzany na ekran