![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работать со списками List и StrListEx?
M5 © (2004-03-15 09:53:00)Подскажите, как работать (дайте пример) со списками List и StrListEx. Нужно создание, добавление/удаление пункта, доступ к пункту, освобождение памяти от списка. Мои переменные MyList и MyStrListEx.
M5 (2004-03-29 10:01:00) [1]Спасибо, немного разобрался. По крайней мере, сбоев уже нет.
Gandalf (2004-03-25 09:26:00) [2]1) На все вопросы про память - открываем Диспетчер задач и смотрим что у нас твориться - там много через есть и потоки и утечки и т.п. и т.д.
2)
>MyDirList:=NIL;
>MyDirList.Free;
Совсем наооборот надо делать.
MyDirList.Free;
MyDirList:=Nil; // Это строка на любителя
Владимир Кладов (2004-03-24 22:13:00) [3]NIL.Free не будет работать. Может, зря в программисты подались? Сорри...
M5 (2004-03-24 18:39:00) [4]Если кто-то знает, хотя бы более-менее, на каком этапе память выделяется и какими кусками и как снять вылетание проги при нехватке памяти и вернуть память, подскажите, а то все молчат.
M5 (2004-03-21 10:29:00) [5]Посмотрел FAQ, но не нашел многого, т.к. создатели КОЛ почему-то не сильно заботятся о совмещении КОЛ с VCL и целый ряд имен, функций, полей, методов не совпадают или вовсе отсутствуют. Справка же самого КОЛ просто не выдерживает никакой критики. Поэтому надежда на знающих людей и их ответы на такие вопросы в Д5:
1. Что происходит с памятью (на сколько память уменьшается и уменьшается ли) при
var MyStrListEx: PStrListEx;
MyStrListEx:=NewStrListEx;
или уменьшается только при
MyStrListEx.AddObject(MyAnsiStr,MyInteger);
2. На сколько память уменьшается при добавлении анси-строки (строки разной длины) и целого
MyStrListEx.AddObject(MyAnsiStr,MyInteger);
и надо ли делать при каждом добавлении проверку
try
MyStrListEx.AddObject(MyAnsiStr,MyInteger);
except
on EOutOfMemory do MessageDlg('Нет памяти',mtWarning,[mbOK],0);
end;
или достаточно только раз при
try
MyStrListEx:=NewStrListEx;
except
on EOutOfMemory do MessageDlg('Нет памяти',mtWarning,[mbOK],0);
end;
или вообще не надо?
3. Правильно ли, что память для списка файлов надо выделять так?
var MyDirList: pDirList;
MyDirList:= NewDirList ('C:\','*.*',FILE_ATTRIBUTE_NORMAL);
И как вернуть память назад системе? Достаточно ли выйти из процедуры, где память была выделена и система сама освободит память или надо делать
MyDirList:=NIL;
MyDirList.Free;
или еще что?
SPeller (2004-03-20 00:43:00) [6]Такого свойства нет. Вручную самому придется делать прверку. Это всего лишь на одну строчку больше.
А вообще, RTFM. Для тебя там очень много полезного. Радуйся что фак ещё не сильно большой.
M5 (2004-03-19 17:45:00) [7]Я прочел, что в списке (н-р, строк) можно как-то задать, что при добавлении аналогичной строки (какая уже есть в списке) она будет или не будет добавляться. Дайте пример как это свойство устанавливать/сбрасывать.
Gandalf (2004-03-19 10:15:00) [8]Не понял?!
M5 (2004-03-17 18:16:00) [9]И еще дайте пример как задать, что список может/не может содержать дубликаты.
Gandalf (2004-03-15 18:03:00) [10]PList
M5 (2004-03-15 17:55:00) [11]Спасибо, а как объявить? Var MyStrList: TStrListEx или PStrListEx?
M5 (2004-03-15 17:53:00) [12]Спасибо, а как объявить? Var MyList: TList или PList?
Gandalf (2004-03-15 10:48:00) [13]Это пример:
MyStrListEx:=NewStrList;
MyStrListEx.Add('Tra-la-la')
MyStrListEx.Insert(5,'demo line');
MyStrListEx.Delete(4);
tmpstr:=MyStrListEx.Items[3];
MyStrListEx.Free;
с PList аналогично...