Gdyby nie wyjątki, zasady byłyby nie do zniesienia.
Turbo Pascal 7.0 - Moduł System

Niewiele osób w ogóle wie, że używa tego modułu - jest to moduł dołączany automatycznie podczas kompilacji zawiera funkcje wyświetlające, wczytujące dane oraz podstawowe funkcje matematyczne.

Zmienne

Zmienna Typ Opis
InputTextStandardowy plik wejściowy
OutputTextStandardowy plik wyjściowy

 
  Stałe
Zmienna Typ Wartość
początkowa
Opis
ErrorAddrPointernilRun-time error address
ExitCodeInteger0Exit code
ExitProcPointernilExit procedure
FileModeByte2File open mode
FreeListPointernilFree heap list
FreeZeroPointernilMust be zero
HeapEndPointernilHeap end
HeapErrorPointernilHeap error function
HeapOrgPointernilHeap origin
HeapPtrPointernilHeap pointer
InOutResInteger0I/O result buffer
PrefixSegWord0Program segment prefix (PSP)
RandSeedLongInt0Random seed
StackLimitWord0Minimum stack pointer
Seg0040Word$0040Selector for segment $0040
SegA000Word$A000Selector for segment $A000
SegB000Word$B000Selector for segment $B000
SegB800Word$B800Selector for segment $B800
SelectorIncWord$1000Selector increment
Test8086Byte0Result of 8086 test
Test8087Byte0Result of 8087 test

 
 

Funkcje matematyczne

Abs(X): (typ_parametru);
X - liczba całkowta lub rzeczywista
Zwraca wartość bezwzględną (moduł) z podanej liczby.

ArcTan(X: Real): Real;
X - liczba rzeczywista
Zwraca arcustangens podanej liczby.

Cos(X: Real): Real;
X - wartość kąta podana w radianach
Zwraca cosinus podanego kąta.

Exp(X: Real): Real;
X - liczba rzeczywista
Zwraca eksponantę (ex) podanej liczby.

Frac(X: Real): Real;
X - liczba rzeczywista
Zwraca część ułamkową podanej liczby z uwzględnieniem znaku liczby.

Int(X: Real): Real;
X - liczba rzeczywista
Zwraca część całkowitą podanej liczby z uwzględnieniem jej znaku, ale bez zaokrągleń.

Ln(X: Real): Real;
X - liczba rzeczywista
Zwraca logarytm naturalny podanej liczby.

Pi: Real;
Zwraca liczbę Π = 3.1415926535897932385.

Sin(X: Real): Real;
X - wartość kąta podana w radianach
Zwraca sinus podanego kąta.

Sqr(X): (typ_parametru);
X - liczba całkowita lub rzeczywista
Zwraca kwadrat podanej liczby o typie zgodnym z typem podanego argumentu.

Sqrt(X:Real): Real;
X - liczba rzeczywista
Zwraca pierwiastek 2 stopnia (kwadratowy) podanej liczby.
 
 

Funkcje i procedury porządkowe

Dec(var X[ ; N: Longint]);
X - zmienna typu porządkowego lub PChar, jeżeli uzywasz
    trybu rozszerzonego
N - wyrażenie typu całkowitego
Dekrementacja zmiennej: wartość X jest zmniejszana o 1 lub o N, jeżeli zostało ono podane.

Inc(var X[ ; N: Longint]);
X - zmienna typu porządkowego lub PChar, jeżeli uzywasz
    trybu rozszerzonego
N - wyrażenie typu całkowitego
Inkrementacja zmiennej: wartość X jest zwiększana o 1 lub o N, jeżeli zostało ono podane.

Odd(X: Longint): Boolean;
X - zmienna typu całkowitego
Zwraca True X, jeżeli parametr jest liczbą nieparzystą.

Pred(X): {typ_parametru};
X - zmienna typu porządkowego
Zwraca poprzednik zmiennej X.

Succ(X): {typ_parametru};
X - zmienna typu porządkowego
Zwraca następnik zmiennej X.
 
 

Funkcje i procedury wejścia-wyjścia

