Нет встроенного способа сделать это в Паскале. Исходя из вашего вопроса, я предполагаю, что ваши записи имеют только один номер. Я вижу два способа сделать это. Во-первых, если числа находятся в ограниченном диапазоне, скажем, от 1 до 1 000 000, настройте логический массив, скажем:
var InList : array[ 1 .. 1000000] of boolean;
Инициализировать его как false:
fillchar( InList, sizeof( InList), 0);
Затем просмотрите все свои записи и установите для соответствующего элемента значение true. Например, если значением первой записи является 123, то:
InList[ 123] := true; (but refer to your record to get the 123).
Затем, после того как вы просмотрели все свои записи, просмотрите InList и посчитайте количество истин:
count := 0;
for i := 1 to 1000000 do
if InList[ i] then inc( count);
Второй способ, который не зависит от значений из ограниченного набора, - это сначала отсортировать массив записей (используйте
хороший алгоритм сортировки, если у вас большое количество записей). Затем просмотрите список и посчитайте число следующим образом:
Предположим, у вас есть RecordList с записями NumberOfRecords.
сортировка RecordList
count := 1; // count the first one!
for i := 2 to NumberOfRecords do
if RecordList[ i] <> RecordList[ i - 1] then inc( count);