Đọc dữ liệu từ tệp văn bản:
Sau khi tiến hành mở tệp, con trỏ tệp sẽ được đặt tại dòng đầu.Ta dùng thủ tục Read hoặc Readln để đọc dữ liệu từ dòng hiện thời và gán vào biến tương ứng, viết biến đó ra màn hình hoặc máy in.
Để có thể viết toàn bộ dữ liệu từ một tệp văn bản ra các thiết bị ngoài thì, thì các lệnh đọc viết phải được lặp đi lặp lại từ dòng 1 đến dòng cuối cùng, nghĩa là phải sử dụng một trong 2 vòng lặp:
While not eof(Bientep) do
Begin
Readln(Bientep, Dong); {biến Dong phải được khai báo trước, kiểu String}
Write(Dong);
End;
Hoặc:
For i:=1 to filesize(Bientep) do
Begin
Readln(Bientep,Dong);
Write(Dong);
End;
Lưu ý: Muốn lấy lại kiểu của dữ liệu nhập vào tệp văn bản thì mỗi biến phải nhập trên một dòng.
Ví dụ 2.8:
Xây dựng một chương trình đơn giản để quản lý công chức. Dữ liệu nhập bao gồm: Họ tên, Hệ số lương và số con. Dữ liệu xuất ra màn hình bao gồm Họ tên, Hệ số lương, Số con và Lương tháng ( tính theo quy định của nhà nước = heso*540000).
Chương trình đặt ra hai khả năng lựa chọn:
1. Nếu tệp dữ liệu đã tồn tại thì nhập thêm người
2. Nếu tệp chưa có thì mở tệp mới
Trong cả 2 trường hợp đều cho biết số người cần nhập. Dữ liệu in ra dưới dạng bảng.
Program Quan_ly_can_bo;
Uses Crt;
Var f:Text; hoten:String[20]; c1, heso:real; c2,i,n,socon:byte;
Ten:string[12];
Begin
Clrscr;
Write(‘cho biet ten tep’); readln(ten);
Assign(f,ten);
Reset(f);
If IOResult=0 then
Append(f);
Else Rewrite(f);
Write(‘nhap bao nhieu nguoi’); readln(n);
For i:=1 to n do
Begin
Write(‘Hoten’); Readln(hoten);
Write(‘He so’); Readln(heso);
Write(‘So con’); Readln(socon);
Writeln(f,hoten);
Writeln(f,heso:4:2);
Writeln(f,socon);
End;
Close(f);
Assign(f,ten);
Reset(f);
Writeln(‘------------------------------------------------------‘);
Writeln (‘| Ho va ten | Hs | socon | Luong |’);
Writeln(‘------------------------------------------------------‘)
While not eof(f) do
Begin
Readln(f,hoten);
Readln(f,heso);
Readln(f,socon);
Writeln(‘|’,ten:19,’|’,heso:4:2,’|’,socon:4,’|’,heso*540000:10:2,’|’);
End;
Readln;
End.