Sem II Transport, Podstawy Informatyki Wykład XXII i XXIII Operacje plikowe

background image

Wykład XXII i XXIII

Zapis i odczyt informacji w

plikach

Podstawy informatyki
Semestr II Transport

background image

Wiadomości wstępne

Object Pascal posiada mechanizmy do komunikacji z

pamięcią masową, dyskami, napędami optycznymi i

dyskietkami, a także klawiatura, terminale, drukarki i

ekran monitora. Są to zbiory danych obsługiwane

za pomocą plików.

W stosowanym w Delphi Object Pascalu

istnieją trzy rodzaje plików:

Tekstowe,
Zdefiniowane zwane także elementowymi,
Niezdefiniowane zwane także amorficznymi.

background image

Schemat postępowania

podczas wykonywania

operacji plikowych

Określenie typu plikowego i opis
zmiennej plikowej
Kojarzenie pliku z fizycznym „zbiorem”
danych
Otwieranie pliku
Zapisywanie i dopisywanie elementów
do pliku / Czytanie elementów z pliku
Zamykanie pliku

background image

Budowa plików

tekstowych

Elementami plików tekstowych są
wiersze podzielone na znaki.
Każdy wiersz zakończony jest parą
znaków CR(carriage return) \ LF
(line feed
)
Bezpośrednio po ostatnim wierszu
występuje znak Ctrl-Z (znak końca
pliku)

background image

Typ plikowy i opis

zmiennej plikowej

W opisie pliku tekstowego
wykorzystywany jest predefiniowany
identyfikator typu

Text

.

Przykład definicji pliku tekstowego

var F: Text;

background image

Kojarzenie zmiennej

plikowej

ze zbiorem na dysku

procedure AssignFile(var F; S: String);

F –identyfikator(nazwa) zmiennej plikowej
S –identyfikator fizycznego zbioru danych

(ścieżka

dostępu do zbioru lub identyfikator

urządzenia)

Wywołanie procedury AssignFile może odbyć się

jedynie w momencie, gdy zbiór jest zamknięty
Jeżeli jako nazwę zbioru podamy pusty łańcuch, to

zmienna plikowa zostanie skojarzona ze standardowymi

urządzeniami wejścia i wyjścia, czyli klawiaturą i

monitorem (tylko dla aplikacji konsolowych)

background image

Identyfikatory fizycznych

zbiorów danych

LPT1, LPT2, LPT3

– drukarka

PRN

– synonim LPT1

COM1, COM2

– szeregowy port wejścia-

wyjścia
AUX

– synonim COM1

NUL

– urządzenie puste

CON

– konsola (klawiatura, ekran)

Ścieżka dostępu – określa fizyczny zbiór
danych na dysku stałym lub dyskietce

background image

Przykłady kojarzenia pliku

z fizycznym zbiorem

danych

AssignFile(F, ‘LPT1’);
{zmienna plikowa skojarzona z
drukarką}

AssignFile(plik3, ’A:\ZBIOR3.TXT’);
{zmienna plikowa skojarzona ze
zbiorem na dyskietce A}

background image

Otwieranie pliku

Operacja otwarcia pliku ma na celu

przygotowanie zmiennej plikowej do

wprowadzania i/lub wyprowadzania

poszczególnych elementów
Do otwierania plików tekstowych używamy w

zależności od kierunku przesyłania danych

jednej z trzech standardowych instrukcji:

Rewrite(zmienna_ plikowa);
Reset(zmienna_plikowa);
Appened(zmienna_plikowa);

background image

Procedura Rewrite

procedure Rewrite(var F: Text);

Służy do tworzenia nowego fizycznego
zbioru danych.
Jego nazwa musi być skojarzona z
odpowiednią zmienną plikową za pomocą
procedury AssignFile.
Za pomocą procedury Rewrite dokonujemy
zapisu w nowo utworzonym zbiorze.

background image

UWAGA !

Procedura Rewrite może mieć
działanie destrukcyjne.

Jeżeli istnieje zbiór o danej nazwie,
zostanie on zniszczony, a w jego
miejsce zostanie utworzony nowy,
pusty zbiór.

background image

Procedura Reset

procedure Reset(var F: Text);

Służy do otwierania zbiorów do
odczytu
Powoduje ona po otwarciu pliku
ustawienie wskaźnika plikowego na
początku pierwszej linii tekstu

background image

Procedura Append

procedure Append(var F: Text);

Może być stosowana jedynie dla

