Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

Как работать со списками List и StrListEx?   Найти похожие ветки 

 
M5   (2004-03-15 09:53) [0]

Подскажите, как работать (дайте пример) со списками List и StrListEx. Нужно создание, добавление/удаление пункта, доступ к пункту, освобождение памяти от списка. Мои переменные MyList и MyStrListEx.


 
Gandalf ©   (2004-03-15 10:48) [1]

Это пример:

 MyStrListEx:=NewStrList;
 MyStrListEx.Add("Tra-la-la")
 MyStrListEx.Insert(5,"demo line");
 MyStrListEx.Delete(4);
 tmpstr:=MyStrListEx.Items[3];
 MyStrListEx.Free;


с PList аналогично...


 
M5   (2004-03-15 17:53) [2]

Спасибо, а как объявить? Var MyList: TList или PList?


 
M5   (2004-03-15 17:55) [3]

Спасибо, а как объявить? Var MyStrList: TStrListEx или PStrListEx?


 
Gandalf ©   (2004-03-15 18:03) [4]

PList


 
M5   (2004-03-17 18:16) [5]

И еще дайте пример как задать, что список может/не может содержать дубликаты.


 
Gandalf ©   (2004-03-19 10:15) [6]

Не понял?!


 
M5   (2004-03-19 17:45) [7]

Я прочел, что в списке (н-р, строк) можно как-то задать, что при добавлении аналогичной строки (какая уже есть в списке) она будет или не будет добавляться. Дайте пример как это свойство устанавливать/сбрасывать.


 
SPeller ©   (2004-03-20 00:43) [8]

Такого свойства нет. Вручную самому придется делать прверку. Это всего лишь на одну строчку больше.

А вообще, RTFM. Для тебя там очень много полезного. Радуйся что фак ещё не сильно большой.


 
M5   (2004-03-21 10:29) [9]

Посмотрел 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;

или еще что?


 
M5   (2004-03-24 18:39) [10]

Если кто-то знает, хотя бы более-менее, на каком этапе память выделяется и какими кусками и как снять вылетание проги при нехватке памяти и вернуть память, подскажите, а то все молчат.


 
Владимир Кладов   (2004-03-24 22:13) [11]

NIL.Free не будет работать. Может, зря в программисты подались? Сорри...


 
Gandalf ©   (2004-03-25 09:26) [12]

1) На все вопросы про память - открываем Диспетчер задач и смотрим что у нас твориться - там много через есть и потоки и утечки и т.п. и т.д.

2)

>MyDirList:=NIL;
>MyDirList.Free;

Совсем наооборот надо делать.

MyDirList.Free;
MyDirList:=Nil; // Это строка на любителя


 
M5   (2004-03-29 10:01) [13]

Спасибо, немного разобрался. По крайней мере, сбоев уже нет.



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
3-1092762020
Loaderz
2004-08-17 21:00
2004.09.12
Длина строк в БД.


1-1093517056
Луарвик
2004-08-26 14:44
2004.09.12
Типизированые файлы:


14-1093290195
Vasya.ru
2004-08-23 23:43
2004.09.12
Инсталлятор


14-1093238065
Ega23
2004-08-23 09:14
2004.09.12
Работа


1-1093861033
saska
2004-08-30 14:17
2004.09.12
про Мессаги