У меня есть логическая проблема, когда мне нужно разрешить пользователю настраивать последовательность, с помощью которой можно сравнивать некоторые простые значения.Сравнение значений в динамической последовательности
Например, в файле INI, последовательность сохраняется как:
[Fruit]
Apples=0
Oranges=3
Banana=4
Melon=1
Berry=5
Lemon=2
В этом случае, идент INI собирается быть проведение значение количества. Значение INI представляет собой порядок сравнения. Таким образом, мне нужно, чтобы сравнить, как это:
{first}
if CurrentApples > PrevApples
continue...
{second}
if CurrentMelons > PrevMelons
continue...
{third}
if CurrentLemons > PrevLemons
continue...
{forth}
if CurrentOranges > PrevOranges
continue...etc.
Если последовательность была изменена, чтобы поставить сравнение Берри первым, во время выполнения Мне нужно, чтобы иметь возможность сравнить эти величины в таком порядке. В основном порядок, с которым имеют значение сравнения, приведет к различным действиям. Я не могу динамически создавать некоторые переменные в функции и просто назначать им имя.
Я пытался что-то сделать с этим:
var
TestArray : array[0..5] of Boolean;
begin
TestArray[0] := CurrentApples > PrevApples;
TestArray[1] := CurrentMelons > PrevMelons;
TestArray[2] := CurrentLemons > PrevLemons;
TestArray[3] := CurrentOranges > PrevOranges;
TestArray[4] := CurrentBanana > PrevBanana;
TestArray[5] := CurrentBerry > PrevBerry;
А затем оценить индекс массива в определенном порядке, но я не могу понять, как это сделать из значений INI.
Есть ли более простой способ сделать это? Если правильный способ - это просто написать сотни вложенных операторов if, то я могу попытаться это сделать, но это похоже на излишний.
Пока вы не начнете использовать массивы и/или словари вместо отдельных переменных, вы будете обречены писать все комбинации вручную. Итак, шаг 1 - узнать о массивах/словарях и контейнерах. –