Помощь - Поиск - Пользователи - Календарь
Полная версия: Fillchar
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
2ral

Привет!
Кто знает, что такое fillchar? unsure.gif
Ozzя
Привет!
Я знаю!

Жду осмысленного вопроса.
2ral
Я хотел бы знать как она используется? что это за функция? для чего она? заранее спс
Malice
Цитата(2ral @ 30.10.2007 22:18) *

Я хотел бы знать как она используется? что это за функция? для чего она? заранее спс


procedure FillChar(var X; Count: Word; value);
Заполняет область памяти начиная с адреса переменой Х, значением value (байт), длиной - Count. Удобно использовать для обнуления массива или заполнения еще чего либо одним значением. Единственная тонкость - процедура не проверяет что конкретно заполняется, ее интересует только адрес откуда начать, чем и сколько заполнять. Поэтому такой вариант:
1.Var x: array [1..10] of real; или
2.Var x: array [1..10] of integer;
и
FillChar(X, SizeOf(x), 1);
не заполнит массивы единицами. В первом случае в связи с особенностями представления вещественных чисел в памяти будет хз что, во втором - числами 257 (старшее слово и младшее = 1).

2ral
А что если массив состаит из рекордов?

типо вот так:

type
point=record
i:integer;
b:boolean;
end;

var
ar:array [1..100] of point;



то тогда для заполнения интеджера нужно fillchar(ar.i,n,0), для буулена fillchar(ar.b,n,false) (возможно ли вообще заполнять буулеан? если нет то ответьте только как писать с интеджером) или как?

volvo
FillChar вообще заполняет Count последовательных байт памяти. Ты не можешь выборочно заполнять байты с помощью этой процедуры, только подряд. Можешь заполнить, например, так:

FillChar(ar, sizeof(ar), 0);


Поскольку Boolean(0) = False, то все поля i заполнятся нулями, а все поля b - значением False...
2ral
Значит весь массив можно заполнять только полностью и только одним значением? ясно. Всем спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.