plików tekstowych.
Powoduje po otwarciu pliku ustawienie

wskaźnika na końcu zbioru.
Jest przeznaczona do dopisywania

tekstów na końcu zbioru.

background image

Przykłady otwarcia pliku:

{...} AssignFile(plik3, ‘A:ZBIOR3.OUT’);

Rewrite(plik3);

{...} AssignFile(plik4, ‘C:\ZBIORY\ZBIOR4.OUT’);

Reset(plik4);

{...} AssignFile(plik5, ‘C:\ZBIORY\ZBIOR5.TXT’);

Append(plik5);

background image

Zapisywanie i

dopisywanie

elementów do pliku

Do wprowadzania do pliku nowych elementów
służą procedury:
procedure Write([var F: Text;] P1[,P2,...,Pn ]);
procedure WriteLn([var F: Text;]
P1[,P2,...,Pn ]);
Przykłady stosowania:
Write(F,’Ala ma kota’);
Writeln(F,’Franek ma ‘,X,’ lat’);

background image

Czytanie elementów z

pliku

Do czytania elementów z pliku służą procedury:
procedure Read([var F: Text;] V1[, V2,...,Vn ]);
procedure Readln([var F: Text;] V1[, V2,...,Vn ]);
Przykłady stosowania
Read(F,S)
ReadLn(F,Tekst)
gdzie S i Tekst są zmiennymi, w których
umieszczone zostaną odczytane dane

background image

Zamknięcie pliku

procedure CloseFile(var F);

Procedura przeznaczona jest do
zamknięcia pliku i skojarzonego z nim
fizycznego zbioru danych
Przykład użycia

CloseFile(F);

background image

Pomocnicze funkcje

logiczne

w przetwarzaniu plików

tekstowych

Do określenia czy osiągnięty został koniec zbioru

służą:
function Eof [ (var F: Text) ]: Boolean;
function SeekEof [ (var F: Text) ]: Boolean;
Funkcje zwracają wartość True gdy plik znajduje

się w pozycji przed ostatnim znakiem zbioru (Ctrl-Z)

lub gdy zbiór nie zawiera żadnych znaków
Funkcja SeekEof ignoruje znaki spacji, tabulacji

oraz CR\LF występujące przed końcem zbioru
Przykład:

while not Eof(zmienna_plikowa)

do {...}
{powtarzaj aż osiągniesz koniec pliku}

background image

Pomocnicze funkcje logiczne

w przetwarzaniu plików

tekstowych cd.

Do określenia czy osiągnięty został koniec linii służą:
function Eoln [(var F: Text) ]: Boolean;
function SeekEoln [ (var F: Text) ]: Boolean;
Funkcje dają wartość logiczną TRUE, gdy plik

znajduje się w pozycji znaku końca wiersza (CR\LF)
Funkcja SeekEoln ignoruje znaki spacji i tabulacji

występujące przed końcem wiersza
Przykład:

while not Eoln(zmienna_plikowa)

do {...}
{powtarzaj do końca bieżącej linii}

background image

Przykład 1

Utworzyć plik Liczby skojarzony ze zbiorem
liczby.txt i zapisać do niego wartości
zmiennych a, b i c.

var Liczby: Text; a,b,c : Byte;
begin
AssignFile(Liczby, ’Liczby.txt’); {skojarzenie zm.

plikowej i zbioru}

Rewrite (Liczby); {otwarcie pliku do zapisu}
Write (Liczby, a,b,c); {zapisanie wartości a, b, c}
CloseFile(Liczby); {zamknięcie pliku}
end.

background image

Przykład 2

Do istniejącego już pliku tekstowego Notatki
skojarzonego ze zbiorem Tekst.txt dopisz na jego
końcu nowy tekst.

var Notatki: Text;
begin
AssignFile(Notatki, ‘Tekst.txt’); {skojarzenie zmiennej plikowej i

zbioru}

Append(Notatki) {otwarcie zbioru tekstowego}
Writeln(Notatki, ‘Tak działa instrukcja Append...’); {zapisanie

tekstu}

Writeln(Notatki, ‘Append...Append...’); {zapisanie tekstu}
CloseFile(Notatki); {zamknięcie zbioru}
end.

background image

Przykład 3

Odczytać zawartość
pliku i wypisać ją na
ekranie

(w aplikacji

konsolowej)

var F: Text; S: String;
begin
AssignFile(F,’C:\plik.txt’);
{$I-} Reset(F); {$I+}

if IOResult=0 then
begin

