4 Operacje na Plikach ppt

background image

Operacje na Plikach

background image

Typy plików

Pliki tekstowe

Pliki typowane

Pliki strumieniowe

Pliki amorficzne

background image

Pliki tekstowe

Struktura danych (zewnętrzna) zawierających tekst

Ogranicznikiem każdego wiersza jest znak o kodzie

ASCII #13

Typ danych TextFile

Otwieranie pliku: skojarzenie zmiennej typu TextFile

ze ścieżką dostępu, za pomocą procedury AssignFile

Po otwarciu uzyskujemy

uchwyt

uchwyt do pliku

Od tej pory możemy korzystać z pliku

Należy zdecydować, czy plik otwieramy tylko do

odczytu, czy też do zapisu

Po zakończeniu korzystania z pliku, należy go zwolnić

(zamknąć) za pomocą procedury CloseFile

background image

Operowanie na pliku

tekstowym

Procedura reset – otwarcie do odczytu

Procedura rewrite – otwarcie do zapisu

Funkcja FileExists (typu Boolean)

Procedury read, write, readln, writeln

Przykład: Project1

Polecenie Append nie usuwa pliku;

umożliwia dopisywanie do niego nowych

informacji

background image

Pliki typowane

Zwane też rekordowymi

Konieczne zdefiniowanie typu rekordowego

Najlepiej spakowanego (packed)

Zagnieżdżone łańcuchy znaków powinny mieć określony

maksymalny rozmiar

Powiązanie typu rekordowego z typem plikowym (file

of)

Funkcja FileSize wyznacza rozmiar pliku (liczbę

rekordów)

Funkcja FilePos wyznacza numer bieżącego rekordu

Funkcja Seek wyszukuje określony rekord, np.

Seek(DataBase, FileSize(DataBase))

Przykład: Project2

background image

Pliki strumieniowe

Pliki typowane nie wymagają VCL

Abstrakcyjna klasa TStream; podklasy

TFileStream – do operowania na plikach

TStringStream – na łańcuchach tekstowych

TMemoryStream – na danych w pamięci

operacyjnej

TResourceStream – na zasobach

Strumienie obejmują dane składające się z

bajtów

Dane mogą być przesyłane między: pamięcią,

plikami, zasobami itp.

background image

Operowanie na plikach

strumieniowych

var potok: TFileStream;
potok:=TFileStream.Create(‘C:\ustawienia’,

fmOpenRead);

Tryb otwarcia

fmCreate – utworzenie nowego pliku

fmOpenRead – otwarcie tylko do odczytu

fmOpenWrite – zapis

fmOpenReadWrite – odczyt + zapis

fmShareExclusive – inna aplikacja nie może otworzyć pliku

fmShareDenyWrite – inna aplikacja może tylko czytać plik

fmShareDenyRead - odpowiednio

background image

Przykład operowania na

strumieniach

Cel: zapamiętywanie ustawienia
komponentu formularza

Klasa TFileStream

Jej metoda WriteComponentRes
zapisuje ustawienia wybranego
komponentu w pliku .RES

Przykład:
StreamComponentSave.exe

background image

Pliki amorficzne

Pliki amorficzne (ang. untyped file) są plikami bez struktury;

pliki binarne

Odczytujemy z nich bajty lub inną określona porcję danych

(ziarno)
var fFile: File;

Dostępne funkcje podobne do funkcji plików tekstowych

Zapis i odczyt danych odbywa się jednak za pomocą procedur:

BlockWrite i BlockRead

Procedury Reset i Rewrite wymagają drugiego argumentu

(liczba porcji danych odczytywanych jednocześnie); wartością

domyślna jest 128

Argumenty BlockRead: plik (zmienna typu File), bufor danych,

liczba danych do odczytu, opcjonalny argument – liczba

faktycznie odczytanych bajtów

Przykład: Project3

background image

Operacje ogólne

Kopiowanie plików

CopyFile(‘C:\Plik1.pas’,’C:\Plik2.pas,true);

Ścieżka źródłowa, docelowa, czy zastąpić istniejący

plik o tej samej nazwie

MoveFile(‘C:\Plik1.pas’,’C:\Plik2.pas);

Bardziej uniwersalne podejście – skorzystanie z

WinAPI (m.in. możliwość kopiowania całych folderów)

Konieczność dodania modułu ShellAPI w klauzuli uses

