• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как обойти ограничение на кол-во элементов в массиве?

  • Автор темы Karlosss
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Karlosss

Всем привет!
Тема про массивы. Идея такая. Есть некие текстовые файлы некой системы , которые я разбираю построково. В каждой строке есть запись, которая может повторяться в других строках. Задача. Надо посчитать уникальное кол-во таких записей в этих строках. То есть такая запись может повторится во всех строках 10,20.. и т.д. раз, но мы считаем как 1 раз.
Сделал через массивы. Но в массиве есть ограничение на кол-во элементов 32000.
Помогите обойти это ограничение. Спасибо.

Dim x() As String
Dim xx As Long
--------------------
Redim Preserve x(xx)
x(xx)=mm – добавляем в массив след. Элемент- запись из строки
xx=xx+1 - счетчик поднимаем на +1
-------------------
resultArr = Arrayunique(x,0) - массив уникальных значений
oo=Ubound(resultArr) - показывает уникальное кол-во записей в массиве.
 
A

Akupaka

1) не 32'000, если мне память не изменяет, а в пределах integer: -32'768 ... 32'767 (включительно)
2) можно использовать массивы многомерные, например, массив одномерный 65'535 элементов, то двумерный 65'535*65'535 = 4'294'836'225 элементов

Код:
	-32'768	:	-32'768 ... 32'767
-32'767	:	-32'768 ... 32'767
...
0		:	-32'768 ... 32'767
...
32'766	:	-32'768 ... 32'767
32'767	:	-32'768 ... 32'767
 
K

Karlosss

1) не 32'000, если мне память не изменяет, а в пределах integer: -32'768 ... 32'767 (включительно)
2) можно использовать массивы многомерные, например, массив одномерный 65'535 элементов, то двумерный 65'535*65'535 = 4'294'836'225 элементов

Код:
	-32'768	:	-32'768 ... 32'767
-32'767	:	-32'768 ... 32'767
...
0		:	-32'768 ... 32'767
...
32'766	:	-32'768 ... 32'767
32'767	:	-32'768 ... 32'767

1) Согласен, я просто не стал точно писать.
2) Думал об этом , но практически не знаю как это реализовать и потом не знаю так же как найти в двумерном (например) массиве кол-во уникальных элементов.

Щас покурю функцию list , может что и выйдет
 
A

Akupaka

Щас покурю функцию list
Это не функция, а структурный тип данных.

Думал об этом , но практически не знаю как это реализовать и потом не знаю так же как найти в двумерном (например) массиве кол-во уникальных элементов
Да не особо сложнее, можно свой класс нарисовать, который позволит работать с таким массивом, как с одномерным, с размерностью в Long.
 
K

Karlosss

:eek:fftop: а зачем оно в лотусях делается?

Дык база то в лотусе писана

Добавлено:
Это не функция, а структурный тип данных.


Да не особо сложнее, можно свой класс нарисовать, который позволит работать с таким массивом, как с одномерным, с размерностью в Long.



Если бы я мог рисовать классы в лотусе я бы такие глупые вопросы на форуме не писал
 
T

TIA

При большом объёме анализируемых данных ни List, ни массив, ни какой другой способ, запоминающий в памяти почти всё содержимое файлов не годится. Гораздо надёжнее работать непосредственно с файлом. Например так. Через первый файловый указатель считываем очередную строку. Вторым указателем проходим от начала файла до текущей позиции первого в поисках дубля. Как только нашли, поиск прерываем и счётчик не увеличиваем. Если не нашли, значит строка встретилась впервые счётчик увеличиваем.

Так мы сможем обработать любой по объёму файл. Количество проходов по файлу конечно увеличивается многократно, но не факт что будет медленнее, т.к. система не уйдёт в своп.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
для "упрощения" есть класс
позволяет читать и "откатывать" позицию в файле
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!