Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
ВнизПочему массивы Boolean сохраняются на диск как одно Найти похожие ветки
← →
Кен (2003-11-12 07:04) [0]значение - один байт ?
Как мне сохранить, чтобы было одно значение - один бит ?
var
Boo1: array[0..100000] of Boolean;
begin
with TFileStream.Create("_array.dat", fmCreate or fmOpenWrite) do begin
WriteBuffer(Boo1, SizeOf(Boo1));
Free;
end;
← →
Hooch (2003-11-12 07:19) [1]прикольно :-)
← →
Hooch (2003-11-12 07:26) [2]попробуй так
WriteBuffer(Boo1[0], Length(Boo1)*SizeOf(Boolean));
← →
default (2003-11-12 07:27) [3]"Как мне сохранить, чтобы было одно значение - один бит ?"
думай)это можно)не заставлять же весь форум за тебя думать(
← →
Hooch (2003-11-12 07:28) [4]или я вопрос не так понял ?
← →
default (2003-11-12 07:28) [5]можешь кстати юзать множества...
← →
Юрий Зотов (2003-11-12 07:30) [6]> Кен
Подсказка - битовые (флаговые) операции. AND, OR, NOT.
← →
ЮЮ (2003-11-12 07:30) [7]Меньше одного байта не запишешь.
Вывод:
1) при записи "сжимать" 8 элементов в 1 байт
2) использовать другую структуру для хранения массива Boolean
← →
default (2003-11-12 07:31) [8]ЮЮ © (12.11.03 07:30) [7]
ясно, что уже речи о типе Boolean идти не будет...
← →
ЮЮ (2003-11-12 07:53) [9]Если не жалко 100 001 байт памяти, то чего их жалеть на диске? :-)
← →
default (2003-11-12 08:53) [10]класс TBits ещё есть)
← →
Кен (2003-11-14 02:16) [11]В общем оказалось, что Дельфи хранит все булены как байты. Это хорошо видно в отладчике. И миллион буленов - это мегабайт, а не 128 кб.
Получается, что фактически Дельфи не умеет работать с битовыми переменными. Она только может представлять байты как биты, что не особо хорошо.
Видно действительно предётся использовать and xor shl и прочее.
Прямо ассемблер какой-то.
По этому поводу ещё вопрос возник.
Longword 0..4294967295 unsigned 32-bit
и
Longint -2147483648..2147483647 signed 32-bit
- это одно и тоже ? При работе с битами Longint не возникает ошибок из-за минуса ?
А ещё есть Int64 и ММХ, с которым я не знаю как работать. Вот и вопрос, а что из всего этого быстрее работает с точки зрения процессора ? Мне то всё равно как писать, а процессору будет приятно.
← →
default (2003-11-14 02:19) [12]класс TBits говорю глянь
← →
Suntechnic (2003-11-14 02:27) [13]>Кен ©
По этому поводу ещё вопрос возник.
Longword 0..4294967295 unsigned 32-bit
и
Longint -2147483648..2147483647 signed 32-bit
- это одно и тоже ? При работе с битами Longint не возникает ошибок из-за минуса ?
У кого как :) А вообще ты бы почитал книжечек что ли на досуге, прежде, чем с такими вопросами на форуме выступать.
← →
Юрий Зотов (2003-11-14 07:02) [14]> Кен © (14.11.03 02:16) [11]
> Получается, что фактически Дельфи не умеет работать с битовыми
> переменными. Она только может представлять байты как биты, что
> не особо хорошо.
Можете назвать хоть язык высокого уровня, который позволяет работать напрямую с битами? Или можете назвать хоть один ассемблер, который позволяет это делать? Для платформы x86, например?
Во всех ЯВУ (и даже в ассемблерах) битовые операции делаются именно через AND, OR, NOT, XOR. И, надо полагать, неспроста? Видимо, для этого есть какие-то причины?
Открою Вам страшную тайну. Каждый CPU имеет определенный набор машинных команд - причем он умеет исполнять только их и ничего другого. И если в этом наборе нет команд для прямой работы с битами (кроме тех самых AND, OR, NOT, XOR), то, естественно, никакой компилятор и никакой ассемблер Вам их не предоставят. Поскольку взять их просто негде. Можно только написать реализующую их библиотеку функций - но в этом нет никакого смысла, потому что в ней будут сидеть те же самые AND, OR, NOT, XOR.
Так что дело тут не в Delphi, а недовольство Ваше, мягко говоря, необосновано. Чем оно вызвано - говорить, вероятно, не стоит, и без слов понятно.
Поскольку подобные высказывания наблюдаются совсем не впервые, позволю себе совет. Когда Вам в следующий раз что-то в Delphi (и не только в Delphi) покажется плохим, неудобным и т.д., то, прежде чем высказываться по этому поводу на публике, задумайтесь - а почему же разработчики сделали именно так, а не иначе? Вероятно, ведь они не дураки, а их знания и квалификация очень высоки, верно? И если они сделали именно так, то, может, для это были какие-то причины, которых Вы просто не понимаете?
А то, извините, смешно читать такую "критику". Некая басня Крылова сразу вспоминается.
← →
Slym (2003-11-14 07:17) [15]Ты сохраняешь уразатель на Boo1 (4 байта)!!!
← →
Юрий Зотов (2003-11-14 08:09) [16]> Slym © (14.11.03 07:17) [15]
Уверены? Если да, то зря - массив статический.
← →
ЮЮ (2003-11-14 09:40) [17]>И миллион буленов - это мегабайт, а не 128 кб.
Миллион рисуют с шестью нулями, а не с пятью
Когда не хватает памяти, начинают думать над алгоритмом.
← →
default (2003-11-14 22:26) [18]а причина скорее в том, что единица адресуемой информации есть байт, а не бит, поэтому и нет команд работы напрямую с битами, а не потому, что в процессоре ПРОСТО нет таких команд(ой какой неполный набор команд кто-то скажет), а почему именно такая единица адресации?точно не могу сказать, или бит - это слишком мало или какие-то архитектурные причины, скорее первое
← →
Кен (2003-11-15 01:41) [19]
> ЮЮ © (14.11.03 09:40) [17]
> >И миллион буленов - это мегабайт, а не 128 кб.
> Миллион рисуют с шестью нулями, а не с пятью
Один байт - 8 битов.
> default © (14.11.03 22:26) [18]
> а причина скорее в том, что единица адресуемой информации
> есть байт, а не бит, поэтому и нет команд работы напрямую
> с битами,
На то и существуют языки высокого уровня, чтобы представлять информамцию так, как удобно человеку.
> default © (14.11.03 02:19) [12]
> класс TBits говорю глянь
Руль, руль.
← →
default (2003-11-15 01:46) [20]Кен © (15.11.03 01:41) [19]
вот тебе и написали класс TBits, или ты хотел бы, чтобы тебе давали право объявлять переменные размеров в бит?вот я и говорю - всё равно пришлось бы для них байт выделять, что мы и наблюдаем
← →
default (2003-11-15 01:49) [21]хотя нет - можно было бы так сделать...
← →
sniknik (2003-11-15 02:15) [22]Удалено модератором
Примечание: Без мата
← →
Кен (2003-11-15 02:35) [23]Удалено модератором
Примечание: Оскорбление участников
← →
sniknik (2003-11-15 02:49) [24]Удалено модератором
Примечание: Без мата
← →
Johnmen (2003-11-15 02:52) [25]>Кен © (15.11.03 02:35)
Вах !!! А зачем тогда лезешь сюда с ламерскими вопросами ? Видимо, все-таки, хочешь пообщаться...:)
← →
Кен (2003-11-15 03:01) [26]
> sniknik © (15.11.03 02:49) [24]
> кааакой обидчивый. а ведь не по делу.
>> Я не хочу с вами общаться.
примем к сведению.
Сорри. Забыл указать кому. Это было исключительно Юрию Зотову. Я ему это уже говорил одныжды, но он похоже забыл.
← →
Кен (2003-11-15 03:13) [27]
> Johnmen © (15.11.03 02:52) [25]
> >Кен © (15.11.03 02:35)
>
> Вах !!! А зачем тогда лезешь сюда с ламерскими вопросами
> ? Видимо, все-таки, хочешь пообщаться...:)
На форум как раз и ходят в первую очередь те у кого есть вопросы.
И ходят отнюдь не для того, чтобы выслушать какие они идиоты. Или советы типа иди ты в Гугль.
← →
Zacho (2003-11-15 03:36) [28]
> Кен © (15.11.03 03:13) [27]
А зря ты не хочешь с ЮЗ общаться. В его "нравоучениях" содержится масса полезной информации. А "идиотом" тебя вроде бы никто не называл.
А вообще-то, на твой изначальный вопрос тебе уже ответили.
P.S. Признайся все-таки, если не секрет, зачем в программе 100000 переменных типа boolean ? К тому же таких, которые надо сохранять. А может ты просто какой-то неправильный способ выбрал для решения своей задачи ?
← →
Кен (2003-11-15 03:36) [29]Ладно. Возможно я чуток и погорячился. Но просто человек немного достал, своими наездами, баснями Крылова и прочим базаром не про Дельфи.
← →
Кен (2003-11-15 03:59) [30]
> Zacho © (15.11.03 03:36) [28]
>
> > Кен © (15.11.03 03:13) [27]
>
> А зря ты не хочешь с ЮЗ общаться. В его "нравоучениях" содержится
> масса полезной информации. А "идиотом" тебя вроде бы никто
> не называл.
А я ТАК и не говорил.
> Признайся все-таки, если не секрет, зачем в программе 100000
> переменных типа boolean ? К тому же таких, которые надо
> сохранять. А может ты просто какой-то неправильный способ
> выбрал для решения своей задачи ?
Там из большой базы выбираются нужные строчки. Исходя из одна строка - один boolean. Если строка удовлетворяет условию, то значение ставится в true, если нет, то false. Всё это скидывается в файл на диск.
← →
Zacho (2003-11-15 04:02) [31]
> Кен © (15.11.03 03:59) [30]
Любопытно. Опиши подробнее, зачем это ? То есть, зачем это скидывать на диск ? Что дальше с этим делается ?
← →
Кен (2003-11-15 04:27) [32]
> Zacho © (15.11.03 04:02) [31]
>
> > Кен © (15.11.03 03:59) [30]
>
> Любопытно. Опиши подробнее, зачем это ? То есть, зачем это
> скидывать на диск ? Что дальше с этим делается ?
Другая программа читает этот индексный файл(или любой другой) и по нему работает только с помеченными строчками.
← →
Юрий Зотов (2003-11-15 06:37) [33]> Кен © (15.11.03 03:01) [26]
Сообщаю Вам, что в соответствии с правилами этого форума я буду читать все, что мне захочется и отвечать так, как мне вздумается. Тоже в пределах правил, разумеется. Пока что отвечаю так: если не хотите, слышать как смеются над Вашими глупостями, то не говорите их. Например, если бы к своему постингу [11] Вы добавили вступительное слово "почему", то и ответ был бы несколько другим.
К несчастью, то ж бывает у людей,
Как ни полезна вешь, цены не зная ей
Невежда про нее все к худу клонит,
А ежели невежда познатней -
Так он ее еще и гонит.
Это и есть та самая басня. "Мартышка и очки" называется. Рекомендуется к прочтению. Наряду с прочтением хотя бы одной книги по основам программирования.
← →
Palladin (2003-11-15 06:43) [34]Ничем не оправданное чуточное погаречение. Это раз.
Не описана проблема - это два.
> Я тоже позволю себе совет, засуньте свой совет и свои нравоученя
> себе куда поглубже, дабы не быть посланным. И не читайте
> вы мои постинги, и не отвечайте на них. Я не хочу с вами
> общаться
Иди в приват.
Интересно что было бы если бы ты на улице крикнул свой вопрос и ходил бы потом каждому услышавшему объяснял на ушко, что не попшел бы он куда подальше. И не стоит так категорично относится к высказываниям людей которые побольше твоего смыслят в системе, а вот стоит все таки попытатся понять, что они добиваются своими словами донести до тебя. Ибо если этого не сделать, то к сожалению окажешься сам гораздо глубже чем когда то советовал оказатся другому.
← →
Palladin (2003-11-15 06:45) [35]
> Не описана проблема - это два
Вернее "проблема" описана, но я не вижу в ней проблемы.
Стоит задать конкретный вопрос прежде чем надеятся получить конкретный ответ или совет.
← →
sniknik (2003-11-15 12:10) [36]> Это было исключительно Юрию Зотову
то к кому именно "нелюбовь" понятно по тем строкам на которые комментарии. (но общатся все одно со всеми отказался)
---
исключительный человек ЮЗ. ;о))))
← →
app (2003-11-15 12:26) [37]Какой то сплошной орех, при том на протяжении последних месяцев.
Ветку хакрываю, так как она в очередной раз приняла нежелательный характер, впервую очередь со стороны автора.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.009 c