Форум «Всё о Паскале» _ Теоретические вопросы _ Fillchar
Автор: 2ral 29.10.2007 20:38
Привет! Кто знает, что такое fillchar?
Автор: Ozzя 30.10.2007 13:03
Привет! Я знаю!
Жду осмысленного вопроса.
Автор: 2ral 31.10.2007 2:18
Я хотел бы знать как она используется? что это за функция? для чего она? заранее спс
Автор: Malice 31.10.2007 3:05
Цитата(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 8.11.2007 1:05
А что если массив состаит из рекордов?
типо вот так:
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 8.11.2007 1:31
FillChar вообще заполняет Count последовательных байт памяти. Ты не можешь выборочно заполнять байты с помощью этой процедуры, только подряд. Можешь заполнить, например, так:
FillChar(ar, sizeof(ar), 0);
Поскольку Boolean(0) = False, то все поля i заполнятся нулями, а все поля b - значением False...
Автор: 2ral 11.11.2007 3:09
Значит весь массив можно заполнять только полностью и только одним значением? ясно. Всем спасибо!