Wypełnienie rekordu, np. S, typu TSHFileOpStruct

zawierającego parametry żądanej operacji

Wykonanie operacji ShFileOperation(S);

mkDir(‘C:\nowy_folder); rmDir ...

background image

Korzystanie z WinAPI

var
S: TSHFileOpStruct;
begin
S.Wnd:=Handle; //uchwyt głównego formularza
S.wFunc := FO_COPY; operacja kopiowania
S.pFrom := ‘C:\File1.src’ // folder (plik) źródłowy
S.pTo := ‘D:\File1.src’ //folder docelowy
S.fFlags := FOF_NOCONFIRMATION or

FOF_RENAMEONCOLLISION or FOF_SIMPLEPROGRESS;

S.fAnyOperationsAborted := true; //jest możliwość anulowania?
S.lpszProgressTitle := ‘Kopiowanie w toku’ //tekst

ShFileOperation(S); //wykonaj
end;

background image

Korzystanie z WinAPI

(c.d.)

Flagi operacji

FO_COPY –
kopiowanie

FO_DELETE –
usunięcie pliku
(katalogu) pFrom

FO_MOVE –
przeniesienie

FO_RENAME

Opcje

FOF_ALLOWUNDO – możliwe cofnięcie

operacji

FOF_FILESONLY – dotyczy plików z

folderu, a nie podfolderów

FOF_NOCONFIRMATION –

niewyświetlanie potweirdzeń

FOF_NOCONFIRMMKDIR – nie tworzy

nowego folderu jeżeli operacja tego

wymaga

FOF_SILENT – okno kopiowania nie

zostanie wyświetlone

FOF_SIMPLEPROGRESS – wyświetla

wskazany tekst (ostatnie pole), ale nie

wyświetla kopiowanego pliku

FOF_RENAMECOLISSION – w

przypadku istnienia pliku o tej samej

nazwie, jego nazwa jest zmieniana

background image

Wyszukiwanie plików

Funkcje FindFirst i FindNext (SysUtils.pas)

Rekord, w którym są przechowywane informacje o

znalezionym pliku

type
TSearchRec=record
Time: integer; //czas utworzenia pliku
Size: integer; //rozmiar
Attr: integer; //atrybuty
Name: TFileName; //nazwa
ExcludeAttr: integer;
FindHandle: Thandle;
FindData: TWin32FindData;
end;

background image

Wyszukiwanie plików

(c.d.)

Atrybuty plików

faReadOnly – tylko do
odczytu

faHidden – ukryty

faSysVolume –
systemowy

faVolumeID – etykieta
woluminu

faDirectory – folder

faArchive –
zarchiwizowany

faAnyFile – dowolny plik

Rozpoczęcie wyszukiwania

FindFirst(‘C:\Folder\*.*’,

faDirectory, DR)

Ostatni parametr – nazwa
zmiennej typu TSearchRec

Zakończenie

FindClose(DR)

FindFirst wyznacza 0, gdy
wyszukiwanie się powiodło

background image

Przykład: pobranie listy

plików z folderu

procedure TMainForm.btnFindClick (Sender: Tobject);
var
SR: TSearchRec;
Found: integer;
begin
Found:=FindFirst(‘C:\folder\*.*’, faAnyFile, SR);
while Found = 0 do
begin
Memo1.Lines.Add(SR.Name);
Found:=FindNext(SR);
end;
FindClose(SR);
end;


Document Outline


Wyszukiwarka

Podobne podstrony:
34 Pliki Operacje na plikach w Pascalu
operacje na plikach
JAVA operacje na plikach
Lab 11 Operacje na plikach
Operacje na plikach i folderach
Lab 02 Operacje na plikach
Lab 11 Operacje na plikach
Podstawowe operacje na plikach i katalogach, Linux
Operacje na plikach i folderach
Operacje na plikach tekstowych
Lekcja 2 Operacje na plikach skoroszytów Zarządzanie arkuszami i skoroszytami Współpraca z siecią
Asembler Operacje na Plikach
JAVA operacje na plikach
operacje na plikach
Lab 11 Operacje na plikach
NC+Windows Operacje na plikach, ETI Edukacja technicyno inf,, KONSPEKTY, Konspekty
Operacje na plikach, STUDIA, WIŚ PK, MatLab

więcej podobnych podstron