Assign(var f; Nazwa_pliku: String);
Przypisuje nazwę pliku dyskowego do zmiennej plikowej F. Wszystkie operacje wykonywane na zmiennej F będą działały na pliku zewnętrznym. Po wywołaniu Assign związek między F a zewnętrznym plikiem istnieje do czasu następnego wywołania Assign dla tej zmiennej plikowej F. Jeśli Nazwa_pliku ma formę np. a:\nazwa.rozszerzenie, to nazwa może mieć długość najwyżej 8 znaków, a rozszerzenie 3 znaki. W przypadku nie podania ścieżki dostępu zostanie przyjęty dysk i katalog bieżący.

Assigned(var P): Boolean;
P - zmienna wskaźnikowa lub proceduralna.
Określa czy wskaźnik lub zmienna proceduralna jest nil. Jest równoważne wyrażeniu P <> nil dla zmiennej wskaźnikowej i @P <> nil dla zmiennej proceduralnej.

ChDir(S: String);
S - nazwa nowego katalogu bieżącego
Zmienia bieżący katalog. Jeżeli ścieżka zawiera również literę dysku, to zmieniany jest również dysk bieżący.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Close(var F);
F - zmienna plikowa dowolnego typu plikowego
Zamyk plik otwarty wcześnie przez Reset lub Rewrite.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Eof(var F): Boolean;         {
Eof (var F: Text): Boolean;  {
Zwraca status końca pliku (podaje czy osiągnięto koniec pliku), tzn. Eof(F) = TRUE jeżeli osiągnięto koniec pliku (wskaźnik pliku znajduje się na końcu pliku, za ostatnim składnikiem). Eof(F) = TRUE również wtedy, gdy plik nie zawiera żadnych elementów, w przeciwnym przypadku Eof(F) = FALSE.

Erase(var F);
F - zmienna plikowa
Kasuje plik skojarzony poleceniem Assign ze zmienną F. Plik musi być zamknięty.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

FilePos(var F): Longint;
F - zmienna plikowa
Jeżeli wskaźnik pliku znjduje się na początku, to FilePos zwraca 0. Jeżeli wskaźnik znajduje się na końcu pliku, to FilePos = FileSize.
Nie może być używane dla plików tekstowych. Plik musi być otwarty.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

FileSize(var F): Longint;
F - zmienna plikowa
Zwraca aktualną ilość elementów w pliku.
Nie może być używane dla plików tekstowych. Plik musi być otwarty.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

GetDir(D: Byte; var S: String);
D - dysk: 0 = bieżący, 1 = A,  2 = B,  3 = C,...
Zwraca bieżący katalog podanego dysku. Jeżeli podanego dysku nie ma, to S zwróci X:\.

IOResult: Integer;
Zwraca status ostatniej operacji wejścia-wyjścia: 0 w przypadku powodzenia, a w przeciwnym razie - numer błędu.

MkDir(S: String);
Zakłada nowy katalog.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Rename(var F; NowaNazwa: String);
Zmienia nazwę pliku. Plik musi być zamknięty.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Reset(var F [: File; Recsize: Word ] );
Otwiera istniejący plik. F jest zmienną dowolnego typu plikowego skojarzoną z plikiem przez Assign. Opcjonalny parametr RecSize podaje wielkość rekodu (domyślnie 128 bajtów) i może być podany tylko dla plików bez zdefiniowanego typu. Pliki tekstowe otwierane są w trybie tylko do odczytu.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Rewrite(var F: File [; Recsize: Word ] );
Tworzy i otwiera nowy plik. F jest zmienną dowolnego typu plikowego skojarzoną z plikiem przez Assign. Opcjonalny parametr RecSize podaje wielkość rekodu (domyślnie 128 bajtów) i może być podany tylko dla plików bez zdefiniowanego typu. Pliki tekstowe otwierane są w trybie tylko do zapisu.
Jeżeli plik istnieje, to jest kasowany i zakładany od nowa.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

RmDir(S: String);
Kauje pusty katalog.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Seek(var F; N: Longint);
F - zmienna plikowa (nie może być plikiem tekstowym)
Przesuwa wskaźnik pliku do podanego elementu. Pierwszy element pliku ma numer 0. Aby rozpocząć dopisywanie na końcu pliku należy użyć: Seek(F, FileSize(F)).
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Truncate(var F);
Usuwa wszystkie elementy pliku poczynając od bieżącej pozycji, a bieżąca pozycja staje się końcem pliku (Eof).
Plik musi być otwarty. Procedury nie można używać dla plików tekstowych.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.
 
 

Funkcje i procedury łańcuchowe

Concat(s1 [, s2,..., sn]: String): String;
Łączy sekwencję łańcuchów znakowych w jeden łańcuch. Jeżeli długość wyniku przekracza 255 znaków, to jest obcinana do tej długości. Funkcja może być zastąpiona operatorem plus (+).

Copy(S: String; indeks: Integer; ile: Integer): String;
Zwraca fragment łańcucha S: ile znaków poczynając od znaku indeks (znaki w łańcuchu numerowane są od 1).
Jeżeli indeks jest wiekszy od ilości znaków w łańcuchu, to funkcja zwraca pusty łańcuch znaków.

Delete(var S: String; indeka: Integer; ile:Integer);
Usuwa z łańcucha S ile znaków poczynając od pozycji indeks (znaki w łańcuchu numerowane są od 1).
Jeżeli indeks jest wiekszy od ilości znaków w łańcuchu, to żaden znak nie jest usuwany.

Insert(wstaw: String; var S: String; indeks: Integer);
Wstawia do łańcucha S ciąg znaków wstaw poczynając od pozycji indeks (znaki w łańcuchu numerowane są od 1). Pozostałe znaki łańcucha sa przesuwane na dalsze pozycje.
Jeżeli długość wyniku przekracza 255 znaków, to jest obcinana do tej długości.

Length(S: String): Integer;
Zwraca aktualną długość łańcucha w bajtach.

Pos(szukaj: String; S: String): Byte;
Wyszukuje pierwsze wystąpienie szukaj w łańcuchy S. Zwraca numer znaku w łańcuchu S, od którego rozpoczyna się szukaj. Jeżeli łańcuch S nie zawiera szukaj, to funkcja zwraca 0.

Str(X [: zn [: dz ]]; var S:string);
Konwertuje liczbę dowolnego typu X na łańcuch znakowy i zapisuje go w zmiennej S. Opcjonalny parametr zn podaje na ilu znakach ma być zapisana liczba (0 - automatycznie dopasowuje ilość znaków do wielkości liczby). Opcjonalny parametr dz podaje ilość miejsc po kropce dziesiętnej (liczba jest zaokrąglana do podanej ilości miejsc).

Val(S; var V; var blad: Integer);
Konwertuje łańcuch znaków S na liczbę całkowita lub rzeczywistą i zapisuje ją w zmiennej V. Zmienna blad zawiera kod błedu po wykonaniu konwersji (0 oznacza, że konwersja przebiegła pomyślnie).

Funkcje konwersji

Chr(X: Byte): Char;
Zwraca znak o podanym w parametrze kodzie ASCII.

Ord(X): Longint;
X - wyrażenie typu porządkowego
Zwraca wartość dziesiętną odpowiadającą podanemu wyrażeniu.

Round(X: Real): Longint;
Zaokrągla liczbę rzeczywistą do najbliższej wartości całkowitej.

Trunc(X: Real): Longint;
Zwraca część całkowtą liczby rzeczywistej bez zaokrąglania.
 
 

Funkcje i procedury plików tekstowych

Append(var f: Text);
Umożliwia dopisywanie nowych danych do pliku dyskowego (plik musi istnieć). Jeżeli plik jest otwarty, to zostanie zamknięty i otworzony ponownie. Wskaźnik zostaje ustawiony za ostatnim bajtem w pliku.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Eoln [(var F: Text) ]: Boolean;
Zwraca status końca wiersza (end-of-line) dla pliku tekstowego F. Jeżeli wskażnik pliku znajduje się na koncu wiersza lub końcu pliku, to funkcja zwraca wartość True, w przeciwnym razie zwracana jest wartość False.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Flush(var F: Text);
Opróżnia bufor pliku tekstowego F otwartego do zapisu za pomocą Rewrite lub Append. Dla plików otwartych do odczytu nie daje żadnego efektu.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

Read(F , V1 [, V2,...,Vn ] );
Read( [ var F: Text; ] V1 [, V2,...,Vn ] );   { plik tekstowy }
ReadLn( [ var F: Text; ] V1 [, V2,...,Vn ] );
Czyta z pliku zewnętrznego związanego ze zmienną plikową F zmienne v1, v2, ..., vn. Po przeczytaniu każdej zmiennej wskaźnik pliku jest przesuwany do następnej składowej pliku. Gdy wskaźnik pliku znajduje się na końcu pliku, tzn. jeśli Eof(F) = TRUE, próba czytania z pliku spowoduje błąd wejścia/wyjścia.
jeżeli dla pliku tekstowego ponięto parametr F, to plikiem wejściowym jest konsola (klawiatura).

SeekEof [ (var F: Text) ]: Boolean;
Zwraca staus końca pliku (end-of-file) tekstowego F. Plik musi być otwarty.

SeekEoln [ (var F: Text) ]: Boolean;
Zwraca staus końca wiersza (end-of-line) tekstowego F. Plik musi być otwarty.

SetTextBuf(var F: Text; var Buf [ ; Size:   Word ] );
Przypisuje bufor wejścia/wyjścia do pliku tekstowego F. Zwiększając rozmiar bufora można uzyskać szybszy odczyt danych z pliku. Nie wolno używać procedury dla otwartego pliku, ale może być ona wywołana kazdorazowo po Reset, Rewrite lub Append.

Write(F, V1 [, V2,...,Vn ] );
Write( [ var F: Text; ] P1 [,P2,...,Pn ] );  { pliki tekstowe }
Writeln( [ var F: Text; ] P1 [,P2,...,Pn ] );
Zapisuje do pliku zewnętrznego związanego z F zmienne v1, v2, ..., vn (muszą być tego samego typu, co typ podstawowy zmiennej plikowej F). Po zapisie każdej pozycji wskaźnik pliku jest przesuwany do następnej składowej pliku. Jeżeli wskaźnik jest na końcu pliku, czyli Eof(F) = TRUE, to plik jest rozszerzony (nowe informacje są dopisywane na końcu pliku). Plik musi być otwarty do zapisu.
Dla plików tekstowych P1,P2, ..., Pn są zapisywanymi do pliku wyrażeniami, z których każde może może zawierać inforamcje o ilości wyświetlanych znaków i miejsc po kropce dziesiętnej. Jeżeli ponięto parametr F, to plikiem wyjściowym jest konsola (monitor).
 
 

Procedury plików blokowych

BlockRead(var F: File; var Buf; Count: Word [; var Result: Word]);
F      -  zmienna pliku niezdefiniowanego
Buf    -  dowolna zmienna
Count  -  wyrażenie typu Word
Result -  zmienna typu Word
Wczytuje z pliku F do zmiennej Buf Count rekordów. Result zwraca ilość rzeczywiście wczytanych rekordów.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.

BlockWrite(var f: File; var Buf; Count: Word [; var Result: Word]);
Zapisuje do pliku F ze zmiennej Buf Count rekordów. Result zwraca ilość rzeczywiście zapisanych rekordów.
Dla {$I-} IOResult zwraca 0, gdy operacja zakończy się powodzeniem lub wartość <> 0 w przeciwnym razie.
 
 

Procedury kontrolne

Exit;
Przerywa wykonywanie aktualnego bloku kodu (pętli, procedury, funkcji). Jeżeli bieżącym blokiem kodu jest program, to Exit kończy pracę programu.

Halt [ ( kod_powrotu: Word ) ];
Przerywa wykonanie programu i powraca na poziom systemu operacyjnego. Opcjonalny parametr ustawia wartość zmiennej ERRORLEVEL systemu, która może być sprawdzana w zadaniu wsadowym DOS.

RunError [ ( Errorcode: Byte ) ];
Przerywa wykonywanie programu generując błąd wukonani (run-time error) o podanym numerze.
 
 

Funkcje i procedury przydziału dynamicznego

Dispose(var P: Pointer);
Niszczy zmienną dynamiczną P. P musi być zainicjowane i różne od nil. Wartość P po wykonaniu Dispose nie jest określona przez opis języka (czyli z punktu widzenia programisty jest zmienną niezainicjowaną).

FreeMem(var P: Pointer; Size: Word);
Zwalnia pamięć uprzednio przydzieloną zmiennej wskaźnikowej P procedurą GetMem. Wymagane jest, aby rozmiar Size miał taką samą wartość jak podczas tworzenia zmiennej.

GetMem(var P: Pointer; Size: Word);
Tworzy zmienną dynamiczną o nazwie P i rozmiarze Size podanym w bajtach. Gdy wystąpi błąd i pamięć nie zostanie przydzielona, zmienna P przyjmuje wartość nil. Zmienna P przechowuje adres w pamięci wartości, na którą wskazuje, a nie samą wartość. Aby uzyskać dostęp do wartości należy po nazwie zmiennej dodać znak: ^ czyli: P^.

New(var P: Pointer);
Przydziela fragment pamięci mieszczący obiekt typu bazowego i przypisuje jego adres na P.

MaxAvail: Longint;
Podaje w bajtach rozmiar największego wolnego bloku w segmencie przeznaczonym na zmienne dynamiczne. Minimalny i maksymalny rozmiar stosu może być określony za pomocą dyrektywy kompilatora {$M ...}.

MemAvail: Longint;
Podaje w bajtach sumę rozmiarów wszystkich wolnych bloków w segmencie przeznaczonym na zmienne dynamiczne. Minimalny i maksymalny rozmiar stosu może być określony za pomocą dyrektywy kompilatora {$M ...}.
 
 

Funkcje wskaźnikowe i adresów

Addr(X): pointer;
Zwraca adres obiektu X w pamięci.

CSeg: Word;
Zwraca aktualną wartość rejestru CS procesora.

DSeg: Word;
Zwraca aktualną wartość rejestru CS procesora.

Ofs(X): Word;
Zwraca przesunięcie (offset) w segmencie pamięci, w którtm znajduje się obiekt X.

Ptr(Seg, Ofs: Word): Pointer;
Zwraca wskaźnik do obiektu w pamieci znajdujacego się pod wskazanym adresem segmentu i przesunięcia (offsetu).

Seg(X): Word;
Zwraca adres segmentu pamięci przydzielonej dla obiektu X.

SPtr: Word;
Zwraca aktualną wartość rejestru SP procesora.

SSeg: Word;
Zwraca aktualną wartość rejestru SS procesora.
 
 

Pozostałe funkcje i procedury

Exclude(var S: set of T; I: T);
Usuwa element T ze zbioru wartości S.

FillChar(var X; Count: Word; value: Byte | Char);
Wypełnia pamięć zajmowaną (wskazywaną) przez zmienną X elementami value. Count określa liczbę bajtów, które należy wypełnić. Aby uniknąć przekroczenia zakresu pamięci zajmowanej przez zmienną należy licznik podawać jako SizeOf(X).

Hi(X): Byte;
Zwraca bardziej znaczący bajt parametru X (X może być typu Word lub Integer).

High(X): {typ_parametru | indeks_typu_parametru}
Dla typu porządkowego zwraca najwyższą możliwą wartość parametru.
Jeżeli X jest tablicą, to zwraca maksymalny indeks.
Jeżeli X jest tablicą otwartą, to zwraca jej aktualny rozmiar.
Jeżeli X jest łańcuchem, to zwraca jego długość.

Include(var S: set of T; I: T);
Dołącza element T do zbioru wartości S.

Lo(X): Byte;
Zwraca mniej znaczący bajt parametru X (X może być typu Word lub Integer).

Low(X): {typ_parametru | indeks_typu_parametru}
Dla typu porządkowego zwraca najmniejszą możliwą wartość parametru.
Jeżeli X jest tablicą, to zwraca jej minimalny indeks.
Jeżeli X jest tablicą otwartą, to zwraca 0.
Jeżeli X jest łańcuchem, to zwraca 0.

Move(var Source, Dest; Count: Word);
Kopiuje Count bajtów począwszy od pierwszego ze zmiennej Source do zmiennej Dest.

ParamCount: Word;
Zwraca ilość parametrów przekazanych do programu z wiersza poleceń (separatorami parametrów są spacje i tabulatory).

ParamStr(Index): String;
Zwraca parametr o numerze Index z jakim został wywołany program (0 - ścieżka i nazwa uruchomionego programu).

Random [ ( X: Word) ]: {typ_parametru};
Generuje liczbę pseudolosową. Jeżeli podano parametr, to generowana jest liczba całkowta n z zakresu 0 <= n < X, w przeciwnym przypadku generowana jest liczba rzeczywista z zakresu 0 <= n < 1.

Randomize;
Inicjuje generator liczb pseudolosowa.

SizeOf(X): Integer;
Wielkość pamięci w bajtach zajmowanej przez zmienną X.

Swap(X: Integer | Word): {typ_parametru};
Zamienia bardziej znacząy bajt z mniej znaczącym w liczbie X.

UpCase(Ch: Char): Char;
Zamienia znak Ch na wielką literę. Inne znaki są ignorowane.
« wstecz   dalej »