![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Посмотрите текст плиз
BANick © (2003-02-07 21:32:00)propert:array [0..8] of Tprop;
tprop= record
name:pstring;
list:array of pstring;
end;
.......
setlength(propert[3].list,2);
getmem(propert[3].list[0],6);
propert[3].list[0]^:="False";
getmem(propert[3].list[1],5);
propert[3].list[1]^:="True";
//в propert[3].list[0] = (xxxxxxxx,"");???
//в propert[3].list[1]=(xxxxxxxx,"True");
getmem(propert[4].name,10);
propert[4].name^:="Номер слоя";
//в propert[3].list[1]=(xxxxxxxx,"Srue"); ?!?!?!?
jack128 (2003-02-07 22:50:00) [1]м-да... почитал чего я написал и ужаснулся
jack128 (2003-02-07 22:48:00) [2]Строка это указатель так что размер record"а(ну же все таки на паскале пишем :))) и так постоянный(не говоря о том что дин масасив это тоже указатель)
насчет new : это процедура выделяет память под string
а под символы строки память автоматически выделяется
var s : string;//вместо статич. объявления переменной ты
пишешь New(pstring);
begin
GetMem(s,4);// Ошибка
s := "Мама";// тут автоматом выделяется память под символы
end;
BANick (2003-02-07 22:17:00) [3]Мне нужно, чтобы размер структуры в которой этот массив, был постоянен, а строка меняет размер, поэтому мне не подойдет просто массив строк, а new тут использовать нельзя(нужно выделить память определенного размера)
jack128 (2003-02-07 21:40:00) [4]Посмотрел...
Я бы сделал так :
setlength(propert[3].list,2);
New(propert[3].list[0]);
propert[3].list[0]^:="False";
New(propert[3].list[1]);
propert[3].list[1]^:="True";
Но ты подумай : нужен ли тебе массив указателей на строки
Может проще просто массив строк?