phuongnam366377
Thành viên hoạt động



- Tham gia
- 25/10/19
- Bài viết
- 177
- Được thích
- 192
Nôi dung Bài Viết do ChatGPT biên soạn theo ý của Tôi ....

... xin mời vào đây bà tám và bàn luận
Tóm tắt: Microsoft đã “dọn dẹp” và không còn ưu tiên duy trì scrrun.dll (Scripting Runtime) và vbscript.dll (VBScript.RegExp). Những thư viện này làm tốt nhiệm vụ ở thời VB5/VB6, nhưng hiện đã lỗi thời, tiềm ẩn rủi ro bảo mật và không phù hợp cho các ứng dụng dài hạn. Thay vì bám víu vào chúng, đây là lúc cộng đồng và bên thứ ba tạo ra các DLL/COM/ADD-IN hiện đại — ví dụ: COM DLL viết bằng Delphi 12, .NET, hoặc C++ — để thay thế toàn diện chức năng Regex + FileSystem và hơn thế nữa.
Thư viện: ModernScripting.dll
API design notes:
Scripting Runtime và VBScript.RegExp từng rất hữu ích — nhưng đã đến lúc loại bỏ những thư viện “ọp ẹp” để nhường chỗ cho giải pháp hiện đại, an toàn và mở rộng. Nếu bạn là dev VBA/IT admin/team dev nội bộ, hãy:
Nếu bạn muốn, mình có thể tiếp tục và viết bài chi tiết hơn (bản web-ready HTML + meta, hoặc bản tiếng Việt/Anh chuẩn SEO), hoặc soạn mẫu project Delphi 12 (skeleton code) cho MyRegex + MyFileSystem để bạn bắt tay vào xây dựng luôn. Bạn muốn mình làm hướng nào tiếp theo?



