Как получить уникальное число для каждого объекта в системе?
Уникальное число объекта := currentThreadId + Integer(Tobject(self));
только такая формула все равно вызывает дубли как этого избежать.
подойдет любой способ который сгенерирует уникальное число для текущего объекта. пробовал через AllocateHwnd - слишком долго работает при частых вызовах
вот мой файл:
1111111111
222222222222
333333
4444444
5555
- Заходит первый объект берет -
1111111111 - Записывает что он этой строкой управляет -
1111111111:1 - Делает запись в файл
1111111111:1
222222222222
333333
4444444
5555
- Заходит 2й берет свободное и файл становится таким:
1111111111:1
222222222222:2
333333
4444444
5555
- Дальше 1й вернет файлу управление, файл станет:
1111111111
222222222222:2
333333
4444444
5555
- Дальше 2й вернет файлу управление
1111111111
222222222222
333333
4444444
5555
Ответы (1 шт):
число нужно 32 битное желательно кто (какой объект) владеет одной из записью с общего файла
Навскидку, это число равно номеру записи из этого файла. Гарантированна уникальность, никаких коллизий, монотонность.
Далее, если нужно распределить записи по пулу объектов, можете просто последовательно это сделать (Объект 1й, 2й, 3й ... Nй, 1й, 2й, 3й ... Nй, 1й, 2й, 3й ... )