- Gửi mọi người
:
Bi rờ chắc mọi người đều xài free pascal hết nhỉ -'___'-. Thi quốc gia cũng cho xài FP rồi. MB mới biết được một vài thủ thuật trong FP nè:
* Chú ý đặt định hướng biên dịch {$MODE OBCSFPC}
+ FP cho kiểu integer, cardinal thành 32 bit hết (trong TP thì là 16 bit). Khỏi lo về bộ nhớ, vì FP cho xài thoải mái (hổng có keo như TP ^^)
+ Thêm một minh chứng cho FP về tính hào phóng: FP có 2 kiểu dữ liệu xâu kí tự mới là AnsiString và WideString => cấu trúc động. Cũng giống như các ngôn ngữ hiện đại, 2 kiểu dữ liệu này lưu dưới dạng
con trỏ. Khi gán a:= b thì trong TP sẽ copy xâu b ra đâu đó rồi bảo nó là a. Nhưng với 2 kiểu này thì đơn giản FP cho con trỏ a về chổ con trỏ b chỉ. Một câu hỏi đặt ra là nếu thay đổi a thì b có thay đổi theo không? Đương nhiên không, vì FP sẽ copy a ra đâu đó trước rồi mới sửa lại.
AnsiString là xài cho các kí tự ASCII, WideString xài cho cả unicode. Điểm đặc biệt ở FP là string được lưu như những
mảng động, trừ kiểu string cũ. Cấp phát cho string ta dùng setLength. Ví dụ setLength cho a là 10 thì các kí tự trong a sẽ là a[0] đến a[9]. Cứ yên tâm mà xài, kiểu string cũ chỉ cho 255 ký tự còn AnsiString với WideString cho rất thoải mái, kích thước bộ nhớ tối đa cho 1 biến thuộc 2 kiểu này là.. 2GB ~___^ (yes, mắt bạn ko có vấn đề đâu.
2 gigabyte).
Thêm một vấn đề là kích thước 2 kiểu string mới này đo như thế nào khi cấu trúc được dùng là mảng. Câu trả lời: dùng lệnh length như bình thường sẽ trả lại số phần tử, hoặc dùng lệnh high sẽ trả về index của phần tử lớn nhất. VD với xâu a đã được setLength là 10, thì length(a) trả về 10 còn high(a) trả về 9.
+ FP có cấu trúc lệnh khá giống try..catch..finally của java:
Code:
try
.
.
finally
.
.
end;
Code:
try
.
.
except
.
.
end;
Đặt các lệnh có khả năng gây lỗi vào sau try; những lệnh xử lý khi gây lỗi vào sau except; những lệnh mà có lỗi hay không có lỗi cũng "cố chạy" (ngang bướng ghê há ^^) vào trong finally.
P/s: Đổi chữ ký rồi ah cashier ^^
Bookmarks