while not Eof(F) do
begin
readln(F,S);

writeln(S);

end;
CloseFile(F);

end;
end.

background image

Przykład 4

Odczytać zawartość
pliku i wypisać ją na
ekranie

(aplikacja

konsolowa)

var F: Text; C: Char;
begin
AssignFile(F,’C:\plik.txt’);
{$I-} Reset(F); {$I+}

if IOResult=0 then

begin
while
not Eof(F) do
begin
while not
Eoln(F) do

begin Read(F,C);

Write(C)

end;

ReadLn(F);

Writeln;

end;

CloseFile(F);
end;
end.

background image

Budowa plików

elementowych

Pliki elementowe

numerowane są od

zera. Tak więc n-ty

element pliku będzie

miał w rzeczywistości

numer n-1
Jeden z elementów jest

wybrany, jego pozycję

określa wskaźnik

elementu
Zapisu i odczytu

można dokonywać do\z

wybranego elementu

n-
1

n

-

e

le

m

e

n

w

w

z

b

io

rz

e

...
...
...
...
...
...
...
...
3
2
1
0

wskaź
nik
eleme
ntu

background image

Przetwarzanie plików

Przy przetwarzaniu plików elementowych

obowiązuje identyczny jak dla plików tekstowych

schemat postępowania

1. Zdefiniowanie zmiennej plikowej (część

opisowa programu)

2. Skojarzenie zmiennej plikowej z

fizycznym zbiorem danych

3. Otwarcie zbioru
4. Zapis\Odczyt danych
5. Zamknięcie zbioru

background image

Opis typu elementowego

plikowego

Plik elementowy

type

identyfikator_pliku=file of
opis_typu_elementów_pliku;

background image

Skojarzenie zmiennej plikowej z

fizycznym zbiorem danych

AssignFile(identyfikator_pliku,wyrażenie_łańcucho

we);

identyfikator pliku - dowolna zmienna plikowa
wyrażenie łańcuchowe - identyfikator fizyczny
zbiór danych
procedurę stosujemy identycznie jak dla plików
tekstowych
skojarzenie ze zbiorem fizycznym można
zmieniać tylko wówczas gdy plik jest zamknięty

background image

Przykład stosowania

procedury AssignFile

var plik: File of Double;
{...}
AssignFile(plik, ‘A:\ZBIORY\ZBIOR2.DOC’);

zmienna plikowa plik reprezentująca plik o
elementach rzeczywistych (typu Double)
została skojarzona z fizycznym zbiorem danych
ZBIOR2.DOC, znajdującym się na dyskietce w
napędzie A i katalogu ZBIORY

background image

Otwieranie pliku

Do otwierania plików elementowych służą 2
procedury:

procedure Rewrite(var F: File);
procedure Reset(var F [: File]);

Obie procedury otwierają zbiór zarówno do
odczytu jak i do zapisu
Procedura Rewrite tworzy nowy zbiór, a
procedura Reset pozwala odczytywać i
zapisywać tylko w istniejących zbiorach

background image

Przykład tworzenia

nowego pliku

elementowego

type
complex = record

Re, Im : Double;

end;
var F: File of Complex;
{...}

Assign (F, ’A:\ZBIOR3.OUT’);
Rewrite (F);

Po skojarzeniu zmiennej plikowej F (elementy typu

rekordowego complex) ze zbiorem ZBIOR3.OUT,

znajdującym się na dyskietce w napędzie A , nastąpi

utworzenie oraz otwarcie nowego pliku.

background image

Przykład otwierania

istniejącego pliku

elementowego

var plik: file of record

Re, Im : Double;
end;

{...}
Assign (plik,’b:\ZBIOR5.IN’);
Reset (plik);

Otwarty zostanie istniejący plik

elementowy z napędu dyskietek B, o

nazwie Zbior5.In

background image

Procedura Write

procedure Write(F, V1 [, V2,...,Vn ]

);

Służy ona do zapisywania danych w
plikach elementowych

Przykład użycia:
Write(F,Pracownik)

background image

Procedura Read

procedure Read(F, V1 [,

V2,...,Vn ] );

Służy do odczytywania danych z plików

elementowych

Przykład użycia:

read(F,Pracownik)

background image

Funkcje pomocnicze

W przetwarzaniu plików zdefiniowanych i

nie zdefiniowanych często wykorzystuje

się następujące funkcje i procedury

standardowe:
Eof
FilePos
FileSize
Seek
Truncate

background image

Funkcja EOF

