Главная страница
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.021 c
3-1092384504
Руслан
2004-08-13 12:08
2004.09.12
Снова вопрос по DBGridEH


14-1093171832
Никола
2004-08-22 14:50
2004.09.12
BBSы Москвы


14-1093019934
Jus
2004-08-20 20:38
2004.09.12
UnDelfiX что это такое?


3-1092476621
leonon
2004-08-14 13:43
2004.09.12
FastReport - как программно связать TfrQuery c базой приложения?


14-1093507145
Baks
2004-08-26 11:59
2004.09.12
Мастера подскажите