我有一个逻辑问题,我需要让用户配置比较一些简单值的序列。
例如,在INI文件中,序列存储如下:
[Fruit]
Apples=0
Oranges=3
Banana=4
Melon=1
Berry=5
Lemon=2
在这种情况下,INI ident将保持数量值。 INI值表示要比较的顺序。所以,我需要像这样比较:
{first}
if CurrentApples > PrevApples
continue...
{second}
if CurrentMelons > PrevMelons
continue...
{third}
if CurrentLemons > PrevLemons
continue...
{forth}
if CurrentOranges > PrevOranges
continue...etc.
如果序列被更改为首先进行Berry比较,那么在运行期间我需要能够按顺序比较这些量。基本上比较的顺序很重要并将导致各种行动。我无法在函数中动态创建一些变量,只需为它们指定一个名称即可。
我试图用这个做点什么:
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语句,那么我可以尝试这样做,但它似乎有点矫枉过正。
答案 0 :(得分:0)
您可以使用IniFile.ReadSection将键名读取到字符串列表中。它们的保存顺序应与存储在INI文件中的顺序相同。 然后,您可以将其用作控制机制来确定要使用的订单。
此外,您可能希望使用TMemIniFile而不是TIniFile,因为TMemIniFile将整个ini文件存储到内存中。当您从INI文件中读取值时,这可能非常有用,因为常规TIniFile总是从硬盘驱动器读取它们,这可能会降低性能。