function Eof(var F): Boolean;

testuje osiągnięcie końca zbioru
wartością tej funkcji jest wartość logiczna

TRUE, gdy plik znajduje się w pozycji przed

ostatnim elementem lub nie zawiera żadnych

elementów, a wartość logiczna FALSE w

pozostałych przypadkach.
Przykład użycia

while not EOF(F) do {...}

background image

Funkcja FilePos

function FilePos(var F): Longint;

Podaje aktualną pozycję w pliku
Wartością tej funkcji, jest liczba całkowita
Longint podająca aktualne położenie pliku
określonego za pomocą zmiennej plikowej
(np.. 0 dla początku zbioru)
Przykład użycia:

NrAktualnegoElementu:=FilePos(F);

background image

Funkcja FileSize

function FileSize(var F): Integer;

Zwraca aktualny rozmiar wyspecyfikowanego
pliku.
W przypadku plików elementowych jednostką
miary jest liczba elementów.
Przykład użycia

IloscElementow:=FileSize(F);

background image

Procedura Seek

procedure Seek(var F; N: Longint);

Powoduje ustawienie położenia zbioru na

elemencie o wskazanym numerze
F identyfikuje odnośny plik zdefiniowany
N – pozycja (nr wybieranego elementu)
Przykład użycia:
Seek(F,0) – powoduje ustawienie

wskaźnika na

początku zbioru

background image

Procedura Truncate

procedure Truncate(var F);

Powoduje usunięcie z zewnętrznego
zbioru danych wszystkich jego elementów
począwszy od aktualnej pozycji do końca
zbioru
Przykład użycia

Truncate(F)

background image

Przykład wykorzystania

instrukcji

Truncate

Program przyklad;
var plik: file of record

nr: Byte;
nazwisko: string[20];

imie:

string[15];
rok: 1900..2000;
odwolanie : Byte;
end;

begin

Assign(plik,’DANE.ROB
’);

Reset (plik);
Seek (plik, 50);
Truncate (plik);
Close (plik);
end.

Wykonaj program powodujący usunięcie ze zbioru

DANE.ROB elementów począwszy od elementu o

numerze porządkowym 50

background image

Zamykanie plików

procedure CloseFile(var F);

Po otwarciu pliku możliwe jest wykonanie na nim

określonych operacji, po których zakończeniu

należy plik zamknąć. Operacji tej dokonuje się

poprzez wywołanie procedury CloseFile
Po zamknięciu pliku można daną zmienną plikową

skojarzyć z innym fizycznym zbiorem danych
Przykład użycia

CloseFile(F)

background image

Deklaracje typów, skojarzenie ze

zbiorem fizycznym i otwieranie

plików elementowych

Type
Czytelnik=record

Nazwisko, Imie:

String[40];

wiek: Byte;

IlWypKsiaz: Byte;

end;
{...}
var F: File of TCzytelnik;

Czytelnik: TCzytelnik;

{tu wykorzystywane w

programie

funkcje i procedury patrz slajdy

43-47}

begin

AssignFile(F,’Zbior.dan’);
{$I-} Reset(F);
if IOResult<>0 then
begin
Rewrite(F)
if IOResult<>0 then Exit;
end; {$I+}

{tu dalszy ciąg programu –

operacje na

otwartym zbiorze i zamknięcie

pliku – 48}

end;

background image

Wczytywanie danych

procedure Wczytaj(var Czyt: TCzytelnik);
begin

with Czyt do
begin

Nazwisko:=Form1.edNazwisko.Text;
Imie:=Form1.edImie.Text;
Wiek:=Form1.edWiek.Value;

IlWypKsiaz:=Form1.edIlosc.Value;
end;

end;

background image

Dodawanie nowego

elementu

do pliku

procedure Dodaj(Czytelnik:

TCzytelnik);

begin

Seek(F,FileSize(F));
Write(F, Czytelnik);

end;

background image

Modyfikacja istniejącego

elementu

procedure Modyfikuj(Nr: Integer; Czytelnik:

TCzytelnik);

begin

Seek(F,Nr);
Write(F,Czytelnik);

end;

background image

Wyszukiwanie elementów

procedure Wyszukaj(Nazwisko: String);
var i: Integer; Cz: TCzytelnik;
begin
Memo1.Clear;
for i:=0 to FileSize(F)-1 do
begin
Seek(F,i); read(F,Cz);
if (Nazwisko=Cz.Nazwisko) and (Cz.Wiek>=0) then
Memo1.Lines.Add(‘Imie: ’+Cz.Imie+’ Wiek:

‘+IntToStr(Cz.Wiek)+
’ Ilość książek: ‘+IntToStr(Cz.IlWypKsiaz)+‘Numer:

‘+FilePos(F));

