Как лучше связать имя ключа массива и запись файла? - PullRequest
0 голосов
/ 23 декабря 2010

Источник:

  // write
  Path := 'Data/_prefixed' + dynarray1[v].Name;
  with XMLConfig1 do begin; 
      SetValue(Path  + '/RealName', dynarray1[v].Name);
  end;
  ..
  // read
  Path := 'Data/_prefixed' + listOfVars.Strings[v]; 
  with XMLConfig1 do begin;
     dynarray1[v].Name := GetValue(Path + '/RealName', '');
  end;

Я думаю о написании простого макроса, например:

procedure getsetkey(Keyname,Var:string; var Value: **overloaded**; Direction: integer);
getset('Data/_prefixed'+Keyname, Var

, но из-за разных типов возврата это все еще три (целочисленные, строковые, логические) похожие функции(ничего похожего?), или вообще шесть функций, если я выбрасываю аргумент Direction и получаю наборы setkey и getkey, или key(overload: call set if 4-th parameter presents), (значение может быть пустым , поэтомупроверка значения не способ решить)

Любой способ сократить число функций и связать dynarray1 [v] .Element_Name с ключом, который может быть передан в GetValue ()?Какой-то подобный Reflection API для доступа к именам ключей?

1 Ответ

1 голос
/ 02 января 2011

Варианты были бы более логичными.Если вы можете получить информацию об отражении / RTTI (например, все, что вы хотите сохранить, это опубликованное свойство), то это также возможно.

Но ИМХО для 3-х вариантов 1-строчной функции, которая похожа на стрельбу из пушки покомар

...