
Последние записи
- Прозрачность тайлсета в TPNGImage
- Как сделать VBA макрос в excel
- Поиск по столбцу 1-ого не нулевого значения (формулой в Microsoft Office Excel)
- Простановка единиц в ячейки под объектами (Microsoft Office Excel)
- Расчет затраченного времени между определенным рабочим временем (формулой в Microsoft Office Excel)
- Мигающий экран на Assembler
- VBA-макрос по копированию 10 строчек в выбранном диапазоне в Microsoft Office Excel
- Копирование только нужного диапазона в Microsoft Office Excel
- Перенос диапазона стоки в Microsoft Office Excel на другой лист по условию
- Мелодия в Pascal.ABC.Net с помощью System.Console.Beep — задержка воспроизведения звука

17th
Дек
Хранение и поиск значения по строковому наименованию
Posted by Chas under Delphi
Как правильно хранить в памяти и использовать значения с привязкой к наименованию? Не обязательно значения могут быть любых типов, пускай хотя бы только строковые. К примеру, требуется хранить список наименований рабочих станций и их IP адресов, можно конечно завести два массива — искать по имени в одном и потом по полученному индексу брать IP в другом, но может быть существует штатная возможность для подобного манипулирования?
Serge_Bliznykov
При использовании TStringList перебирать значения не придётся — есть методы, скрывающие перебор (причём, даже эффективный, по ключу, если список сортированный) от программиста.
см. методы .Find и .IndexOf
если искомые строковые значения как ключи — уникальны (а в вашем случае они именно уникальны), тогда смотрите свойство [Values]
второе поясню примером кода:
procedure TForm1.Button1Click(Sender: TObject);
var
ts : TStringList;
begin
ts := TStringList.Create;
// прочитаем значения из ini файла
(*
например, в INI там такие значения:
DisplayGrid=192.168.1.2
SnapToGrid=10.68.61.2
GridSizeX=80.82.1.1.
GridSizeY=81.124.1.2
*)
ts.LoadFromFile('d:\test1.ini');
ShowMessage('для ключа с имененм GridSizeX найденное значение будет '+
ts.Values['GridSizeX']);
ShowMessage('для ключа с имененм SnapToGrid найденное значение будет '+
ts.Values['SnapToGrid']);
ts.Free;
end;