wykład IV programowanie Lazarus

background image

Lazarus – PLIKI

background image

Pliki

Pliki są formą przechowania danych, po

wyłączeniu programu.

Mogą zawierać dane wprowadzone via

program jak i niezbędne dane
konfiguracyjne wymagane do poprawnej
pracy programu.

Pliki mogą być „formatu” tekstowego lub

binarnego.

2

background image

Pliki tekstowe

Plik tekstowy to plik:
- składający się z tekstu i formatowany zgodnie z przyjętym

standardem, zazwyczaj ASCII, UNICODE

- Zawierający dodatkowo znaki formatowania np. przejścia

końca linii i przejścia nowej linii (#13#10), znaki tabulacji
itp.

(Label1.Caption: = 'Pierwsza linia' + # 13 # 10 + 'Druga linia

„)

- wykorzystywany bardzo często jako plik konfiguracyjny,

dokumentacyjny etc.

- Przykłady: .txt, .htm, .xml
Plikiem tekstowy nie są plik zapisane w edytorach tekstu w

ich natywnym formacie a nawet .rtf

3

background image

Pliki binarne

Plik binarny jest plikiem:
- o dowolnej zawartości, oznacza więc wszystkie pliki

poza plikami tekstowymi choć i do nich można
podchodzić (obsługiwać je) jak do binarnych

- tworzonym przez programy narzucające im „swoją”

wewnętrzną strukturę, której naruszenie może
sprawić, że stanie się niepoprawny dla programów je
obsługujących.

- którego zawartość można edytować za pomocą

edytora heksadecymalnego, który umożliwia edycję
wartości poszczególnych bajtów w pliku.

4

background image

Obsługa plików tekstowych

Klasyczne podejście do pracy z plikami

tekstowymi bardzo często
porównywane jest do zapisu lub
odczytu z taśmy
magnetofonowej/magnetowidowej tj.
całą „porcję informacji” zapisuje się
po kolei od początku do końca.

(możliwa ale nie zalecane jest

dokonywanie przeskoków w „treści”
pliku podczas pracy)

5

background image

Pliki tekstowe

Praca z plikiem tekstowym wymaga:
1) użycia zmiennej zawierającej wskazanie na plik tzw. uchwyt. Musi ona być

typu TextFile:

var Plik:TextFile;

2) Przypisania do tej zmiennej wskazania na konkretny plik (podajemy jego

nazwę lub całą ścieżkę):

AssignFile(Plik,’nazwa.pliku’);

3) Ustalenia formy dalszej pracy z plikiem (odczyt, zapis, modyfikacja)

a)

Reset(plik)

;//przygotowanie do odczytu (wskaźnik pliku ustawiany na

jego początek)
b)

Rewrite(plik)

;//przygotowanie do zapisu (tworzenie nowego pliku o

podanej uprzednio w w „assignfile” nazwie. Jeśli plik tak już jego zawartość
zostanie usunięta)
c)

Append(plik)

;// przesuwa kursor pliku na koniec pliku

4) Dokonanie operacji na pliku (dodanie danych, odczytanie danych)

a)

ReadLn(plik,bufor); Read(plik,bufor);

b)

Writeln(plik:bufor); Write(plik, bufor);

5) Zamknięcie pliku

CloseFile(plik);

6

background image

Pliki tekstowe – przykład

zapisu

var
plik_zapis: Textfile;
begin
AssignFile(plik_zapis, 'nazwa.txt');
Rewrite(plik_zapis);
Writeln(plik_zapis, 'ABCD');
Write(plik_zapis, 'EFGH');
Writeln(plik_zapis, 'IJKL');
CloseFile(plik_zapis);
end;

7

background image

Pliki tekstowe – przykład dopisania

danych

var
plik_zapis: textfile;
begin
AssignFile(plik_zapis, 'nazwa.txt');
Append(plik_zapis);
Writeln(plik_zapis, '1234');
CloseFile(plik_zapis);
end;

8

background image

Zapis pliku tekstowego

Instrukcja   Flush(plik);

9

background image

Pliki tekstowe – przykład

odczytu

var
plik_odczyt: textfile;
s:string;
begin
AssignFile(plik_odczyt, 'nazwa.txt');
Reset(plik_odczyt);

Readln(plik_odczyt,s);
Memo1.Lines.add(s);

Readln(plik_odczyt,s);
Memo1.Lines.add(s);

Readln(plik_odczyt,s);
Memo1.Lines.add(s);

