Hướng dẫn cài đặt free pascal Informational, Transactional

Chương trình được viết bởi Free Pascal có thể sinh ra các lỗi chạy thực (Run-Time Error) khi nhưng điều kiện khác thường được dò thấy trong chương trình. Danh sách sau liệt kê các lỗi chạy thực (Run-time Error) và các thông tin về lỗi đó.

Lỗi thông thường:

1. Thực hiện 1 hàm số vô nghĩa hoặc thực hiện 1 lời gọi hệ điều hành vô nghĩa.

2. Không tìm thấy file. Lỗi được báo khi có những lệnh Erase, Rename hoặc là Mở một file không tồn tại.

3. Không tìm thấy file. Lỗi được báo khi đường dẫn đến file không tìm thấy được hoặc vô nghĩa.

Cũng có thể được báo khi có lệnh truy cập 1 file không tồn tại.

4. Quá nhiều file đã mở. Chương trình đã đạt tới giới hạn file được mở. Tuỳ hệ điều hành mà giới hạn file được mở khác nhau, và lỗi này được báo khi số file mở đạt tới giới hạn đó.

5. Sự truy cập file bị từ chối. Lỗi này xảy ra khi 1 trong những lỗi sau xảy ra:

  • Có lệnh thực hiện ghi lên file có thuộc tính chỉ đọc (Read-only) hoặc đó chỉ là đường dẫn.
  • File hiện thời bị khoá hoặc bị chiếm dụng bởi 1 ứng dụng khác.
  • Có lệnh tạo 1 file mới, hoặc 1 đường dẫn mới trùng với 1 file hoặc 1 đường dẫn đã tồn tại.
  • Có lệnh thực hiện đọc 1 file chỉ có thuộc tính chỉ ghi (Write-only)
  • Có lệnh thực hiện ghi vào 1 file đã mở với chế độ chỉ đọc (Read-only)
  • Có lệnh thực hiện xoá (gỡ) 1 đường dẫn hoặc 1 file không có thực
  • Quyền truy cập vào file bị khoá.

6. File thực hiện vô nghĩa. Nếu lỗi này xảy ra, biến file đang được sử dụng đã bị lỗi; có nghĩa là bộ nhớ đã bị lỗi.

12. Mã truy cập file vô nghĩa. Lỗi được báo khi lệnh Reset hoặc Rewrite được gọi với 1 giá trị chế độ File vô nghĩa.

15. Ổ đĩa vô nghĩa. Số được trả bởi hàm Getdir hoặc ChDir chỉ 1 ổ đĩa không tồn tại

16. Không thể xoá đường dẫn hiện thời. Lỗi được báo khi có lệnh xoá 1 đường dẫn đang được sử dụng.

17. Không thể đổi tên file mà trỏ đến 1 ổ đĩa khác hoặc 1 phân vùng khác của ổ đĩa.

100. Lỗi đọc đĩa. Lỗi xảy ra trong khi đọc file từ đĩa. Điển hình khi có lệnh tiếp tục đọc phần tiếp theo của cuối file.

101. Lỗi ghi đĩa. Lỗi được báo khi đĩa đã đầy và có lệnh ghi vào đĩa đó.

102. File chưa được khai báo. Lỗi được báo khi lệnh Reset, Rewrite, Append, Rename và Erase được gọi với 1 biến chưa được khai báo.

103. File chưa được mở. Lỗi được báo khi các lệnh sau được gọi: Close, Read, Write, Seek, Eof, FilePos, FileSize, Flush, BlockRead, và BlockWrite nếu chưa mở file.

104. File chưa mở để đọc. Lỗi được báo khi các lệnh sau được gọi: Read, BlockRead, Eof, Eoln, SeekEof hoặc SeekEoln nếu file chưa được mở bằng lệnh Reset.

Lỗi phần cứng:

105. File chưa được mở để ghi. Lỗi được báo khi 1 biến kiểu Text chưa được mở bằng lệnh Rewrite.

106. Sai kiểu số. Lỗi được báo khi 1 giá trị ký tự được đọc từ file kiểu Text, khi mà biến đọc vào là 1 biến số.

150. Đĩa ở chế độ Ngăn cản ghi (Write-Protected)

151. Ổ đĩa xấu yêu cầu cấu trúc độ dài (Critical error)

152. Ổ đĩa chưa chuẩn bị.

154. Lỗi kiểm tra độ dư vòng (Cyclic redundancy check – CRC) trong dữ liệu.

156. Tìm kiếm ổ đĩa không được.

157. Định dạng phương tiện truyền thông không chấp nhận.

158. Cung từ trên ổ đĩa không tìm thấy.

159. Máy in không có giấy.

160. Thiết bị ghi lỗi.

161. Thiết bị đọc lỗi.

162. Lỗi ổ cứng.

Lỗi chạy thực:

200. Lỗi chia cho 0. Chương trình đang cố chia 1 số cho 0 (Kinh nghiệm là lỗi này xảy ra khi cố gọi Unit Crt khi thiếu thư viện này)

201. Lỗi kiểm tra vùng xãy ra. Nếu trình biên dịch có chế độ Kiểm tra vùng (Range-Checking) được mở, thì có thể xảy ra các lỗi sau:

  • Có lệnh truy cập vào 1 vùng nằm ngoài khai báo 1 Array.
  • Có lệnh gán giá trị vượt quá giới hạn giá trị của biến.

202. Tràn chồng đợi (Stack). Chồng đợi đã vượt qua giới hạn (có thể giảm dung lượng hoặc không xài biến cục bộ để giảm thiểu lỗi này) hoặc chồng đợi có lỗi. Lỗi này chỉ được báo khi trình biên dịch có chế độ Kiểm tra Chồng đợi (Stack Checking) được mở.

203. Tràn Heap. Heap đã đạt tới giới hạn. Lỗi xãy ra khi có lệnh chỉ định Memory Exlicitly (?) với lệnh New, GetMen hoặc ReallocMem, hoặc khi 1 lớp đối tượng được tạo ra và tràn bộ nhớ. Lưu ý: FreePascal cung cấp 1 Heap tự động: Ví dụ nếu Heap đã đạt giá trị cực đại, FreePascal sẽ chỉ định thêm vùng nhớ nếu cần. Nhưng nếu Heap đã đạt giá trị cực đại cho phép bởi hệ điều hành hoặc phần cứng thì lỗi sẽ xảy ra.

204. Lỗi phép toán Con trỏ. Lỗi xảy ra khi có lệnh Dispose hoặc FreeMem một con trỏ Nil hoặc không xác định.

205. Lỗi tràn số. Lỗi xảy ra khi có lệnh sử dụng hoặc sinh ra 1 số thực quá lớn.

206. Lỗi tràn số. Lỗi xãy ra khi có lệnh sử dụng hoặc sinh ra 1 số thực quá nhỏ.

207. Lỗi số không xác định. Lỗi xảy ra khi có phép tính toán một căn thức hoặc hàm Log của 1 số âm.

210. Đối tượng không có giá trị ban đầu. Khi biên dịch với trình có Kiểm tra Vùng (Range-Checking) được mở, chương trình sẽ báo lỗi này nếu có lệnh gọi 1 phương pháp ảo (?) không có đối tượng xây dựng (?)

211. Trừu tượng hoá phương pháp (?) Chương trình đang có thi hành 1 phương pháp ảo trừu tượng (?). Phương pháp trừu tượng nên được ghi đè, và phương pháp đã được ghi đè nên được gọi thay.

212. Lỗi đăng ký luồng. Lỗi xảy ra khi 1 kiểu biến không hợp lệ đăng ký trên thư viện Object.

213. Thu thập danh mục ngoài vùng. Lỗi xảy ra khi có lệnh truy cập những thông tin thu thập được với danh mục không xác định (lỗi trong thư viện Object)

214. Thông tin thu thập tràn bộ nhớ. Những thông tin thu thập được đã đạt giới hạn lưu trữ, và có lệnh thêm vào 1 thông tin (lỗi trong thư viện Object)

215. Lỗi tràn số học. Lỗi xảy ra khi kết quả của 1 phép toán số học nằm ngoài giới hạn hỗ trợ của biến. Trái với Turbo Pascal, lỗi này chỉ báo cho các phép toán số học trên hệ 32-bit hoặc 64-bit. Nguyên nhân là các dữ liệu đều được dịch sang thông tin 32-bit hoặc 64-bit trước khi thực hiện các thao tác tính toán số học.

216. Lỗi bảo vệ chung (?) Ứng dụng đã truy cập vào vùng bộ nhớ không hợp lệ. Lỗi xảy ra khi:

  • Truy cập vào 1 con trỏ Nil.
  • Truy cập vào vùng nhớ nằm ngoài giới hạn.

217. Ngoại lệ nào xảy ra ngoại lệ xảy ra, và không có ngoại lệ xử lý hiện nay. Các đơn vị sysutils cài đặt một trình xử lý ngoại lệ mặc định mà bắt tất cả excpetions và thoát ra một cách nhẹ nhàng.

219. Định kiểu không hợp lệ bị đẩy khi một định kiểu không hợp lệ được thực hiện trên một class bằng cách sử dụng toán tử as. Lỗi này cũng được ném ra khi một đối tượng hoặc lớp được định kiểu cho một lớp không hợp lệ hoặc đối tượng và một phương thức ảo của lớp đó hoặc đối tượng được gọi. Lỗi cuối cùng này chỉ bị phát hiện nếu các tùy chọn biên dịch -CR được sử dụng.

227. Lỗi xác nhận thất bại một khẳng định thất bại, và không có biến thủ tục AssertErrorProc đã được cài đặt.