Вот такой код
FillChar(data.FArray,xcells*ycells,0);
Куда произойдет запись xcells*ycells нолей?
Barmutik
27:11:2005, 08:16
Начнёт с Data.FArray ... после того как заполнит размер.. полезет в память... в лучшем случае потрёт значения .. в худшем случае всё упадёт ..
Да и вообще с FillChar надо быть осторожным .. особенно если в структурах есть строки ...
так, я неправильно выразился, естественно, вы меня неправильно поняли
FArray єто не строка, а указатель на массив
type PBoolArray=^TboolArray;
TBoolArray=array[0..MaxInt-1] of boolean;
Вот так
А вопрос таков
если я напишу вот так
GetMem(Farray,100);
FillChar(FArray,100,0);
и Вот так:
GetMem(Farray,100);
FillChar(FArray^,100,0);
Во втором случае запись будет происходить с начала массива(элемента [0])
А в первом?
Barmutik
27:11:2005, 11:11
Во втором случае вы начинаете заполнять начиная с адреса в переменной FArray
А в первом случае Вы просто потрёте 4 байта указателя FArray и 96 байтов дальше от этой переменной в памяти... последствия сами поинмаете какие будут ..
З.Ы: Оригинальный способ для массива булеанов