Có cách khá hữu hiệu nhưng hơi mất công chút. Thường thì không bỏ công làm.Không có cách nào. Ngoài ra khai báo dArr dư cũng có lý do: Phải giả định rằng số dòng kết quả nhiều đến mức gần bằng hoặc bằng dữ liệu gốc. Dữ liệu khác thì có thể ước lượng, có khi ít hơn nhiều, cũng có khi nhiều hơn cả gốc.
Dù gì thì cũng có giới hạn dư chứ không dư quá mức.
- Lâp một mảng cỡ tương đối
- Cứ mõi lần thêm dòng thì xét nếu khong đủ thì nới thêm. Có thể dùng On Error để bắt lỗi này.
- Nới thêm: copy qua mọt mảng mới, redim mảng cũ, copy trở lại.
- Lúc copy trở lại, dùng kỹ thuật memcopy của C. Windows có hàm API để làm chuyện này. Và vấn đề này đã được đề cập vài lần ởi GPE.
Cách khác, chỉ hữu hiệu cho dân chuyên tách code dài ra thành hàm con. Nói cách khác, là dân quen viết hàm con.
- Lập mảng cỡ tương đối. Mảng tĩnh cho nhanh
- Cứ mỗi lần thêm dòng thì xét nếu khong đủ thì chuyển qua mảng mới. Có thể dùng On Error để bắt lỗi này.
- Cách thức chuyển mảng:
- - Đặt một mảng Variant, khoảng 1000 phần tử
- - Copy mảng chính vào phần tử kế tiếp
- - Bây giờ có thể xài lại mảng chính (erase nếu cần, nhưng thường thì ta viết chồng lên nên không cần)
- Cuối cùng sẽ được một mảng chứa những mảng kết quả.