Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Fillchar

Автор: 2ral 29.10.2007 20:38


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

Автор: 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

Значит весь массив можно заполнять только полностью и только одним значением? ясно. Всем спасибо!