Hết thời
Tóm tắt: Microsoft đã “dọn dẹp” và không còn ưu tiên duy trì scrrun.dll (Scripting Runtime) và vbscript.dll (VBScript.RegExp). Những thư viện này làm tốt nhiệm vụ ở thời VB5/VB6, nhưng hiện đã lỗi thời, tiềm ẩn rủi ro bảo mật và không phù hợp cho các ứng dụng dài hạn. Thay vì bám víu vào chúng, đây là lúc cộng đồng và bên thứ ba tạo ra các DLL/COM/ADD-IN hiện đại — ví dụ: COM DLL viết bằng Delphi 12, .NET, hoặc C++ — để thay thế toàn diện chức năng Regex + FileSystem và hơn thế nữa.
Vì sao nên “khai tử”
- Cổ lỗ sĩ: Thiết kế từ cuối thập niên 90 — không hỗ trợ các tính năng hiện đại (ví dụ regex nâng cao, Unicode full, performance tuning).
- Không được cập nhật: Microsoft đã deprecate VBScript; các bản vá/tiện ích mới sẽ không ưu tiên cho những thư viện này.
- Rủi ro bảo mật: Script runtime từng là vector cho nhiều lỗ hổng (CVE). Giảm diện tích tấn công là hợp lý.
- Không linh hoạt: Kiến trúc COM cũ, khó tích hợp vào hệ sinh thái hiện đại (xử lý 64-bit, async, multi-thread).
- Giam chân sáng tạo: Khó mở rộng cho tính năng mới; phải phụ thuộc Microsoft để sửa lỗi.
Ảnh hưởng với hệ sinh thái VBA / Office
- Code cũ dùng Scripting.Dictionary, FileSystemObject, TextStream, VBScript.RegExp có thể vận hành kém ổn định trên Windows/Office đời mới.
- Người dùng cuối có thể gặp lỗi “ActiveX component can’t create object” khi Windows không còn đăng ký các DLL này.
- Các dự án lâu dài nên tránh phụ thuộc vào scrrun.dll/vbscript.dll.
Xu hướng thay thế (đúng — và bền)
- COM DLL do bên thứ ba / team nội bộ phát triển
- Viết wrapper hiện đại cung cấp: Regex, FileSystem, Dictionary, IO…
- Ngôn ngữ: Delphi 12, C++ (WinAPI/PCRE2), C# (.NET COM Interop).
- Lợi ích: tương thích VBA qua CreateObject, hỗ trợ 64-bit, kiểm soát được security và updates.
- Add-in / XLL / XLAM cho Excel
- Bao gói chức năng dưới dạng add-in → dễ triển khai, cập nhật và phân phối.
- Dùng .NET qua COM Interop hoặc .NET 6/7/8 hosting
- Regex mạnh mẽ (System.Text.RegularExpressions), thao tác file hiện đại, async IO.
- Thư viện native (C/C++)
- Hiệu năng cao, dễ đóng gói cho môi trường enterprise.
Tại sao
- Delphi 12 (RAD Studio) hỗ trợ nhanh cho việc tạo COM servers, build cho Win64 dễ dàng.
- Thư viện chuẩn cung cấp TFile, TDirectory, TPath và các thư viện regex mạnh (PCRE).
- Dễ wrap các API thành class COM (TComObject, TAutoObject) để VBA gọi bằng CreateObject("Vendor.Regex").
- Triển khai nhanh, footprint nhẹ, phù hợp cho dev chuyên nghiệp quen Windows-native.
Mẫu kiến trúc (ý tưởng) cho một “Modern Scripting Runtime”
Thư viện: ModernScripting.dll
- MyRegex (COM class)
- IsMatch(pattern As WideString, input As WideString) As Boolean
- Match(pattern, input) As Variant (trả về array/collection)
- Replace(pattern, input, repl) As WideString
- Split(pattern, input) As Variant
- MyFileSystem (COM class)
- ReadAllText(path As WideString) As WideString
- WriteAllText(path, content, overwrite As Boolean)
- GetFiles(path, mask, recursive As Boolean) As Variant
- FileExists(path) As Boolean, CreateFolder(path), DeleteFile(path)
- MyDictionary (COM class) — optional: hash map hiện đại
API design notes:
- Dùng BSTR/WideString cho Unicode.
- Trả SAFEARRAY(VARIANT) cho danh sách/collection để dễ dùng trong VBA.
- Cung cấp cả method sync + (nếu cần) async callback / event.
Ví dụ ngắn: cách VBA sẽ dùng (sau khi bạn build DLL)
Mã:
Dim rx As Object, fs As Object
Set rx = CreateObject("ModernScripting.MyRegex")
Set fs = CreateObject("ModernScripting.MyFileSystem")
If rx.IsMatch("\b\d{4}\b", "Mã: 2025") Then
MsgBox "Tìm thấy 4 chữ số!"
End If
Dim content As String
content = fs.ReadAllText("D:\logs\sample.txt")
MsgBox Left(content, 120)
Lộ trình di chuyển nhanh (practical migration roadmap)
- Inventory: liệt kê toàn bộ chỗ dùng Scripting.* và RegExp.
- Phân loại: đơn giản (InStr/Split/Like đủ), phức tạp (regex nâng cao, tệp lớn).
- Ưu tiên thay thế:
- Ngay: Replace RegExp bằng wrapper .NET/Delphi.
- Trung hạn: chuyển FSO → MyFileSystem (Delphi/WinAPI).
- Dài hạn: thay Dictionary bằng MyDictionary hoặc TCollections custom.
- Xây dựng wrapper: tạo COM DLL (Delphi 12) với interface rõ ràng.
- Chạy thử & roll-out: deploy DLL, test trên môi trường 32/64-bit, đóng gói installer.
- Tài liệu & mẫu: viết guide cho dev dùng API mới, cung cấp polyfills cho legacy.
Lợi ích khi xây dựng hệ sinh thái bên thứ ba
- Chủ động: bạn tự fix, nâng cấp, support theo nhu cầu.
- Bảo mật: giảm lỗ hổng do code cũ; có thể áp chính sách update nhanh.
- Tính năng: hỗ trợ regex hiện đại, Unicode, xử lý file nhanh, multi-threading…
- Tương lai: không phụ thuộc Microsoft; dễ port khi Office/Windows tiếp tục thay đổi.
Kết luận & kêu gọi hành động
Scripting Runtime và VBScript.RegExp từng rất hữu ích — nhưng đã đến lúc loại bỏ những thư viện “ọp ẹp” để nhường chỗ cho giải pháp hiện đại, an toàn và mở rộng. Nếu bạn là dev VBA/IT admin/team dev nội bộ, hãy:
- Không trì hoãn việc lên lộ trình thay thế scrrun.dll/vbscript.dll.
- Xây dựng hoặc chọn một COM DLL/ADD-IN hiện đại (Delphi 12 là một lựa chọn xuất sắc).
- Chuẩn hoá API để giảm chi phí bảo trì trong tổ chức.
Nếu bạn muốn, mình có thể tiếp tục và viết bài chi tiết hơn (bản web-ready HTML + meta, hoặc bản tiếng Việt/Anh chuẩn SEO), hoặc soạn mẫu project Delphi 12 (skeleton code) cho MyRegex + MyFileSystem để bạn bắt tay vào xây dựng luôn. Bạn muốn mình làm hướng nào tiếp theo?
Lần chỉnh sửa cuối: