Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2007, 11:05   #1
KLaiM
 
Регистрация: 05.06.2007
Сообщений: 4
По умолчанию Свой тип данных в Delphi - сверх длинные числа - хранение в переменных размером до 1 MB

А если конкретно, то мне необходим целочисленный тип данных, желатьльно чтобы значение могло быть и отрицательным, и положительным. Но самое главное - переменная этого типа должна занимать в памяти 1 Мб (это в идиале). Ну или 512 Кб на худой конец.
Как мне создать такой тип?
KLaiM вне форума Ответить с цитированием
Старый 12.06.2007, 12:32   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

O_o

А в переменную, которая занимает в памяти 512кб, влезет число 0 .. 256^524288, это ж все компы мира такое число не прожуют наверно. Не бывает такого типа, и не будет

Может имеется ввиду указатель? Или массив целых чисел?
пыщь

Последний раз редактировалось JTG; 12.06.2007 в 12:35.
JTG вне форума Ответить с цитированием
Старый 12.06.2007, 14:28   #3
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от KLaiM Посмотреть сообщение
...переменная этого типа должна занимать в памяти 1 Мб
Тип такой создать можно, например:
type
TVeryVeryLongType = packed array[0..262143] of Integer; // или of LongInt
var
V1, V2, V3: TVeryVeryLongType;

Вот только для обработки таких переменных, как "единого целого", а не как отдельных элементов массива, придется писать специальные процедуры. Обычно это оформляется как отдельный класс.
Но проще поискать уже готовые специальные библиотеки для работы с длинными числами (хотя я немного сомневаюсь, смогут они работать с такими длинннннннными).
Jeni вне форума Ответить с цитированием
Старый 12.06.2007, 14:39   #4
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Можно попытаться использовать тип String для оперативного хранения и спользования сверхдлинных чисел. Но, как правильно сказал товарищ Jeni, необходимы спец. процедуры для обработки.
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 12.06.2007, 16:03   #5
KLaiM
 
Регистрация: 05.06.2007
Сообщений: 4
По умолчанию

Jeni,
И как мне, например, поделить на 4 (к примеру) первый элемент этого массива-оченьоченьоченьбольшогочисла?
KLaiM вне форума Ответить с цитированием
Старый 12.06.2007, 16:13   #6
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Я же говорил, для этого потребуется использовать специальные и не слишком простые процедуры. Могу только дать ссылку (делюсь тем, что сам недавно получил):
http://wmate.ru/ebooks/cat54/

Там есть книга в формате *.pdf "Программирование в алгоритмах", автор Окулов, в ней рассматривается работа с длинными числами.
Если нужны готовые библиотеки - стоит почитать на том-же сайте или поискать в инете.
Jeni вне форума Ответить с цитированием
Старый 14.06.2007, 17:02   #7
KLaiM
 
Регистрация: 05.06.2007
Сообщений: 4
По умолчанию

Ребята, выручайте!
Каким образо мне считать N первых битов из файла и записать их в String?

P.S. Jeni, посмотрел книгу и понял, что рано мне ещё такую литературу читать =)
KLaiM вне форума Ответить с цитированием
Старый 14.06.2007, 17:17   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

http://narod.yandex.ru/cgi-bin/yandm...0=635255200&p=
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.06.2007, 22:40   #9
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
Каким образо мне считать N первых битов из файла и записать их в String?
А нельзя было сразу написать то, что вам надо?

Сколько N? 5,10, 1000000?

Код:
var buf:array[1..1024*1024]of byte;
count:longint;

...
BlockRead(f,buf,count);
Считали из файла 1 метр, а потом уже побитовые операции. Что такое count? - читайте справку к делфе.

P.S.: и длинные числа тут вовсе не причём.
zetrix вне форума Ответить с цитированием
Старый 16.06.2007, 09:13   #10
KLaiM
 
Регистрация: 05.06.2007
Сообщений: 4
По умолчанию

zetrix, благодарю.
P.S. Причем. Мне надо было представить информацию (1 Мб) в виде числа. Потом забил на это дело и решил брать по 4 байта. Чтоб в Cardinal помещалось.
KLaiM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать свой упакованный тип в C# Никки Общие вопросы .NET 1 25.10.2009 11:49
[Delphi] Комбинированный тип данных (записи) n01R Помощь студентам 2 17.12.2008 20:39
Как мне создать свой тип данных PilGrim Общие вопросы .NET 1 05.11.2008 19:12
Как наложить иконку с исходным размером 16х16 на битмап с размером 32х32? SkAndrew Мультимедиа в Delphi 1 26.04.2008 14:44
длинные числа molodzo Общие вопросы C/C++ 4 21.02.2008 12:46