Форум: "KOL";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизКак работать со списками 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 вся ветка
Форум: "KOL";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c