write

Write - procedura

Zapis do pliku.

Deklaracja:

Write(z1, ..., zn)

lub

Write(var F; z1, ..., zn)

F - zmienna dowolnego zdefiniowanego typu plikowego, jeśli jej nie podamy procedura będzie zapisywała do standardowego pliku wyjściowego (np. na ekran).

z1, ..., zn - zmienne lub wyrażenia dowolnych typów, które mają zostać zapisane do pliku F.

Dla plików tekstowych zmienne z1, ..., zn mogą być typu char, integer (i pozostałych typów całkowitych), real (i pozostałych typów rzeczywistych), string i boolean. Każda zmienna do wypisania może zostać podana z dwoma dodatkowymi parametrami typu integer: z:p1:p2. Parametr p1 określający minimalną szerokość pola musi być większy od 0. Jeśli do wypisania zmiennej z potrzebnych jest mniej znaków niż podano w p1, to na początku zostaną dopisane spacje, tak aby całkowita długość tekstu była równa p1.

Jeżeli do wyprowadzenia parametru z niezbędna jest większa liczba znaków niż podano w p1, to wyprowadzany tekst będzie dłuższy od p1. Parametr p2 określa liczbę cyfr po przecinku w stałoprzecinkowej reprezentacji liczb rzeczywistych. Parametr p2 może być podany tylko dla typów rzeczywistych i tylko w przypadku, gdy został podany parametr p1.

Dla pliku tekstowego sposób wyprowadzania danych instrukcją write zależy od ich typu:

Dane typu char:

Jeśli nie podano parametru, p1 do pliku jest zapisywany dokładnie jeden znak. W przypadku podania parametru p1 do pliku zostanie zapisanych p1-1 spacji, a następnie podany znak.

Dane typu całkowitego:

Jeśli nie podano parametru p1, dziesiętna reprezentacja podanej liczby zostanie zapisana w pliku najmniejszą możliwą liczbą znaków. Jeśli parametr p1 został podany i jest większy od długości łańcucha reprezentującego daną liczbę, wypisywany tekst zostanie na początku uzupełniony spacjami wiodącymi.

Dane typu rzeczywistego:

Jeśli wyrażenie z, będące argumentem procedury write, jest typu rzeczywistego, do wskazanego pliku tekstowego jest zapisywana jego dziesiętna reprezentacja. Format, w jakim zostanie ona podana zależy od tego czy został podany parametr p2.

Jeżeli parametr p2 nie został podany, lub gdy jest ujemny, liczba zapisywana jest w formacie zmiennoprzecinkowym. Jeśli równocześnie nie podano parametru p1, przyjmowana jest domyślna minimalna szerokość pola, równa 17. Jeżeli podano parametr p1 mniejszy od 8, minimalna szerokość pola przyjmie wartość 8. Format zmiennoprzecinkowy liczb jest określony następująco:

[ | - ] <cyfra>.<cyfry_dziesiętne> E [ = | - ] <eksponens>

[ | - ] - „ " lub „-", w zależności od znaku wyprowadzanej liczby,

<cyfra> - pojedyncza cyfra, „0” tylko wtedy, gdy liczba jest równa 0.

<cyfry_dziesiętne> - łańcuch cyfr, zawierający część dziesiętną liczby, o długości p1-7 cyfr.

E - Duża litera E, po której następuje wykładnik.

[ + | - ] - „+” lub „-", w zależności od znaku wykładnika.

<eksponens> - Dwie cyfry wykładnika.

Jeśli parametr p2 został podany, liczba wyprowadzana jest do pliku w postaci stałoprzecinkowej. Jeśli p1 jest większe od 11, minimalna szerokość pola jest przyjmuje wartość 11. Format stałoprzecinkowy jest określony następująco:

[<spacje>] [ - ] <cyfry>[<.cyfry_dziesiętne>]

[<spacje>] - spacje dostosowujące długość wyprowadzanego łańcucha znaków do parametru p1.

[ - ] - Znak liczby, wyprowadzany dla liczb ujemnych.

<cyfry> - przynajmniej jedna cyfra, lecz bez wiodących zer.

[.<cyfry_dziesiętne>] - cyfry części dziesiętnej, wypisywane gdy p2>0.

Dane typu string:

Jeśli parametr p1 nie został podany, lub jest mniejszy od długości wypisywanego łańcucha, łańcuch jest zapisywany do pliku dokładnie w takiej postaci w jakiej został podany. Jeżeli wartość parametru p1 jest większa od długości łańcucha, to na początku zapisywane są do pliku spacje uzupełniające łańcuch do podanej w parametrze długości.

Dane typu boolean:

Dla danych typu boolean efekt działania procedury write, przy zapisie do pliku tekstowego jest dokładnie taki sam jak dla łańcuchów znakowych ‘True’ lub ‘False’, w zależności od wartości logicznej podanej danej. Dla plików nietekstowych wszystkie podane do wypisania parametry procedury write muszą być jednakowego typu, tego samego co rekordy pliku F. Po zapisaniu każdego rekordu wskaźnik pliku jest przesuwany o jeden rekord do przodu. Jeżeli wskaźnik pliku znajduje się w pozycji końcowej, wartością funkcji Eof(F) jest true, wyprowadzane dane są dopisywane do pliku i jego długość powiększa się.

Jeżeli program został skompilowany z opcją {$I-} (kontrola błędów operacji wejścia-wyjścia), funkcja IOResult zwróci wartość 0, gdy operacja przebiegła pomyślnie, lub niezerowy kod zaistniałego błędu.