<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Интерфейс для доступа к профайлу</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html</link>
    <description>Риспект всем форумчанам!&lt;br&gt;&lt;br&gt;Существуют ли более-менее стандартные шаблоны проектирования для загрузки/сохранения данных из/в профайла примерно такого синтаксиса.&lt;br&gt;&lt;br&gt;сохранение:&lt;br&gt;void saveValueToProfile(const char* const name, const T&amp; value);&lt;br&gt;&lt;br&gt;загрузка:&lt;br&gt;const T value = loadValueFromProfile(const char* const name);&lt;br&gt;&lt;br&gt;Здесь name указывает значение какой переменной из профайла представлено значением value типа T соответствующего этой переменной.&lt;br&gt;&lt;br&gt;Вот пример профайла:&lt;br&gt;&lt;br&gt;Переменная1 = 10&lt;br&gt;Переменная2 = 3,141592645&lt;br&gt;Переменная3 = Балалайка&lt;br&gt;&lt;br&gt;то есть типы данных разношерстные, но соответствующие заданным в коде типам данных&lt;br&gt;Переменная1 -&amp;gt; int&lt;br&gt;Переменная2 -&amp;gt; double&lt;br&gt;Переменная3 -&amp;gt; char*&lt;br&gt;&lt;br&gt;Кто и как решал подобные задачи?&lt;br&gt;&lt;br&gt;С уважением,&lt;br&gt;Дмитрий&lt;br&gt;</description>

<item>
    <title>в том-то и дело, что не нужно писать get() для всех типов (Вова)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#22</link>
    <pubDate>Fri, 13 Aug 2010 13:24:49 GMT</pubDate>
    <description>get()  - один для всех:&lt;br&gt; Data get(string parameter_name, Data default_val)&lt;br&gt; &#123; &lt;br&gt;    static map &amp;lt;string, Data&amp;gt; config;&lt;br&gt;   if(map&amp;lt;&amp;gt;::iterator it = config.find(parameter_name) != config.end())&lt;br&gt;       reutrn it-&amp;gt;second;&lt;br&gt;   return default_val;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt; и спокойно работаешь:&lt;br&gt;int i = get(&quot;counter&quot;, 0);&lt;br&gt;double d = get(&quot;pi&quot;, 3.14);&lt;br&gt;string name = get(&quot;username&quot;, &quot;pupkin&quot;);&lt;br&gt;&lt;br&gt;вызвал int i = get(&quot;username&quot;), получил исключение/лог; вызвал int i = get(&quot;counter&quot;);, потом double d = i (как вы в примере выше) - сам себе злой буратино. Да, можно даблы инициировать интами, мир неидеален, смиритесь.&lt;br&gt;</description>
</item>

<item>
    <title>Никогда не говори &apos;никогда&apos; (dimonna)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#21</link>
    <pubDate>Fri, 13 Aug 2010 12:02:34 GMT</pubDate>
    <description>Ну и даже проблема не в этом:&lt;br&gt;&amp;gt;&amp;gt; а если я так вызову  double var = (double)(int)get(&quot;dfgdfg&quot;)&lt;br&gt;&lt;br&gt;Таким образом надо хардкодить get-метод для каждого типа данных, что не есть гуд как по мне.&lt;br&gt;</description>
</item>

<item>
    <title>Никогда не говори &apos;никогда&apos; (dimonna)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#20</link>
    <pubDate>Fri, 13 Aug 2010 12:00:49 GMT</pubDate>
    <description>Вот вот. Ооочень хочется компайл-тайм проверку. Рантайм проверка чревата тяжело обнаружаемыми ошибками, особенно если какой-то сильно заковыристый тест кейз.&lt;br&gt;</description>
</item>

<item>
    <title>Никогда не говори &apos;никогда&apos; (pilot.net)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#19</link>
    <pubDate>Fri, 13 Aug 2010 09:46:38 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;int data_type; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Data(int v):data_type(TYPE_INT)&#123; &lt;br&gt;&amp;gt;storage.int = v; &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&amp;gt;... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;operator double() &lt;br&gt;&amp;gt;&#123; &lt;br&gt;&amp;gt;  if(data_type != TYPE_DOUBLE) &lt;br&gt;&lt;br&gt;а если я так вызову  double var = (double)(int)get(&quot;dfgdfg&quot;)&lt;br&gt; &lt;br&gt;</description>