end;
end;

background image

Usuwanie elementów

procedure Usun(Nr: Integer);
var Cz: TCzytelnik;
begin

Seek(F,Nr);
read(F,Cz);
Cz.Wiek:=-1;
Seek(F,Nr);
Write(F,Cz);

end;

background image

Wybór operacji, zamknięcie

zbioru

ch:=RadioButtonGroup.ItemIn

dex;

case ch of

0: begin
wczytaj(Czytelnik);
Dodaj(Czytelnik);
end;
1: begin

Numer:=edModyfikuj.Value;
czytaj(Czytelnik);

Modyfikuj(Numer,Czytelnik);
end;

2: begin
Numer:=edUsun.Value;
Usun(Numer);
end;
3: begin
Nazwisko:=edNazw.Text;
wyszukaj(Nazwisko);
end;

end;{case}
CloseFile(F);

background image

Przetwarzanie plików

niezdefiniowanych

Przy przetwarzaniu plików niezdefiniowanych

obowiązuje identyczny jak dla plików tekstowych

i elementowych schemat postępowania

1. Zdefiniowanie zmiennej plikowej (część

opisowa programu)

2. Skojarzenie zmiennej plikowej z fizycznym

zbiorem danych

3. Otwarcie zbioru
4. Zapis\Odczyt danych
5. Zamknięcie zbioru

background image

Opis typu plikowego dla

plików niezdefiniowanych

type

identyfikator_pliku=file;

background image

Skojarzenie zmiennej plikowej z

fizycznym zbiorem danych

AssignFile(identyfikator_pliku,wyrażenie_łańcucho

we);

identyfikator pliku - dowolna zmienną plikową
wyrażenie łańcuchowe - identyfikator fizyczny

