Всем привет! Прошу помощи у более опытных коллег. Есть несколько однотипных переменных, которым присвоены значения. Эти переменные комбинируются между собой. Задача в зависимости от комбинации выводить текст соответствующий своей переменной, но не являющийся значением этой переменной. Как такое реализовать? Уже день думаю.
Штука полезная, но немного не то. Я тут ночью залез в учебники и узнал о такой классной штуке как записи. Все стало просто ясно и логично сразу. Сделан еще один шаг к переходу на ООП Сейчас разбираюсь как создать массив записей и с ним работать.
Снег Север писал(а):Массив записей создается точно так же, как массив любых других типов элементов. В чём проблема?
Уже сделано. Но есть неудобства в виде необходимости помнить под каким индексом какая запись находится. Может можно такое решение заменить чем то более удобным?
ANTIKLAN писал(а):Но есть неудобства в виде необходимости помнить под каким индексом какая запись находится. Может можно такое решение заменить чем то более удобным?
Не могу понять суть проблемы. Вам надо отыскивать элемент массива по уникальному имени, что ли? Ну так давайте такое имя в дополнительном поле вашей записи и отыскивайте перебором.
ANTIKLAN писал(а):Но есть неудобства в виде необходимости помнить под каким индексом какая запись находится. Может можно такое решение заменить чем то более удобным?
function MakeHash(const s: String):SizeUInt; var I: Integer; begin Result := 0; for I := 1 to Length(s) do Result := ((Result shl 7) or (Result shr 25)) + Ord(s[I]); end;
class function StringHash.hash(s:String; n:longint):SizeUInt; begin result:=makehash(s) mod SizeUInt(n); end;
var MySuperPuperDictionary:TMySuperPuperDictionary; MySuperPuperData:TMySuperPuperData; begin MySuperPuperDictionary:=TMySuperPuperDictionary.create;
ANTIKLAN писал(а):Но есть неудобства в виде необходимости помнить под каким индексом какая запись находится. Может можно такое решение заменить чем то более удобным?
function MakeHash(const s: String):SizeUInt; var I: Integer; begin Result := 0; for I := 1 to Length(s) do Result := ((Result shl 7) or (Result shr 25)) + Ord(s[I]); end;
class function StringHash.hash(s:String; n:longint):SizeUInt; begin result:=makehash(s) mod SizeUInt(n); end;
var MySuperPuperDictionary:TMySuperPuperDictionary; MySuperPuperData:TMySuperPuperData; begin MySuperPuperDictionary:=TMySuperPuperDictionary.create;