Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как работать со списками 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 аналогично...


Наверх

Титульная страница Поиск, карта сайта Написать письмо