CloseFile(plik_odczyt);
end;

//czego możemy się spodziewać przy próbie odczytu większej ilości linii niż rzeczywista ich ilość w

pliku?

10

background image

Pliki tekstowe – przykład odczytu (2)

Funkcja

EOF

(ang.End Of File) – informuje czy został osiągnięty koniec pliku.

Dodanie do zawartość komponentu Memo1
wszystkich linii zawartych w pliku tekstowym (ilość linii jest nieznana w trakcie wykonywania

programu)

var
plik_odczyt: textfile;
s: string;
begin
AssignFile(plik_odczyt, 'nazwa.txt');
Reset(plik_odczyt);

while (EOF(plik_odczyt) = false)
do
begin
Readln(plik_odczyt, s);
Memo1.Lines.add(s);
end;

CloseFile(plik_odczyt);
end;

11

background image

Wyjątki!!!

• var
• plik_zapis: textfile;
• begin
• AssignFile(plik_zapis, 'nazwa.txt');

try

• Append(plik_zapis);
• Writeln(plik_zapis, '1234');

finally

• CloseFile(plik_zapis);

end

;

• end;

12

background image

Wyjątki (2)

try

//instrukcje mogące wywołać wystąpienie wyjątku
except
//instrukcje wykonywane w razie wystąpienia wyjątku
end;

try

//instrukcje mogące wywołać wystąpienie wyjątku
except
  on E: Exception do ShowMessage(E.Message+'
'+IntToStr(E.HelpContext));
  end;

13

background image

Pliki binarne - amorficzne

Nie mają jednolitej – jawnie

ustrukturyzowanej budowy.

Dostęp do ich zawartości następuje z

reguły przez odczyt/zapis
poszczególnych bajtów (ich grup)

14

background image

Pliki binarne - amorficzne

Praca z plikiem binarnym wymaga:
1)

użycia zmiennej zawierającej wskazanie na plik tzw. uchwyt. Musi ona być typu File:

var Plik:File;

2) Przypisania do tej zmiennej wskazania na konkretny plik (podajemy jego nazwę lub

całą ścieżkę):

AssignFile(Plik,’nazwa.pliku’);

3) Ustalenia formy dalszej pracy z plikiem (odczyt, zapis, modyfikacja)

a)

Reset(plik,1)

;//przygotowanie do odczytu (wskaźnik pliku ustawiany na jego

początek, drugi parametr to wielkość odczytywanych jednorazowo pakietów)
b)

Rewrite(plik,1)

;//przygotowanie do zapisu (tworzenie nowego pliku o podanej

uprzednio w w „assignfile” nazwie. Jeśli plik tak już jego zawartość zostanie usunięta)
Drugi parametr to wielkość odczytywanych jednorazowo pakietów)

4) Dokonanie operacji na pliku (dodanie danych, odczytanie danych)

BlockWrite(plik, Bufor,ile_danych_zapisac);
BlockRead(zrodlo, Bufor, ile_danych_odczytać, ile_udało_sie_odczytac)

5) Zamknięcie pliku

CloseFile(plik);

15

background image

Pliki binarne - odczyt

var
F : File;
Bufor : array[0..100] of char;
ile:integer;
begin
AssignFile(F, 'nazwa.txt');
Reset(F,1);
BlockRead(F, Bufor, SizeOf(Bufor),ile);
CloseFile(F);
end;

16

background image

Pliki binarne zapis

var
F: File;
Bufor: array[1..5] of char;
i: integer;
begin
for I := 1 to 5 do
Bufor[i] := 'A';

AssignFile(F, 'nazwa3.txt');
Rewrite(F, 1);
BlockWrite(F, Bufor, SizeOf(Bufor));
CloseFile(F);
end;

17

background image

Pliki binarne przykład zastosowania –

kopiowanie pliku

var
zrodlo, cel: File;
Bufor: array[0..1024] of Char;
Ile: Integer;
begin
ile := 1;

//przygotowanie zmiennych plikowych

AssignFile(zrodlo, 'nazwa.txt');
Reset(zrodlo, 1);
AssignFile(cel, 'nazwa_kopia.txt');
Rewrite(cel, 1);

//główna pętla kopiująca

while ile > 0 do
begin
BlockRead(zrodlo, Bufor, SizeOf(Bufor), ile);
BlockWrite(cel, Bufor, ile);
end;
CloseFile(cel);
CloseFile(zrodlo);
end;

18

background image

Pliki typowane/rekordowe