</item>

<item>
    <title>Никогда не говори &apos;никогда&apos; (Вова)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#18</link>
    <pubDate>Fri, 13 Aug 2010 09:28:33 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;Data d((int)10); &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;double wrong = d(&quot;name&quot;...); &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;было интом - стало даблом. &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Согласен, не спасёт - на этапе компиляции не спасёт.  Логгирование/бросание исключений &lt;br&gt;&amp;gt;&amp;gt;и тп  рантайм - вполне достаточное решение. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;этот код законен и ты не как не определишь ошибку ни в &lt;br&gt;&amp;gt;стадии компиляции ни в рантайме &lt;br&gt;&lt;br&gt;class Data&#123;&lt;br&gt;int data_type;&lt;br&gt;&lt;br&gt;Data(int v):data_type(TYPE_INT)&#123;&lt;br&gt;storage.int = v;&lt;br&gt;&#125;&lt;br&gt;...&lt;br&gt;&lt;br&gt;operator double()&lt;br&gt;&#123;&lt;br&gt;  if(data_type != TYPE_DOUBLE)&lt;br&gt;    ...&lt;br&gt;&#125;&lt;br&gt;</description>
</item>

<item>
    <title>как-то так (pilot.net)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#17</link>
    <pubDate>Fri, 13 Aug 2010 03:38:42 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Хмм, но это ведь не спасет от: &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Data d((int)10); &lt;br&gt;&amp;gt;&amp;gt;double wrong = d(&quot;name&quot;...); &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;было интом - стало даблом. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Согласен, не спасёт - на этапе компиляции не спасёт.  Логгирование/бросание исключений &lt;br&gt;&amp;gt;и тп  рантайм - вполне достаточное решение. &lt;br&gt;&lt;br&gt;этот код законен и ты не как не определишь ошибку ни в стадии компиляции ни в рантайме &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>как-то так (Вова)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#16</link>
    <pubDate>Thu, 12 Aug 2010 19:45:16 GMT</pubDate>
    <description>&amp;gt;Хмм, но это ведь не спасет от: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Data d((int)10); &lt;br&gt;&amp;gt;double wrong = d(&quot;name&quot;...); &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;было интом - стало даблом. &lt;br&gt;&lt;br&gt;Согласен, не спасёт - на этапе компиляции не спасёт.  Логгирование/бросание исключений и тп  рантайм - вполне достаточное решение. &lt;br&gt;</description>
</item>

<item>
    <title>как-то так (dimonna)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#15</link>
    <pubDate>Thu, 12 Aug 2010 19:40:23 GMT</pubDate>
    <description>Хмм, но это ведь не спасет от:&lt;br&gt;&lt;br&gt;Data d((int)10);&lt;br&gt;double wrong = d(&quot;name&quot;...);&lt;br&gt;&lt;br&gt;было интом - стало даблом.&lt;br&gt;</description>
</item>

<item>
    <title>как-то так (Вова)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/8828.html#14</link>
    <pubDate>Thu, 12 Aug 2010 19:29:18 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;Переменная2 = 3,141592645 &lt;br&gt;&amp;gt;Переменная3 = Балалайка &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;то есть типы данных разношерстные, но соответствующие заданным в коде типам данных &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Переменная1 -&amp;gt; int&lt;br&gt;&amp;gt;Переменная2 -&amp;gt; double&lt;br&gt;&amp;gt;Переменная3 -&amp;gt; char*&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Кто и как решал подобные задачи? &lt;br&gt;&lt;br&gt;Class Data&#123;&lt;br&gt;Data(int);&lt;br&gt;Data(string);&lt;br&gt;Data(double);&lt;br&gt;&lt;br&gt;operator int();&lt;br&gt;operator string();&lt;br&gt;operator double();&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Data get(string parameter_name, Data default_value);&lt;br&gt;&lt;br&gt;int count = get(&quot;variable1&quot;, 0); &lt;br&gt;double value = get(&quot;variable2&quot;, 3.14);&lt;br&gt;string name = get(&quot;name&quot;, &quot;default&quot;);&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
