Home / Hướng dẫn / Bài 10 – Tệp trong pascal – Kiểu file (tt)

Bài 10 – Tệp trong pascal – Kiểu file (tt)

Bài 10 - Tệp trong pascal – Kiểu file (tt)

2. Tệp có kiểu
Như chúng ta đã biết khi nhập xuất file có kiểu text gây ra nhiều khó khăn khi phải ghi dữ liệu như khi đọc, ghi dữ liệu của 1 sinh viên phải làm rất phức tạp. Chúng ta có thể xử lý đơn giản hơn với tệp có kiểu.
Đọc và ghi :
– Ghi lên tệp: Write(bientep,bien1,bien2,…); với bien1,bien2,…là các biến cùng kiểu với biến tệp.
– Đọc tệp: Read(bientep,bien1,bien2,…);
Chú ý:
Khác với tệp văn bản, việc ghi và đọc tệp có kiểu không sử dụng các lệnh Writeln hoặc readln nghĩa là tệp có kiểu không ghi dữ liệu thành các dòng. Các phần tử của tệp có kiểu được ghi liên tục trong các ô nhớ và chỉ có ký hiệu kết thúc tệp EOF. Khi chúng ta đọc hoặc ghi xong một phần tử thì con trỏ tệp sẽ tự động chuyển đến vị trí kế tiếp.

Truy nhập vào phần tử thứ i của tệp: Seek(bientep,i); i=0,1,2,…
Thủ tục seek sẽ định vị con trỏ tại vị trí thứ i của tệp.
Các hàm xử lý tệp:
* Filesize(bientep) cho biết số phần tử có trong tệp
* FilePos(bientep) cho biết vị trí hiện thời của con trỏ tệp
* Eof(Bientep) cho giá trị là True nếu con trỏ tệp ở vị trí cuối tệp, ngược lại cho giá trị False

Ví dụ:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
uses crt;
Type
        SinhVien = Record
                MSv, Hoten : String;
                Diem : real;
        end;
Var
        TSv : FILE of SinhVien;
        sv : SinhVien;
        i : integer;
BEGIN
        clrscr;
        assign(TSv, 'SV.dat');
        rewrite(TSv);
        for i:= 1 to 3 do {ghi du lieu 3 sinh vien vao tep}
        begin
                {nhap du lieu}
                write('Nhap ma sinh vien thu ', i, ' : ');
                readln(sv.MSv);
                write('   Nhap ten sinh vien: ');
                readln(sv.Hoten);
                write('   Nhap diem cua sinh vien: ');
                readln(sv.diem);
                {ghi du lieu vao tep}
                write(TSv, sv);
        end;
        close(TSv);
        reset(TSv); {mo tep de doc}
        writeln;
        writeln('Thong tin sinh vien thu 2 trong tep:');
        seek(TSv, 2);
        read(TSv, sv);
        writeln('MSV: ', sv.MSv);
        writeln('Ho ten: ', sv.Hoten);
        writeln('Diem: ', sv.diem:3:2);
        close(TSv);
        readln;
END.

Check Also

Tổng hợp phím tắt hữu ích trong PowerPoint

Tổng hợp phím tắt hữu ích trong PowerPoint

Số người xem bài viết 160 Tổng hợp phím tắt hữu ích trong PowerPoint