![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше организовать список из двух [D6]
StarLit © (2005-02-27 00:39:00)string колонок, чтобы потом легко по значению первой получать соответствующее значение второй?
P.S. визуально он не нужен.
Alex Konshin (2005-02-28 04:12:00) [1]Alex Konshin © (27.02.05 10:25) [14]
>А просто использовать поле Objects религия не позволяет?
Лишний раз возится дин памятью не хотелось..
А и не нужно. В случае строк нужно просто использовать PString (только не забывать о корректном удалении). В случае чисел (как в этом конкретном случае) так вообще просто хранить их в Objects.
TButton © (27.02.05 19:05) [16]
а вот как хеши в перле реализованы?
Думаю, что также, как HashMap и Hashtable в Java. Можно тоже самое сделать с помощью моих юнитов, упомянутых выше. Высокую скорость работы гарантирую - там применяются алгориты сбалансированных бинарных деревьев поиска (AVL-деревья).
TButton (2005-02-27 19:05:00) [2]а вот как хеши в перле реализованы?
jack128 (2005-02-27 17:07:00) [3]Alex Konshin © (27.02.05 10:25) [14]
Я уж не говорю про очевидную идею по создание записи или объекта и их уже пихать в список.
и кодировать быстрый поиск элемента в этом списке самому? Зачем?
Alex Konshin © (27.02.05 10:25) [14]
А просто использовать поле Objects религия не позволяет?
Лишний раз возится дин памятью не хотелось..
Alex Konshin (2005-02-27 10:25:00) [4]jack128 © (27.02.05 02:04) [12]
А просто использовать поле Objects религия не позволяет?
Я уж не говорю про очевидную идею по создание записи или объекта и их уже пихать в список.
Еще как вариант могу предложить свои юниты Arrays и AVLtrees, которые очень замечательно подходят для случаев, когда есть какой-то ключ (в данном случае типа String) для быстрого доступа к элементам. Каждый из юнитов хорош по-своему. Кстати, я обновил AVLtrees на сайте, пофиксен один баг.
ссылка на сайт в моей анкете.
StarLit (2005-02-27 07:52:00) [5]ok спасибо Jack128
jack128 (2005-02-27 02:04:00) [6]как два TStringList'а в первом имена, во втором параметры. Первый отсортирован и в его свойстве Objects хранится индекс соответствующего значения во втором листе.
NameStringList.Sorted := True;
Пример:
Доступ
ValueStr := ValueStringList[Integer(NameStringList.Objects[NameStringList.IndexOf(NameStr)])];
Добавление элемента
NameStringList.AddObject(NameStr, TObject(ValueStringList.Add(ValueStr)));
Удаление
Index := NameStringList.IndexOf(NameStr);
ValueStringList.Delete(Integer(NameStringList.Objects[Index]));
NameStringList.delete(Index);
А использование Names и Values - это хронический тормоз.
GuAV (2005-02-27 01:54:00) [7]А про заполнять, так ещё вариант sl.DelimitedText := 'a=1, b=2, c=3';
TButton (2005-02-27 01:28:00) [8]*немного опоздал (зачитался оффтопом в "Потрепаться")*
а ещё заполнять можно с помощью LoadFromFile
StarLit (2005-02-27 01:13:00) [9]GuAV © - спасибо, что ткнул носом :-), видимо пора спать идти :-)
GuAV (2005-02-27 01:11:00) [10]StarLit (27.02.05 1:01) [7]
слушайте, а поиск как тогда смостерить ?
см ещё раз [1], что подчёркнуто :-)
StarLit (2005-02-27 01:01:00) [11]слушайте, а поиск как тогда смостерить ?
s1.Find('b1=45',i);
я же как раз хочу и найти что 45 лежит в b1 :-)
или только перебором всего списка и отсекть все до знака = и сравнивать?
StarLit (2005-02-27 00:55:00) [12]учту ;-)
DiamondShark (2005-02-27 00:52:00) [13]Можно заполнять и так:
sl.Values['a'] := '1';
sl.Values['b'] := '2';
sl.Values['qweqwe'] := 'djfbhvdjfvb';
StarLit (2005-02-27 00:51:00) [14]olookin - чего?!
StarLit (2005-02-27 00:49:00) [15]большое спасибо.
видимо придется заполнять его так:
...
sl: TStringList;
...
sl:=TStringList.Create;
...
sl.Add('a=1');
sl.Add('b=2');
sl.Add('a1=3');
sl.Add('b2=2');
sl.Add('a3=3');
sl.Add('b3=2');
....
:-(
olookin (2005-02-27 00:47:00) [16]Ну по любому, тема не оформлена (panov Copyright)
TButton (2005-02-27 00:41:00) [17]
...
sl: TStringList;
...
sl:=TStringList.Create;
...
sl.Add('a=1');
sl.Add('b=2');
sl.Add('c=3');
...
label1.Caption:=sl.Values['a'];
...
sl.Free;
...