• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы 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 933
609
BIT
178
для "упрощения" есть класс
позволяет читать и "откатывать" позицию в файле
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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