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

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

Как лучше организовать список из двух [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;
...


Наверх

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