2008-10-07 30 views
9

Bạn có biết một sự giải mã Hashtable tốt và miễn phí cho Delphi 5 không?Triển khai Hashtable cho Delphi 5

Tôi cần tổ chức một lượng lớn dữ liệu trong một sự vội vã và tôi hơi lo lắng về các vấn đề rò rỉ bộ nhớ mà tôi tìm thấy trong hầu hết các triển khai có sẵn trên web.

Tks

Trả lời

10

Bạn cũng có thể xem mã nguồn mở/trước đây là TurboPower SysTools. Không chắc chắn nó đang được cập nhật bao nhiêu. Tại một thời điểm, Julian Bucknall đề xuất nó trên EZDSL library của mình, mặc dù đó là trở lại khi ông vẫn làm việc TurboPower lông và nó đã được duy trì/cập nhật.

+1

Thực tế Turbo-Powers LockBox có lẽ là những gì anh ta muốn, phiên bản mới nhất được cập nhật tại http://www.songbeamer.com/delphi/ – skamradt

+2

LockBox thực hiện băm mật mã - SysTools và EZDSL làm hashtables, là một cấu trúc dữ liệu. –

2
+0

Chúng tôi đã thử triển khai được cung cấp bởi benya.com nhưng chúng tôi đã gặp phải một số sự cố rò rỉ bộ nhớ. Bạn đã thử lần thứ hai chưa? Tnks cho câu trả lời – Gustavo

+1

No. Tôi sử dụng TList, TStringList hoặc TClientDataSet + BinarySearch trong trường hợp có lượng dữ liệu khổng lồ. – zaca

1

Bạn có thể cố gắng tìm kiếm trong Koders.
Here bạn có triển khai đơn giản (Winjab project) hoặc this từ JCL.

LƯU Ý: Xem giấy phép mã trước khi sử dụng.

3

EZDSL là thư viện cấu trúc dữ liệu, bao gồm bảng băm, được viết bởi Julian Bucknall của TurboPower và DevExpress ... Tôi chưa sử dụng chúng, nhưng tôi sẽ có kỳ vọng cao đối với mã của anh chàng này.

http://www.boyet.com/FixedArticles/EZDSL.html

+0

Tôi đã sử dụng EZDSL trong nhiều năm với các ứng dụng thu gọn và mã rất tốt. Hiệu suất tốt, không có mối lo ngại về rò rỉ bộ nhớ. –

3

Bạn có thể thử GpStringHash tôi. Đảm bảo không có rò rỉ bộ nhớ, nhưng chỉ hoạt động với các chuỗi. Tôi nghĩ rằng nó sẽ hoạt động trong D5.

0

Peter Dưới đây vừa đăng một bản sửa lại thứ gì đó mà ông đã làm cho nhóm mới của Embarcadero trong các tập đoàn công cộng. Có điều gì đó bên dưới tiểu sử của anh ấy trên trang web CodeGear tại số http://cc.codegear.com/Item/24825 taht mô tả nó.

0

Thanh toán DeCAL, bao gồm bảng băm và nhiều cấu trúc dữ liệu hơn.

0

Ngoài việc triển khai bảng băm thực tế, hàm băm được sử dụng cũng rất quan trọng.

Tốt nhất là hàm băm từ Bob Jenkins, read his paper here.

Thuật toán này được cải thiện gần đây trong trường hợp đầu vào có kích thước DWord (See the C-version of it here). Phiên bản này nhanh hơn và kết quả là hai giá trị băm 32 bit thay vì một. (Giá trị băm thứ hai này có thể được sử dụng để tăng tốc độ lựa chọn trong nhóm chẳng hạn.)

Đối với những người quan tâm, tôi có thể dán bản dịch Delphi ở đây? (Đó là khoảng 170 dòng mã.)

0

RBS Antidot là thư viện chứa rất tốt (bao gồm bản đồ UnsortedMap dựa trên băm).

Các vấn đề liên quan