Cechy:
- zapisywane/odczytywane są całek

pakiety danych (rekordy)

- Możliwość jednoczesnego zapisu i

odczytu (w odróżnieniu od
wcześniejszych typów plikowych)

- Konieczność zdefiniowania struktury

odczytywanej/zapisywanej struktury
(rekordu)

19

background image

Pliki rekordowe

Definicja struktury:

Type
TPorcja_Danych=record
X:double;
Y:double;
Nazwa:String[200];//koniecznie podana wielkość
End;

Definicja nowego typu
Type
TPlik_rekordowy=file of TPorcja_Danych;

20

background image

Pliki rekordowe

Praca z plikiem binarnym po uprzednim zadeklarowaniu typu rekordowego i pliku

typowanego opartego na tym typie wymaga:

1) użycia zmiennej zawierającej wskazanie na plik tzw. uchwyt. Musi ona nowym

zdefiniowanym typem pliku rekordowego:

var Plik:TPlik_rekordowy;

2) Przypisania do tej zmiennej wskazania na konkretny plik (podajemy jego nazwę

lub całą ścieżkę):

AssignFile(Plik,’nazwa.pliku’);

3) Ustalenia formy dalszej pracy z plikiem (odczyt, zapis, modyfikacja)

a)

Reset(plik)

;//przygotowanie do odczytu (wskaźnik pliku ustawiany na jego

początek
b)

Rewrite(plik)

;//przygotowanie do zapisu (tworzenie nowego pliku o podanej

uprzednio w w „assignfile” nazwie. Jeśli plik tak już jego zawartość zostanie
usunięta)

4) Dokonanie operacji na pliku (dodanie danych, odczytanie danych)

a)

Read(plik,zmienna_rekordowa);

b)

Write(plik, zmienna_rekordowa);

5) Zamknięcie pliku

CloseFile(plik);

21

background image

Pliki rekordowe – zapis

danych

var
plik: TPlik_rekordowy;
zmienna_rekordowa: TPorcja_Danych;
begin
zmienna_rekordowa.X := 10;
zmienna_rekordowa.y := 12;
zmienna_rekordowa.Nazwa := 'Punkt nr 1020';
AssignFile(plik, 'nowy_plik.dat');
Rewrite(plik);
Write(plik, zmienna_rekordowa);
closefile(plik);
end;

22

background image

Pliki rekordowe – dopisywanie danych

(

seek

– substytut append)

var
plik: TPlik_rekordowy;
zmienna_rekordowa: TPorcja_Danych;
begin
zmienna_rekordowa.X := 10;
zmienna_rekordowa.y := 12;
zmienna_rekordowa.Nazwa := 'Punkt nr 1021';
AssignFile(plik, 'nowy_plik.dat');
Reset(plik);//   

Seek(plik, FileSize(plik)); //drugi parametr mówi do

którego elementu rekordowego w pliku ma nastąpić skok

Write(plik, zmienna_rekordowa);
closefile(plik);
end;

23

background image

Pliki rekordowe – odczyt danych

var
plik: TPlik_rekordowy;
zmienna_rekordowa: TPorcja_Danych;
begin
AssignFile(plik, 'nowy_plik.dat');
Reset(plik);
Seek(plik, 1);
read(plik, zmienna_rekordowa);
Closefile(plik);
ShowMessage(zmienna_rekordowa.Nazwa);
end;

24

background image

Strumienie, pliki

strumieniowe

25

background image

KONIEC

Mimo wszystko dziękuję za

uwagę

26


Document Outline


Wyszukiwarka

Podobne podstrony:
wykład III programowanie Lazarus
wykład I programowanie Lazarus
wyklad IV
Prezentacja wykłady I IV
Wykład IV Model Portera
E Tezy pedagogiki Marii Montessori Ped przedszk wykład IV
WYKŁAD IV(1)
WYkład IV 4
Wykład IV Ubezpieczenia dla przedsiębiorstw
Ogolnotech dla Bio I WYKLAD IV
Wykład IV-do prezentacji, Organizacja rachunkowości
Finanse wykład IV, Rok 1, Semestr 2, Finanse (dr Helena Ogrodnik), Różne (od poprzednich roczników),
FP 7 i 8, Prawo Finansowe, Wykłady IV rok - projekt, PF - wykłady, wykłady PF - 6 semestr
Promocja zdrowia wykład IV  11 2012r
4Prawo Cywilne Wykład IV ) październik

więcej podobnych podstron