![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем. У меня такая проблема: нужно сгенерировать и записать в файл диапазон телефонных номеров. Число после префикса выходит за рамки LongInt. Я попробовал представить число в виде массива цифр, только не очень работает..
var sedit4 - в этом поле записано имя создаваемого текстового файла, sedit2 - нижняя граница диапазона; sedit3 - верхняя граница диапазона, sedit1 - префикс номера, например, +7 для России, он будет одинаковым для каждого номера из диапазона. Мой код выдаёт AV даже при первой записи в файл.. Надеюсь, понятно обрисовал задачу. Наверное, можно было это сделать при помощи "длинной арифметики".. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
А зачем вообще числа? Почему номер нельзя представлять строкой? Мне кажется, это естественнее. Телефонные номера никто же не складывает и не возводит в квадрат)). А ели нужно сравнение - пожалуйста, оно есть.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Число после префикса выходит за рамки LongInt. Хотелось бы заметить, что LongInt - далеко не самый емкий целочисленный тип в Дельфи, есть еще Cardinal (который по размеру - такой же, как LongInt, но без возможности хранения отрицательных чисел, есть UInt64 - от 0 до 18446744073709551616) |
Unconnected |
![]()
Сообщение
#4
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Хотелось бы заметить, что LongInt - далеко не самый емкий целочисленный тип в Дельфи, есть еще Cardinal (который по размеру - такой же, как LongInt, но без возможности хранения отрицательных чисел, есть UInt64 - от 0 до 18446744073709551616) Во, спасибо, а я велосипед изобретал:) -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
И я опять в замешательстве. Следующий код:
var diap1,diap2:cardinal; делает странные вещи. Поле form1.sedit5.text содержит значение +79030000000, трассировка вышеприведённого кода даже подтверждает это. Но тем не менее переменной diap1 всегда присваивается вместо 9030000000 значение 444208773! Что за феномен, кто-нибудь знает? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
9 миллиардов - очень много для Cardinal, он держит до 232, а это чуть больше 4 млрд... Используй Int64:
var diap1, diap2: int64; |
Unconnected |
![]()
Сообщение
#7
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Помогло:) А если бы я внимательней прочитал пост №3, то помогло бы ещё раньше))
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 9:43 |