phuongnam366377
Thành viên thường trực




- Tham gia
- 25/10/19
- Bài viết
- 221
- Được thích
- 226
1/ Ý tưởng từ chủ đề sau
2/ Tôi + ChatGPT viết nhanh khoãng gần 2 tiếng cho Thư viện sau cơ bản hoàn thành
3/ ChatGPT viết bài giới thiệu nhanh
4/ Mai mốt úp lên Github sau ...
5/ Nội dung sau do ChatGPT biên soạn theo chỉ đạo của Tôi
Free to use – Binary only (no source code)
StringBuffer là một COM DLL miễn phí, tập trung vào hiệu năng cao khi xử lý chuỗi và số lượng lớn dữ liệu trong môi trường VBA / Automation.
Thư viện được thiết kế để thay thế các thao tác chuỗi chậm trong VBA, đặc biệt là:
Lưu ý:
SplitCharToInt64Array : 0.001s
VBA Split + CLngLng : 0.020s
Hình ảnh nhìn từ VBA như sau

Kiểu chuỗi trong VBA là kiểu dữ liệu không biến đổi được (immutable string), tức là chuỗi một khi đã được tạo ra thì kích thước của nó sẽ luôn cố định và không thể thay đổi được. Như vậy khi ghép hai chuỗi với nhau, VBA phải thực hiện những công việc sau đây:
VD: Với biểu thức str = "a" & "b".
VD: Với biểu thức str = "a" & "b".
- Xác định số lượng ký tự của hai chuỗi "a" và "b".
- Xin hệ điều hành cấp phát vùng nhớ vừa đủ để chứa hai chuỗi trên.
- Sao chép hai chuỗi trên vào vùng nhớ mới được cấp phát.
- nguyendang95
- Trả lời: 31
- Diễn đàn: Excel và các ngôn ngữ lập trình khác
2/ Tôi + ChatGPT viết nhanh khoãng gần 2 tiếng cho Thư viện sau cơ bản hoàn thành
3/ ChatGPT viết bài giới thiệu nhanh
4/ Mai mốt úp lên Github sau ...
5/ Nội dung sau do ChatGPT biên soạn theo chỉ đạo của Tôi
StringBuffer COM DLL (Free Binary)
High-performance StringBuffer COM library for VBA / VB6 / Delphi / C++ BuilderFree to use – Binary only (no source code)
Giới thiệu
StringBuffer là một COM DLL miễn phí, tập trung vào hiệu năng cao khi xử lý chuỗi và số lượng lớn dữ liệu trong môi trường VBA / Automation.Thư viện được thiết kế để thay thế các thao tác chuỗi chậm trong VBA, đặc biệt là:
- Split
- Join
- Ghép chuỗi trong vòng lặp lớn
- Xử lý số 64-bit
- Chỉ phát hành DLL nhị phân (binary)
- Không cung cấp mã nguồn
Công nghệ & Nền tảng
Thư viện được phát triển và build bằng:- C++Builder (Delphi) 11.3
- COM / Automation (IDispatch)
- Unicode UTF-16 (BSTR, SAFEARRAY)
- Runtime ổn định, tương thích tốt với hệ sinh thái Windows
Tương thích hoàn toàn với:
- Excel VBA
- Access VBA
- VB6
- Delphi
- C++ / C++Builder (Automation client)
- ABI COM chuẩn
- Quản lý Unicode/BSTR an toàn
- Hiệu năng cao hơn so với COM viết thuần VBA hoặc Script
Mục tiêu thiết kế
Tốc độ cao hơn VBA thuần- Hạn chế Variant, BSTR trung gian
- Giảm cấp phát bộ nhớ lặp lại
- Ổn định cho workload lớn (100k – hàng triệu phần tử)
Các tính năng chính
Xử lý chuỗi
- Append
- AppendChar
- Insert, Delete, Replace
- Substring, Reverse
- Trim, ToUpper, ToLower
- IndexOf, LastIndexOf
- StartsWith, EndsWith, Contains
Số & mảng (tối ưu cho VBA)
- AppendInt64Parts(Lo, Hi)
- AppendInt64Range(Start, Count)
- SplitCharToLongArray
- SplitCharToInt64Array
Split / Join
- Split
- SplitChar
- Trả về SAFEARRAY (nhanh hơn VBA Split)
Hiệu năng
- EnsureCapacity – cấp phát trước bộ nhớ
- Phù hợp cho vòng lặp hàng trăm nghìn / hàng triệu lần
Hiệu năng thực tế (VBA)
SplitCharToInt64Array : 0.001sVBA Split + CLngLng : 0.020s
Ví dụ VBA
Mã:
Sub Full_Buffer_Test()
Dim buff As StringBuffer
Set buff = New StringBuffer
buff.Append "ABFGH"
Debug.Print buff.Value
buff.Insert 3, "CDE"
Debug.Print buff.Value
buff.Reverse
Debug.Print buff.Value
buff.Replace 2, 2, "XX"
Debug.Print buff.Value
buff.Reverse
Debug.Print buff.Value
buff.Delete 6, 2
Debug.Print buff.Value
Debug.Print buff.Substring(2, 3)
End Sub
License & Distribution
- ✔ Free to use
- ✔ Dùng cho cá nhân hoặc thương mại
Không cung cấp mã nguồn
Cho phép decompile / reverse engineering ... tha hồ thoải mái và úp hết mã lên đây cho vui
Ghi chú
- Đây là COM DLL native, không phải .NET
- Tập trung hiệu năng & độ ổn định, không chạy theo API “đủ thứ”
- Phù hợp cho các project VBA lớn, xử lý dữ liệu nặng
Liên hệ
Nếu bạn gặp bug, vấn đề tương thích hoặc có đề xuất API, hãy mở Issue trên GitHub.Hình ảnh nhìn từ VBA như sau

Lần chỉnh sửa cuối:
