![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк-с в массивах [Delphi, Windows]
Solik © (2004-03-23 09:15:00)Проблема с безразмерными массивами.
Есть так:
type
TFolders = record
Files:PList;
FolderName:string[30];
Path:string[255];
InAll:boolean;
Edit:boolean;
end;
var
Data:array of TFolders;
в начале программы делаю SetLength(Data,xxx) и загружаю туда свои данные, в т.ч. и PList, а потом когда в определенный момент пытаюсь сделать
SetLength(Data,Length(Data)+1) - програма с треском вылетает
(по моему с номером ошибки 216)
Ничего понять не могу
KisaNetik (2004-03-25 11:30:00) [1]Я пробовал похожее, но вместо PList использовал свой тип и всё работало...
Type AStr=array of string;
А потом в TFolders можно при загрузке данных работать с ещё одним динамическим массивом...
Немного не так удобно как с PList, зато проверено на работоспособность...
Solik (2004-03-25 07:35:00) [2]Т.е. так:
type
TFolders = record
Files:array of TMyFileRecord;
FolderName:string[30];
Path:string[255];
InAll:boolean;
Edit:boolean;
end;
var
Data:array of TFolders;
В принципе сначала так и было, но мне не очень понравилось
savva (2004-03-23 18:07:00) [3]а вот так попробуй SetLength(Data,High(Data)+1)
а вообще, я бы не стал хранить в массиве указатель на объект (потому что не знаю, как мне потом это может повернуться). если тебе нужны имена файлов - то можно также сделать как динамические массивы.
mdw (2004-03-23 10:52:00) [4]Вроде должно работать.
Попробуй сделать packed record.
Ну или на крайняк, храни указатели на структуру, только небольшой геморой с выделением\освобождением памяти.