Tôi đang làm việc để hiện đại hóa và sửa lỗi trong codebase của một chương trình 4 thời đại Delphi được viết bởi người khác. Rất nhiều mã là đáng sợ theo tiêu chuẩn hiện đại, và tôi không thể không tự hỏi nếu một số điều tôi thấy là có bởi vì tác giả ban đầu không biết về các tính năng thư viện chuẩn nào đó, hoặc nếu họ bị ' t có sẵn.Các phương pháp Tìm và Định vị của TDataset có ở đâu?
Một trong những "mô hình" đáng ghét càng thấy trên tất cả các ứng dụng trông như thế này:
table := TClientDataset.Create;
with table do
begin
CloneCursor(dmDatabase.OriginalTable, false, true);
filtered := true;
active := true;
first;
while not EOF do
begin
if fieldByName('whatever').AsString = 'some criteria' then break;
next;
end;
if EOF then exit;
//do something based on the current row of the dataset
table.free;
end;
Hầu như mỗi người trong các nhóm này có thể được thay thế bằng một cuộc gọi một dòng hoặc là Lookup
hoặc Locate
trên tập dữ liệu gốc, không cần CDS trung gian. Điều đó khiến tôi tự hỏi, liệu những phương pháp này có sẵn trong những ngày D4 không? Lần đầu tiên được thêm Lookup
và Locate
?
Nếu không tìm thấy 'một số tiêu chí' thì 'bảng' không được giải phóng? – JRL
@ Jrl: Giống như tôi đã nói, một số mã này rất đáng sợ theo tiêu chuẩn hiện đại. : P Nhưng về cơ bản nó đã được tái tạo thành một mẫu chung từ bộ nhớ. các khối thử cuối cùng có thể hoặc không thực sự có mặt. Có một số, nhưng không gần như nhiều như có nên. –
Điều này trông giống như mã được viết bởi một người đã học đủ delphi để hoàn thành công việc và biết chính xác một (cách thức vũ phu) để làm việc. Ngay cả trong Delphi 1, ông có thể đã viết một hàm trợ giúp, và tránh sao chép-dán-bệnh. –