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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2009, 10:01   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Сообщение Для чего нужен Packed?

Для чего нужен Packed,
я только замечал одну вещь когда создаеш большую структуру и ей пытаешся прочитать файл то он читается ощибочно а потом вставляещ
packed record и все нормальна,пользовался TFileStream;
VintProg вне форума Ответить с цитированием
Старый 31.07.2009, 10:05   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Ключевое слово Packed говорит Delphi минимизировать память, взятую определенным объектом.

Обычно, сложные типы данных, такие как записи, имеют свои элементы по 2, 4 или 8 байта, соответствующие типам данных. Например, поле Word было бы 4-байтовое.

Записи также дополняются, для гарантии, что они закончены, 4-х байтовой границей.

Упаковка отменяет это, сжимая данные в наименьшую память, хотя с последующим уменьшенным доступом выполнения.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 31.07.2009, 10:37   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Дополнение - работает не везде. Пример - строки, соответственно структуры содержащие строки и пр. Можно применять к множествам, массивам (кажись тоже не ко всем), записям, объявлениям класса (естественно без строк) и файловым типам (с ограничениями).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 31.07.2009, 10:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Для чего нужен Packed,
По-моему это аттавизм... Как по мне не стоит им пользоваться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2009, 11:41   #5
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Но фирма Borland пользовалась???

Также хочу заметить что он использовался и в массивах?

Последний раз редактировалось Stilet; 31.07.2009 в 13:45.
VintProg вне форума Ответить с цитированием
Старый 31.07.2009, 13:21   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Да и да. Сейчас, это уже по сути не важно, прирост в производительности особого значения при нынешних скоростях значения не имет. Экономия памяти при нынешних объемах памяти значения не имеет.

Цитата:
Но фирма Borland пользовалась???
К чему это?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 03.08.2009, 09:20   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
По-моему это аттавизм... Как по мне не стоит им пользоваться.
Да нет без него не обойтись я узнал об этом на примерах,
вот пример:

Код:
type
 TStuct = record
   name : array[0..25] of char;
   size : integer;
   index : integer;
 end;
возьмем измерим размер структуры функцией SizeOf(TStuct);
получим 36 - байтов
Код:
type
 TStuct = packed record
   name : array[0..25] of char;
   size : integer;
   index : integer;
 end;
теперь правильно 34 - байта

вывод:
и за не правильного размера структуры можно ошибку сделать например при чтения даных из файла,
кто са мной согласен?
VintProg вне форума Ответить с цитированием
Старый 03.08.2009, 09:45   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
кто са мной согласен?
Я. Попробуй записать и считать данные из файла. ошибки будут?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2009, 09:54   #9
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Stilet
Да пробовал уже, в виду ошибок я имею не правильное чтение,
то и есть читает не все либо не так.
VintProg вне форума Ответить с цитированием
Старый 03.08.2009, 11:02   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А я тебе воттакой пример приведу:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
 TStuct = record
   name : string[50];
   size : integer;
   index : integer;
 end;
 var f:file of TStuct;
  w:TStuct;

  i:integer;
begin
 assignFile(f,'f');rewrite(f);
 for i:=0 to 10 do begin
  with w do begin
   name:=TimeTostr(time);
   size:=i*2;
   index:=i;
  end;
  write(f,w);
 end;
 //*************************************************
 closefile(f);reset(f);
 while not eof(f) do begin
  read(f,w);
  with w do begin
   writeln(name,#9,size,#9,index);
  end;
 end;
 closefile(f);
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Попробуй с скажи правильно ли он работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужен этот скрипт belvision JavaScript, Ajax 4 20.02.2013 15:16
Для чего используют typedef prikolist Общие вопросы C/C++ 17 16.04.2009 15:36
Для чего код в классе ? Evgenijj Общие вопросы C/C++ 3 09.03.2009 14:12
Для чего нужен мобильник? Altera Свободное общение 53 19.08.2008 21:12
Для чего вы программируете? Elefanter Свободное общение 14 17.02.2008 21:54