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
Wprowadzanie elementów z pliku
Read (zmienna_plikowa,lista-zmiennych);
oraz wyłącznie dla plików tekstowych
Readln (zmienna_plikowa ,lista-zmiennych);
Wyprowadzanie elementów do pliku
Write (zmienna_plikowa,lista-zmiennych);
oraz wyłącznie dla plików tekstowych
Writeln (zmienna_plikowa ,lista-zmiennych);
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
Inicjowanie trybu graficznego
DetectGraph (sterownik, tryb)
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);
Zamykanie trybu graficznego
CloseGraph
Zmiana trybu graficznego
SetGraphMode (tryb)
tryb - (Integer) wartość określająca tryb pracy karty graficznej;
Przełączenie na tryb tekstowy
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
liczba kolorów strony
stała wartość rozdzielczość liczba kolorów strona
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
GetMaxX rozdzielczość ekranu w kierunku osi x GetMaxY rozdzielczość ekranu w kierunku osi y
Przykład 1:
var x,y : integer;
begin
x:=GetMaxX;
y:=GetMaxY;
writeln ('Rozdzielczość ekranu: ',x,' ×',y)
end.
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 (kolor czarny) Black = 0
(kolor Blue = 1 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
żółty Yellow = 14
biały White = 15
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, ClipOff)
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)
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
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, TopOff)
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
Lewo = 0 CenterText
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
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
8
RestoreCrtMode