![]() |
Переменная цикла и UInt64
Типа Cardinal уже не хватает для переменной цикла, даже Int64 маловат будет, к тому же у меня не может быть отрицательного значения, поэтому лучше всего будет использование UInt64, но проблема в том, что и Int64 и UInt64 не являются ordinal типом, что несоответствует требованиям к переменной цикла. Городить длинную арифметику для сотен случаев не очень удобно, к тому же это лишнее процессорное время, а задача не такая легкая, чтобы на это тратить время.
|
novashdima, может расскажите изначальную задачу? Ну так, шутки ради, а то с "после пятницы" экстрасенсорика хромает.
|
novashdima, присоединяюсь к вопросу lxa85. Хотелось бы узнать для каких целей такие значения счётчика?
P.S. Помнится мне один преподаватель рассказывал, что есть сторонние библиотеки (на С), в которых реализована арифметика и соответственно процедуры создания/хранения больших чисел. Может и на Delphi подобные писали. Поищите. |
Попробуйте цикл while или repeat..until. В большинстве случаев ими можно заменить for.
|
В конце концов можно взять наше огромное число, взять максимум Int64, поделить и сделать 2 цикла один-в-одном и считать что нам нужно. Никакой сложной арифметики.
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Посмотрите, наверняка существуют функции возвращающие размер файла. В крайнем случае сделайте 2 функции работы с длинной файла, до 4Гб и более 4Гб с использование длинной арифметики. Ну или разбейте на 2-3 переменные, как подсказывает Delirium. Так ли нужна унификация функции, если она крайне негативно скажется на производительности программы? |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
В соседней ветке я спрашиваю о среде разработки Delphi, так как действительно не знаю, можно ли в ObjectInspector на Event-е написать вызов event-а формы. Конечно я могу сделать как всегда, создать процедуру обработки нужного мне event и оттуда вызвать event формы, но имхо это бредово, хотя я конечно не спорю с теми, кто создавал стандарты. В помощи не написано, можно ли в качестве обработчика указать другой Event, там только рассказывается как создать свой. Поэтому, если ВСЕ в данной ветке такие умные, то напишите, можно или нет и линк с документацией, где про это четко написано. И вообще, почему вы думаете, что длинная арифметика настолько сложная задача? При изучении паскаля после прохождения массивов даются задачи на длинную арифметику, ведь все, что нужно сделать, это пробежаться по входной строке, посимвольно занести в массив, потом если допустим надо умножить длинные числа, то просто перемножаем массивы с конца и заносим в третий массив, из массива потом в строку и выводим пользователю, дел на пару минут. |
Цитата:
Код:
while (!file.EndOfFile) do |
Цитата:
Код:
Delphi function ReadByte: Byte; virtual; |
Время: 09:44. |
Время: 09:44.
© OSzone.net 2001-