• Nie Znaleziono Wyników

Operacje na plikach w Turbo Pascalu

N/A
N/A
Protected

Academic year: 2021

Share "Operacje na plikach w Turbo Pascalu"

Copied!
7
0
0

Pełen tekst

(1)

Operacje na plikach w Turbo Pascalu

Assign – przypisanie zmiennej plikowej do nazwy pliku;

Rewrite – utworzenie nowego pliku (jeśli istnieje plik to cała jego dotychczasowa zawartość zostaje skasowana);

Reset – otwarcie istniejącego pliku;

FileMode – tryb otwarcia plik 0 – tylko do odczytu, 1 – tylko do zapisu, 2 – zapis i odczyt;

Append – otwarcie pliku w trybie dołączania nowych danych, tylko dla plików tekstowych;

Truncate – „obcięcie” pliku na bieżącej pozycji;

Close – zamknięcie pliku;

Write(plik, bufor) – odczytanie danych z pliku do zmiennej;

Read(plik,bufor) – zapisanie danych z bufora do pliku;

FilePos – pozycja wskaźnika pliku;

Eof – sprawdzenie czy wskaźnik pliku wskazuje już na jego koniec;

Seek – przejście do określonej pozycji w pliku.

Deklaracja pliku

var plik_tekstowy:Text;

lub

type Typ_pliku=rekord ...

end;

var plik:FILE of Typ_pliku;

(2)

program operacje_plikowe_1;

uses crt;

const nazwa_pliku='dane.txt';

var suma,liczba:integer;

plik:Text;

begin

assign(plik,nazwa_pliku);

reset(plik);

suma:=0;

while not eof(plik) do begin

read(plik,liczba);

suma:=suma+liczba;

end;

close(plik);

writeln('Suma elementow z pliku ',nazwa_pliku, ' wynosi ',suma);

repeat until keypressed;

end.

(3)

program operacje_plikowe_2;

uses crt;

var plik_zrodlowy, plik_docelowy:Text;

znak:char;

i:integer;

begin

if paramCount<2 then begin

writeln('Musisz podac nazwe pliku docelowego i przynajmniej jedna nazwe pliku zrodlowego');

repeat until keypressed;

halt;

end;

assign(plik_docelowy,paramStr(paramCount));

rewrite(plik_docelowy);

for i:=1 to paramCount-1 do begin

assign(plik_zrodlowy,paramStr(i));

reset(plik_zrodlowy);

while not eof(plik_zrodlowy) do begin

read(plik_zrodlowy,znak);

write(plik_docelowy,znak);

end;

close(plik_zrodlowy);

end;

close(plik_docelowy); end.

(4)

program plik3;

uses crt;

type typ_dane_osobowe=record imie:string[30];

nazwisko:string[40];

telefon:string[20];

rok_ur:integer;

end;

var plik:File of typ_dane_osobowe;

plik_tymcz:File of typ_dane_osobowe;

bufor:typ_dane_osobowe;

co:char;

i,numer:integer;

begin

while true do begin

clrscr;

gotoxy(1,1);

writeln('1 - utworzenie pliku z danymi');

writeln('2 - dodanie pozycji');

writeln('3 - wyswietlenie pozycji');

writeln('4 - usuniecie pozycji');

writeln('5 - koniec pracy');

readln(co);

(5)

case co of '1':begin

assign(plik,'dane.dat');

rewrite(plik);

close(plik);

end;

'2': begin

assign(plik,'dane.dat');

filemode:=2;

reset(plik);

while not eof(plik) do read(plik,bufor);

clrscr;

gotoxy(1,10);

writeln('podaj imie');

readln(bufor.imie);

writeln('podaj nazwisko');

readln(bufor.nazwisko);

writeln('podaj telefon');

readln(bufor.telefon);

writeln('podaj rok urodzenia');

readln(bufor.rok_ur);

write(plik,bufor);

close(plik);

writeln('Dane zostaly dodane');

end;

'3': begin

(6)

assign(plik,'dane.dat');

filemode:=0;

reset(plik);

i:=0;

while not eof(plik) do begin

i:=i+1;

read(plik,bufor);

gotoxy(1,wherey);

write(i);

gotoxy(5,wherey);

write(bufor.imie);

gotoxy(20,wherey);

write(bufor.nazwisko);

gotoxy(40,wherey);

write(bufor.telefon);

gotoxy(55,wherey);

writeln(bufor.rok_ur);

end;

close(plik);

readln;

end;

'4':begin

writeln('Podaj numer rekordu, ktory chcesz skasowac');

readln(numer);

assign(plik,'dane.dat');

reset(plik);

(7)

assign(plik_tymcz,'tymcz.dat');

rewrite(plik_tymcz);

i:=0;

while not eof(plik) do begin

i:=i+1;

read(plik,bufor);

if i<>numer then write(plik_tymcz,bufor);

end;

close(plik);

close(plik_tymcz);

assign(plik,'dane.dat');

rewrite(plik);

assign(plik_tymcz,'tymcz.dat');

reset(plik_tymcz);

while not eof(plik_tymcz) do begin

read(plik_tymcz,bufor);

write(plik,bufor);

end;

close(plik);

close(plik_tymcz);

end;

'5': halt;

end;

end;

end.

Cytaty

Powiązane dokumenty

• Napisać funkcję zapisującą do pliku podaną w argumencie zawartość, argu- mentem funkcji jest ścieżka do pliku i jego zawartość, oraz informacja czy dołączyć zawartość

Napisz program, który na podstawie pliku, w którym w pierwszej linii podane są przedziały punktów w postaci 35-45-55-66-65 a w następnych imiona, nazwiska i ilość punktów

Zagadnienia: specyfikacja funkcji, operacje wejścia i wyjścia na plikach, for- matowane wejście i wyjście, struktury sterujące, rekurencja, nie- bezpieczeństwa rekurencji,

• by zapisać znak do pliku wskazywanego przez plik należy użyć funkcji int putc(int znak, FILE *plik), która zwraca wartość tego znaku lub EOF jako sygnał wystąpienia

• by zapisać znak do pliku wskazywanego przez plik należy użyć funkcji int putc(int znak, FILE *plik), która zwraca wartość tego znaku lub EOF jako sygnał wystąpienia

Jeśli takiego pliku nie ma - funkcja is_open(), to możemy pominąć wykonywanie programu. Problemy mogą pojawić się, jeśli plik na końcu zawiera pusty wiersz - do tablicy

- znak &gt; umożliwia przekierowanie strumienia danych ze standardowego wyjścia do pliku;. jeżeli plik istnieje, to jego poprzednia zawartość zostaje

Aby przenieść plik o nazwie przykład.doc z katalogu /usr/local/www do katalogu macierzystego bieżącego użytkownika i wyświetlić żądanie potwierdzenia w przypadku zastępowania