Вопрос теоретический (без файла): о расширении массива, заполненного данными, по вертикали.
Нередко бывает, что размер массива задать сразу не представляется возможным - неизвестен объем информации.
По горизонтали понятно - ReDim Preserve... [добавить_"столбцы"]. По вертикали - не пройдет фокус.
Пример: извлечение данных из множества папок с множеством файлов.
Вариант1. Можно, конечно, пробежаться по всем файлам, посчитать выгрузку... Не оптимально.
Вариант2. Создать заведомо большущий массив. Плохой вариант:
а) можно промахнуться и до еще большего размера данных не дотянуть;
б) можно очень сильно "перетянуть" (а мы же за оптимизацию!).
Вариант3. Создать массив с жестким размером и периодически, при заполнении, выгружать данные.
Немного лучше, но нужно отслеживать и последнюю строку в уже заполненной таблице, и заполняемость массива, сбрасывая периодически счетчик "строк" массива.
Вариант4. Создаем "лежачий" массив: по горизонтали пишем "строки", по вертикали "столбцы". Работаем с ReDim Preserve. Перед выгрузкой циклом "ставим на ноги".
Такой способ неплохо работает при небольшом массиве (например, отслеживание и регистрация ошибок извлечения). На большом по скорости не проверял, но, в любом случае, присутствует дополнительная обработка массива.
Может, есть еще пути решения? Именно с массивами. Dictionary не предлагать. Не умею.
Нередко бывает, что размер массива задать сразу не представляется возможным - неизвестен объем информации.
По горизонтали понятно - ReDim Preserve... [добавить_"столбцы"]. По вертикали - не пройдет фокус.
Пример: извлечение данных из множества папок с множеством файлов.
Вариант1. Можно, конечно, пробежаться по всем файлам, посчитать выгрузку... Не оптимально.
Вариант2. Создать заведомо большущий массив. Плохой вариант:
а) можно промахнуться и до еще большего размера данных не дотянуть;
б) можно очень сильно "перетянуть" (а мы же за оптимизацию!).
Вариант3. Создать массив с жестким размером и периодически, при заполнении, выгружать данные.
Немного лучше, но нужно отслеживать и последнюю строку в уже заполненной таблице, и заполняемость массива, сбрасывая периодически счетчик "строк" массива.
Вариант4. Создаем "лежачий" массив: по горизонтали пишем "строки", по вертикали "столбцы". Работаем с ReDim Preserve. Перед выгрузкой циклом "ставим на ноги".
Такой способ неплохо работает при небольшом массиве (например, отслеживание и регистрация ошибок извлечения). На большом по скорости не проверял, но, в любом случае, присутствует дополнительная обработка массива.
Может, есть еще пути решения? Именно с массивами. Dictionary не предлагать. Не умею.