Utwórz bazę danych, używając pliku typowanych plików Delphi

Wystarczy umieścić plik sekwencja binarna pewnego rodzaju. W Delfyistnieją trzy klasy plik: wpisane, tekstowe i bez typu. Typowane pliki to pliki zawierające dane określonego typu, takie jak Double, Integer lub wcześniej zdefiniowany niestandardowy typ rekordu. Pliki tekstowe zawierają czytelne znaki ASCII. Pliki bez typów są używane, gdy chcemy narzucić możliwie najmniejszą strukturę pliku.

Wpisane pliki

Podczas gdy pliki tekstowe składają się z linii zakończonych CR / LF (#13#10) kombinacja, pliki typowane składają się z danych pobranych z określonego typu struktury danych.

Na przykład poniższa deklaracja tworzy typ rekordu o nazwie TMember i tablicę zmiennych rekordu TMember.

rodzaj

 TMember = rekord

 Nazwa: strunowy[50];

e-mail:
strunowy[30];

Posty: LongInt;
koniec;

var Członkowie: szyk[1..50] z TMember; 

Zanim będziemy mogli zapisać informacje na dysku, musimy zadeklarować zmienną typu pliku. Poniższy wiersz kodu deklaruje zmienną pliku F.

var FA: plik TMember; 

Uwaga: Aby utworzyć plik tekstowy w Delphi, używamy następujących składnia:

instagram viewer

var SomeTypedFile: plik SomeType

Typem podstawowym (SomeType) dla pliku może być typ skalarny (jak Double), typ tablicowy lub typ rekordu. Nie powinien to być długi ciąg, dynamiczna tablica, klasa, obiekt ani wskaźnik.

Aby rozpocząć pracę z plikami z Delphi, musimy połączyć plik na dysku ze zmienną pliku w naszym programie. Aby utworzyć ten link, musimy użyć AssignFile procedura kojarzenia pliku na dysku ze zmienną pliku.

 AssignFile (F, „Members.dat”) 

Po ustanowieniu powiązania z plikiem zewnętrznym zmienna pliku F musi zostać „otwarta”, aby przygotować ją do odczytu i zapisu. Wywołujemy procedurę resetowania, aby otworzyć istniejący plik lub przepisz, aby utworzyć nowy plik. Po zakończeniu przetwarzania pliku program musi zostać zamknięty za pomocą procedury CloseFile. Po zamknięciu pliku jego powiązany plik zewnętrzny jest aktualizowany. Zmienna pliku może być następnie powiązana z innym plikiem zewnętrznym.

Ogólnie rzecz biorąc, powinniśmy zawsze używać Obsługa wyjątków; podczas pracy z plikami może pojawić się wiele błędów. Na przykład: jeśli wywołamy CloseFile dla pliku, który jest już zamknięty, Delphi zgłasza błąd we / wy. Z drugiej strony, jeśli spróbujemy zamknąć plik, ale nie wywołaliśmy jeszcze AssignFile, wyniki są nieprzewidywalne.

Napisz do pliku

Załóżmy, że wypełniliśmy tablicę członków Delphi ich nazwiskami, e-mailami i liczbą postów i chcemy przechowywać te informacje w pliku na dysku. Następujący fragment kodu wykona pracę:

var

 FA: plik TMember;

i: liczba całkowita;
zaczynać

 AssignFile (F, „Members.dat”);

 Przepisz (F);

próbować

dla j: = 1 do 50 robić

 Pisz (F, Członkowie [j]);

Wreszcie

 CloseFile (F);

koniec;koniec; 

Odczyt z pliku

Aby pobrać wszystkie informacje z pliku „Members.dat”, skorzystalibyśmy z poniższych kod:

var

 Członek: TMember

 FA: plik TMember;zaczynać

 AssignFile (F, „Members.dat”);

 Reset (F);

próbować

podczas gdy nie Eof (F) zaczynać

 Przeczytaj (F, członek);

{DoSomethingWithMember;}

koniec;

Wreszcie

 CloseFile (F);

koniec;koniec; 

Uwaga: Eof to funkcja sprawdzająca EndOfFile. Używamy tej funkcji, aby upewnić się, że nie próbujemy czytać poza końcem pliku (poza ostatnim zapisanym rekordem).

Poszukiwanie i pozycjonowanie

Pliki są zazwyczaj dostępne sekwencyjnie. Kiedy plik jest odczytywany przy użyciu standardowej procedury Odczyt lub zapis przy użyciu standardowej procedury Zapis, bieżąca pozycja pliku przechodzi do następnego uporządkowanego numerycznie komponentu pliku (następny rekord). Dostęp do typowanych plików można również uzyskać losowo za pomocą standardowej procedury Seek, która przenosi bieżącą pozycję pliku do określonego komponentu. The FilePos i Rozmiar pliku funkcji można użyć do określenia bieżącej pozycji pliku i bieżącego rozmiaru pliku.

{wróć do początku - pierwszy rekord}

 Szukaj (F, 0);


{przejdź do piątego rekordu}

 Szukaj (F, 5);


{Przejdź do końca - „po” ostatnim rekordzie}

 Szukaj (F, FileSize (F)); 

Zmień i zaktualizuj

Właśnie nauczyłeś się pisać i czytać całą gamę członków, ale co, jeśli chcesz tylko znaleźć 10. członka i zmienić adres e-mail? Następna procedura robi dokładnie to:

procedura Zmień adres e-mail(const RecN: liczba całkowita; const Nowy e-mail: strunowy) ;var DummyMember: TMember;zaczynać

{przypisz, otwórz, blok obsługi wyjątków}

 Szukaj (F, RecN);

 Przeczytaj (F, DummyMember);

 DummyMember. Email: = NewEMail;

{przeczytaj przejścia do następnego rekordu, musimy

wróć do pierwotnego rekordu, a następnie napisz}
 Szukaj (F, RecN);

 Napisz (F, DummyMember);

{zamknąć plik}koniec;

Zakończenie zadania

To wszystko - teraz masz wszystko, czego potrzebujesz, aby wykonać swoje zadanie. Możesz zapisać informacje członków na dysku, możesz je odczytać z powrotem, a nawet możesz zmienić niektóre dane (na przykład e-mail) w „środku” pliku.

Ważne jest to, że ten plik nie jest plikiem Plik ASCII, tak to wygląda Notatnik (tylko jeden rekord):

 .Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..