zbiór danych (łańcuch ten nie może być dłuższy

niż 79 znaków
procedurę stosujemy identycznie jak dla plików

tekstowych i elementowych
skojarzenie ze zbiorem fizycznym można

zmieniać tylko wówczas gdy plik jest zamknięty

background image

Przykład stosowania

procedury AssignFile

var plik: File;

{...}

AssignFile(plik,

‘A:\ZBIORY\ZBIOR2.DOC’);

zmienna plikowa plik reprezentująca plik

niezdefiniowany została skojarzona z

fizycznym zbiorem danych ZBIOR2.DOC,

znajdującym się na dyskietce w napędzie A

i katalogu ZBIORY

background image

Otwieranie pliku

Do otwierania plików niezdefiniowanych służą 2 procedury:

procedure Rewrite(var F: File [; Recsize: Word ]
);
procedure Reset(var F : File[; Recsize: Word ] );

Obie procedury otwierają zbiór zarówno do odczytu jak i do
zapisu
Procedura Rewrite tworzy nowy zbiór, a procedura Reset
pozwala odczytywać i zapisywać w istniejących zbiorach
Parametr RecSize jest opcjonalny. Definiuje rozmiar
wczytywanego rekordu. Domyślna wartość tego parametru
wynosi 128.

background image

Przykład tworzenia

nowego pliku

niezdefiniowanego

var F: file;
{...}
AssignFile(F, ’C:\ZBIORY\ZBIOR4.OUT’);
Rewrite (F, 100);

Operacje spowodują stworzenie i otwarcie nowego

niezdefiniowanego

pliku

o

nazwie

F.

Zadeklarowano, że zapisy wyprowadzane do zbioru

o nazwie ZBIOR4.OUT umieszczonego w folderze

Zbiory na dysku C i będą miały po 100 bajtów.

background image

Przykład otwierania

istniejącego pliku

niezdefiniowanego

{...}
AssignFile(F,’B:\ZBIOR5.IN’);
Reset (F,1);

Otwarty

zostanie

istniejący

niezdefiniowany z napędu dyskietek B, o
nazwie Zbior5.In. Wielkość odczytywanej
porcji danych zostaje ustalona na 1 bajt.

background image

Procedura BlockWrite

procedure BlockWrite

(var F: File; var Buf; Count: Integer [; var Result:

Integer]);
Służy do zapisu bufora w pliku niezdefiniowanym
Parametry

F

- zmienna plikowa

Buf

- dowolna zmienna do zapisu

Count - maksymalna liczba zapisów
Result

- zmienna w której umieszczona jest liczba

poprawnie wprowadzonych zapisów

Zapisany blok zapisuje Count*RecSize bajtów

(RecSize określany jest podczas otwierania zbioru)

background image

Procedura BlockRead

procedure BlockRead

(var F: File; var Buf; Count: Integer [;var Result:

Integer]);
Służy do odczytu bufora z pliku niezdefiniowanego
Parametry

F

- zmienna plikowa

Buf

- dowolna zmienna (umieszcana w niej jest

odczytana wartość)

Count - maksymalna liczba odczytów
Result

- zmienna zawierać będzie ilość poprawnych

odczytów

Odczytywany blok zajmuje Count*RecSize bajtów

(RecSize określany jest podczas otwierania zbioru)

background image

Funkcje pomocnicze

W przetwarzaniu plików nie zdefiniowanych

często wykorzystuje się następujące funkcje i

procedury standardowe (ich przeznaczenie

było przedstawione podczas omawiania plików

elementowych):
Eof
FilePos
FileSize
Seek
Truncate

background image

Zamykanie plików

procedure CloseFile(var F);

Po otwarciu pliku możliwe jest wykonanie na nim

określonych operacji, po których zakończeniu

należy plik zamknąć. Operacji tej dokonuje się

poprzez wywołanie procedury CloseFile
Po zamknięciu pliku można daną zmienną plikową

skojarzyć z innym fizycznym zbiorem danych
Przykład użycia

CloseFile(F)

background image

Przykład

Plik niezdefiniowany ma następują strukturę

- liczba całkowita(Integer-4 bajty)
- 3 liczby rzeczywiste (Double-8 bajtów*3)
- łańcuch tekstowy (String[20]-21-bajtów)

var a,b,c: Double;

I: Integer;
S: String[20]

background image

Przykład zapisu\odczytu

dla plików

niezdefiniowanych

var F: File;
begin

AssignFile(F,’Plik.bin’);
Rewrite(F,1);
BlockWrite(F,I,4);
BlockWrite(F,a,8);
BlockWrite(F,b,8);
BlockWrite(F,c,8);
BlockWrite(F,S,21);
CloseFile(F)

End.

var F: File;
begin

AssignFile(F,’Plik.bin’);
Reset(F,1);
BlockRead(F,I,4);
BlockRead(F,a,8);
BlockRead(F,b,8);
BlockRead(F,c,8);
BlockRead(F,S,21);
CloseFile(F)

End.

background image

Operacje na plikach i

katalogach

Przejdziemy teraz do części wykładu
pokazującej w jaki sposób realizować
zadania związane z testowaniem
obecności pliku (katalogu), zmianą
jego nazwy, usuwaniem zbioru, itp...

background image

Funkcja DirectoryExists

function DirectoryExists(Name: string): Boolean;

Służy do sprawdzania czy katalog o nazwie

określonej parametram Name istnieje na dysku
Zwracana wartość to TRUE jeśli katalog istnieje
W przeciwnym razie wynikiem funkcji jest FALSE
Przykład
if not DirectoryExists('c:\temp') then {...}
Operacje umieszczone po then zostana wykonane

tylko wtedy gdy katalog C:\TEMP nie istnieje

background image

Funkcja FileExists

function FileExists(const FileName: string): Boolean;

Służy do sprawdzania czy plik o nazwie określonej

parametram FileName istnieje na dysku
Zwracana wartość to TRUE jeśli plik istnieje
W przeciwnym razie wynikiem funkcji jest FALSE
Przykład
if FileExists('c:\temp\plik.txt') then {...}
Operacje umieszczone po then zostana wykonane

tylko wtedy gdy plik C:\TEMP\Plik.txt istnieje na dysku

background image

Procedura ChDir

procedure ChDir(S: String);

powoduje zmianę bieżącego katalogu na
katalog i (lub) napęd określony przez
argument S
Przykład

{$I-}
ChDir(’C:\Katalog’);
{$I+}
if IOResult<>0 then ShowMessage(‘Nie odnaleziono
katalogu');

background image

Procedura GetDir

procedure GetDir(D: Byte; var S: String);

Pozwala uzyskać informację o bieżącym
katalogu w określonym napędzie
Parametry

D - oznacza numer napędu dysków (0- napęd

bieżący, 1-napęd A, 2- napęd B, 3- napęd C...)

S - zmienna typu string w której umieszczony

zostanie łańcuch zawierający ścieżkę bieżącego
katalogu na wskazanym dysku

background image

Przykład korzystania z

procedury GetDir

GetDir (3, s)

powoduje podstawienie pod S nazwy
bieżącego katalogu w napędzie C.
Jeśli napęd C jest bieżący, to taki
sam wynik uzyskamy po wywołaniu:

GetDir (0, s)

background image

Funkcja GetCurrentDir

function GetCurrentDir: string;

Zwraca łańcuch zawierający nazwę
bieżącego katalogu

background image

Procedura MkDir

procedure MkDir(S: String);

Służy do utworzenia nowego podkatalogu
S – ścieżka dostępu do tworzonego katalogu
Przykład

MkDir (’A:\BIN\ZBIORY’)

utworzenie na dyskietce w napędzie A w

katalogu BIN podkatalogu ZBIORY. Katalog BIN

nie może przy tym zawierać pliku o nazwie

ZBIORY.

background image

Funkcja CreateDir

function CreateDir(const Dir: string): Boolean;

Funkcja tworzy nowy katalog na dysku
Parametr Dir określa ścieżkę dostępu do
nowego katalogu
Jeśli jej rezultatem jest TRUE operacja tworzenia
katalogu została zakończona powodzeniem
W przeciwnym wypadku zwracana jest wartość
FALSE

background image

Przykład korzystania z

CreateDir

uses FileCtrl;
procedure TForm1.Button1Click(Sender:

TObject);

begin
if not DirectoryExists('c:\temp') then
if not CreateDir('C:\temp') then
raise Exception.Create (‘Niemożliwe

utworzenie katalogu c:\temp');

end;

background image

Procedura RmDir

procedure RmDir(S: String);

Służy do usunięcia pustego, tj. nie zawierającego

żadnych zbiorów, podkatalogu
S –ścieżkę dostępu do usuwanego katalogu
Usuwany katalog powinien być pusty, tzn. nie

powinien zawierać podkatalogów i plików
Przykład

{...}

RmDir('C:\\BIN');

if IOResult <> 0 then ShowMessage('Niemożliwe

usunięcie katalogu')
else ShowMessage('Katalog usunięty'); {...}

background image

Funkcja RemoveDir

function RemoveDir(const Dir: string):

Boolean;

Służy do usunięcia pustego, tj. nie
zawierającego żadnych zbiorów, podkatalogu
Dir –ścieżkę dostępu do usuwanego katalogu
Zwracana wartość to TRUE jeśli operacja się
uda, a w przeciwnym razie FALSE

background image

Procedura Erase

procedure Erase(var F);

Powoduje usunięcie zewnętrznego zbioru danych

skojarzonego z wyspecyfikowaną zmienną plikową
Plik podczas usuwania nie może być otwarty.
Przykład
Erase(plik_roboczy);
Wykonanie instrukcji spowoduje usunięcie z dysku

pliku skojarzonego ze zmienną plikową

plik_roboczy

background image

Funkcja DeleteFile

function DeleteFile(const FileName: string): Boolean;

Kasuje z dysku plik o wskazanej przez parametr

FileName nazwie (i ścieżce dostępu)
Jeśli plik nie może zostać usunięty wówczas zwracana

jest wartość FALSE
W przeciwnym wypadku jako wynik otrzymujemy

TRUE
Przykład

if FileExists(FileName) then
if
MsgBox(' Czy na pewno chcesz usunąć plik '

+ExtractFileName(FileName)+ '?'), [ ]) = IDYes

then DeleteFile(FileName);

background image

Procedura Rename

procedure Rename(var F; Newname);

Pozwala na zmianę nazwy zbioru
dyskowego
Parametr F określa nazwę zmiennej
plikowej skojarzonej ze zbiorem którego
nazwę chcemy zmienić
NewName – zawiera nową nazwę zbioru

background image

Przykład korzystania z

instrukcji Rename

Program przyklad;
var nazwa: string[12];

plik: File;

begin
Write(’ podaj nazwę zbioru : ’);
Readln(nazwa);
AssignFile(plik, nazwa);
Write(’Wprowadż nową nazwę

zbioru :’);

Readln(nazwa);
Rename (plik, nazwa)
end.

Wykonanie

programu
spowoduje zmianę
wprowadzonej z
klawiatury nazwy
zbioru na inną,
także wprowadzoną
z klawiatury
(zakładamy, że
zbiór o pierwszej
wprowadzonej
nazwie istnieje).

background image

Funkcja RenameFile

function RenameFile(const OldName, NewName:

string): Boolean;

Służy do zmiany nazwy pliku
Plik o nazwie OldName musi istnieć na dysku
Zwracana wartość to TRUE lub FALSE w
zależności od rezultatu wykonania operacji
Przykład
if not RenameFile(‘Stary.TXT','Nowy.TXT') then
ErrorMsg('Błąd podczas zmiany nazwy pliku!');

background image

Funkcja CopyFile

function CopyFile(Zrodlowy,Docelowy: String;

NieNadpisuj: Boolean): Boolean;
Efektem działania jest skopiowanie pliku o nazwie (i

ścieżce dostępu) podanej przez parametr Zrodlowy do

miejsca (ścieżka dostępu i nazwa pliku) wskazanego

przez parametr Docelowy.
Parametr NieNadpisuj określa zachowanie funkcji w

wypadku istnienia pliku docelowego. Dla wartości TRUE

istniejący plik nie jest nadpisywany, a wykonanie funkcji

kończy się niepowodzeniem. Jeśli parametr ma wartość

FALSE istniejący plik zostaje zastąpiony nowym plikiem.
Wynik funkcji informuje nas o tym czy kopiowanie zostało

wykonane (TRUE – operacja zakończona powodzeniem)

background image

Funkcja MoveFile

function MoveFile(Zrodlowy,Docelowy: String):

Boolean;

Efektem działania jest przeniesienie pliku o nazwie
(i ścieżce dostępu) podanej przez parametr
Zrodlowy do miejsca (ścieżka dostępu i nazwa
pliku) wskazanego przez parametr Docelowy.
Wynik funkcji informuje nas czy plik został
przeniesiony (TRUE – operacja zakończona
powodzeniem)

background image

Atrybuty pliku

Stała

Wartość

faReadOnly

$00000001

faHidden

$00000002

faSysFile

$00000004

faVolumeID

$00000008

faDirectory

$00000010

faArchive

$00000020

faAnyFile

$0000003F

background image

Funkcja FileGetAttr

function FileGetAttr(const FileName:

string): Integer;

Funkcja jako wynik zwraca atrybuty
pliku o nazwie FileName

background image

Funkcja FileSetAttr

function FileSetAttr(const FileName: string;

Attr: Integer): Integer;

Procedura ustawia pliku o podanej przez

FileName nazwie
Parametr Attr - określa które z atrybutów

pliku zostaną ustawione
Funkcja zwraca 0 jeśli operacja się

powiedzie, w przeciwnym wypadku

zwracaną wartością jest kod błędu

background image

Operacje na nazwach

plików i katalogów

Nazwa

funkcji

Wynik działania funkcji

ExpandFile

Name

Pełna ścieżkę wraz z nazwą pliku

ExtractFile
Dir

Ścieżka dostępu do katalogu (nazwa
dysku i nazwa katalogu)

ExtractFile
Ext

Rozszerzenie pliku

ExtractFile

Name

Nazwa pliku

ExtractFile
Path

Ścieżka dostępu do pliku

ChangeFile
Ext

Zmiana rozszerzenia pliku


Document Outline


Wyszukiwarka

Podobne podstrony:
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Sem II Transport, Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Sem II Transport, Podstawy Informatyki Wykład XIX i XX Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XVIII Object Pascal Grafika
Sem II Transport, Podstawy Informatyki Wykład XVI i XVII Object Pascal Tablice, rekordy i zbiory
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład IV System operacyjny
Zagadnienia egzamin podstawy informatyki, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika -
Dydaktyka-WYKŁADY, STUDIA- ed. elementarna, rok I, sem.II, teoretyczne podstawy kształcenia
wrl3075.tmp, Elektronika i Telekomunikacja, z PENDRIVE, Politechnika - EiT, 2011 - sem 1, PODSTAWY I
Podstawy Informatyki Wykład XIX Bazy danych
Podstawy Informatyki Wykład V Struktury systemów komputerowych
SEM II EKONOMICZNE PODSTAWY WYCENY
BIOMEDYCZNE PODSTAWY ROZWOJU, STUDIA- ed. elementarna, rok I, sem.II, biomedyczne podstawy rozwoju i
Podstawy informatyki, wykład 7
Podstawy Informatyki Wykład VI Reprezentacja informacji w komputerze
Podstawy Informatyki Wykład XI Object Pascal Podstawy programowania w Object Pascalu

więcej podobnych podstron