<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen)]]></title><description><![CDATA[<p>Hallo,<br />
also die letzten programme die ich geschrieben habe, hatten schon immer ein paar<br />
einstellmöglickeiten. Ich sag jetzt mal, dass ich so ca. 10 bis 20 variablen<br />
hatte die ich speichern musste. Das sind dann Strings, ints und bools etc... Es<br />
könnte halt alles sein. Wie würdet ihr sowas jetzt handhaben. Angenommen ihr<br />
habt ein FTP-Client geschrieben und möchtet die Daten der letzten Sitzung<br />
speichern. Mit Handhaben mein ich jetzt nicht nur die Speicherung auf dem<br />
Datenträger, sondern auch die speicherung im speicher.<br />
Also wenn man z.b. sowas hätte:</p>
<pre><code class="language-cpp">//Ftp Server Daten
   AnsiString Username;
   AnsiString Password;
   AnsiString Ip;
   short      port
   bool       Ascii;

   //Programmeneinstellungen
   bool Vollbildmodus;
   bool AutoConnect;   
   bool AutoSave;
</code></pre>
<p>Wie programmiert ihr das jetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/159553/programmeinstellungen-speichern-strukt-klasse-welche-methoden-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 04:26:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/159553.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Sep 2006 14:01:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sat, 16 Sep 2006 14:35:34 GMT]]></title><description><![CDATA[<p>Hallo,<br />
also die letzten programme die ich geschrieben habe, hatten schon immer ein paar<br />
einstellmöglickeiten. Ich sag jetzt mal, dass ich so ca. 10 bis 20 variablen<br />
hatte die ich speichern musste. Das sind dann Strings, ints und bools etc... Es<br />
könnte halt alles sein. Wie würdet ihr sowas jetzt handhaben. Angenommen ihr<br />
habt ein FTP-Client geschrieben und möchtet die Daten der letzten Sitzung<br />
speichern. Mit Handhaben mein ich jetzt nicht nur die Speicherung auf dem<br />
Datenträger, sondern auch die speicherung im speicher.<br />
Also wenn man z.b. sowas hätte:</p>
<pre><code class="language-cpp">//Ftp Server Daten
   AnsiString Username;
   AnsiString Password;
   AnsiString Ip;
   short      port
   bool       Ascii;

   //Programmeneinstellungen
   bool Vollbildmodus;
   bool AutoConnect;   
   bool AutoSave;
</code></pre>
<p>Wie programmiert ihr das jetzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138515</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 16 Sep 2006 14:35:34 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sat, 16 Sep 2006 14:02:18 GMT]]></title><description><![CDATA[<p>Also so könnte man das doch lösen, oder wäre euch das zu &quot;aufwändig&quot;?</p>
<pre><code class="language-cpp">//struct zur übersichtlichkeit?
struct TFtpServer
{
   AnsiString Username;
   AnsiString Password;
   AnsiString Ip;
   short      port
   bool       Ascii;
}

// Klasse zum verwalten der optionen.
class TOptionen
{
   private:
   public:

      //Ftp Server Daten
      TFtpServer FtpServer;

      //Programmeneinstellungen
      bool Vollbildmodus;
      bool AutoConnect;
      bool AutoSave;

      /* Methoden */
      void SaveToIni();
      bool LoadFromIni();
};

bool TOptionen::LoadFromIni()
{
   if( !FileExists( ChangeFileExt( Application-&gt;ExeName, &quot;.INI&quot;) )
   {
      return false;
   }
   else
   {
      TIniFile *ini;
      ini = new TIniFile( ChangeFileExt( Application-&gt;ExeName, &quot;.INI&quot;)  );

      //FtpServerDaten
      ini-&gt;ReadString(  &quot;FtpServerDaten&quot;, &quot;Username&quot;, &quot;&quot;);
      ini-&gt;ReadString(  &quot;FtpServerDaten&quot;, &quot;Password&quot;, &quot;&quot;);
      ini-&gt;ReadString(  &quot;FtpServerDaten&quot;, &quot;Ip&quot;,       &quot;&quot;);
      ini-&gt;ReadInteger( &quot;FtpServerDaten&quot;, &quot;Port&quot;,     21);
      ini-&gt;ReadBool(    &quot;FtpServerDaten&quot;, &quot;Ascii&quot;,    true);

      //Programmeinstellungen
      ini-&gt;ReadBool( &quot;Programmeinstellungen&quot;, &quot;Vollbildmodus&quot;, true);
      ini-&gt;ReadBool( &quot;Programmeinstellungen&quot;, &quot;AutoConnect&quot;,   true);
      ini-&gt;ReadBool( &quot;Programmeinstellungen&quot;, &quot;AutoSave&quot;,      true);

      delete ini;
   }

   return true;
}

void TOptionen::SaveToIni()
{
   TIniFile *ini;
   ini = new TIniFile( ChangeFileExt( Application-&gt;ExeName, &quot;.INI&quot;)  );

   //FtpServerDaten
   ini-&gt;WriteString(  &quot;FtpServerDaten&quot;, &quot;Username&quot;, this-&gt;FtpServer.Username);
   ini-&gt;WriteString(  &quot;FtpServerDaten&quot;, &quot;Password&quot;, this-&gt;FtpServer.Password);
   ini-&gt;WriteString(  &quot;FtpServerDaten&quot;, &quot;Ip&quot;,       this-&gt;FtpServer.Ip;
   ini-&gt;WriteInteger( &quot;FtpServerDaten&quot;, &quot;Port&quot;,     this-&gt;FtpServer.port);
   ini-&gt;WriteBool(    &quot;FtpServerDaten&quot;, &quot;Ascii&quot;,    this-&gt;FtpServer.Ascii);

   //Programmeinstellungen
   ini-&gt;WriteBool( &quot;Programmeinstellungen&quot;, &quot;Vollbildmodus&quot;, this-&gt;Vollbildmodus);
   ini-&gt;WriteBool( &quot;Programmeinstellungen&quot;, &quot;AutoConnect&quot;,   this-&gt;AutoConnect);
   ini-&gt;WriteBool( &quot;Programmeinstellungen&quot;, &quot;AutoSave&quot;,      this-&gt;AutoSave);

   delete ini;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1138518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138518</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 16 Sep 2006 14:02:18 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sat, 16 Sep 2006 14:19:59 GMT]]></title><description><![CDATA[<p>Andere möglichkeit wäre noch diese hier:</p>
<pre><code class="language-cpp">//struct zur übersichtlichkeit?
struct TFtpServer
{
   AnsiString Username;
   AnsiString Password;
   AnsiString Ip;
   short      port
   bool       Ascii;
}

// Klasse zum verwalten der optionen.
class TOptionen
{
   private:
   public:

      //Ftp Server Daten
      TFtpServer FtpServer;

      //Programmeneinstellungen
      bool Vollbildmodus;
      bool AutoConnect;
      bool AutoSave;

      /* Methoden */
      bool SaveToFile();
      bool LoadFromFile();
};

bool TOptionen::LoadFromFile()
{
   if( !FileExists( ChangeFileExt( Application-&gt;ExeName, &quot;.dat&quot;) )
   {
      return false;
   }
   else
   {
      fstream Datei;
      if( Datei.open( ChangeFileExt( Application-&gt;ExeName, &quot;.dat&quot;), ios::in | ios::binary ) )
      {
         Datei.read( (char*)this, ( sizeof(this) );
         Datei.close();
      }
      else
      {
         return false;
      }
   }

   return true;
}

bool TOptionen::SaveToFile()
{
   fstream Datei;
   if( Datei.open( ChangeFileExt( Application-&gt;ExeName, &quot;.dat&quot;), ios::out | ios::binary ) )
   {
      Datei.write( (char*)this, ( sizeof(this) );
      Datei.close();
      return true;
   }
   else
   {
      return false;
   }
}
</code></pre>
<p>Allerdings bekomme ich hier den huddel, dass ich probleme mit den, in der<br />
größe dynamischen, attributen bekomme. Ich muss ja dann vorher noch die<br />
ansistrings in char arrays mit fixer länger schreiben, dort zwischen speichern<br />
und dann erst auf den datenträger schreiben.<br />
Ich weiß auch gerade gar nicht ob das mit dem</p>
<pre><code class="language-cpp">Datei.write( char*)this, ( sizeof(this) );
</code></pre>
<p>so einfach geht. Ich hab das sonst mit structs und nicht mit klassen gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1138522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1138522</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sat, 16 Sep 2006 14:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sun, 17 Sep 2006 21:26:07 GMT]]></title><description><![CDATA[<p>Filestreams kommen für sowas auch nicht in Frage oder?</p>
<p>Gibt es denn irgendwas, das mit den AnsiStrings so fertig wird, außer die ini files?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139251</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sun, 17 Sep 2006 21:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sun, 17 Sep 2006 21:45:18 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>TFileStreams können schon mit AnsiStrings umgehen, die std::fstreams mit einem Trick auch.</p>
<p>Aber was gefällt dir an TIniFile nicht? Das scheint genau das richtige für deinen Zweck zu sein.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139259</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sun, 17 Sep 2006 21:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Sun, 17 Sep 2006 22:10:20 GMT]]></title><description><![CDATA[<p>Probleme kommen auf, wenn man jetzt z.b. ein Array speichern will.</p>
<pre><code class="language-cpp">struct TFtpServer 
{ 
   AnsiString Username; 
   AnsiString Password; 
   AnsiString Ip; 
   short      port 
   bool       Ascii; 
} 

// Klasse zum verwalten der optionen. 
class TOptionen 
{ 
   private: 
   public: 

      //Ftp Server Daten 
      TFtpServer FtpServerListe[20];  /* Hier würd ich z.b. gerne 20 Server 
                                         speichern. */
      /* ... */
      void SaveToIni();
      bool LoadFromIni();
};
</code></pre>
<p>Wie würdest du das jetzt speichern? Ne Zählschlafe in der SaveToIni() und<br />
LoadFromIni() die dann so irgendwie aussieht:</p>
<pre><code class="language-cpp">TOptionen::SaveToIni()
{

   /* ... */

   for(int i=0; i &lt; 20; i++)
   {
      ini-&gt;WriteString(  &quot;FtpServer&quot; + IntToStr(i), &quot;Username&quot;, this-&gt;FtpServer[i].Username);
      ini-&gt;WriteString(  &quot;FtpServer&quot; + IntToStr(i), &quot;Password&quot;, this-&gt;FtpServer[i].Password);
      ini-&gt;WriteString(  &quot;FtpServer&quot; + IntToStr(i), &quot;Ip&quot;,       this-&gt;FtpServer[i].Ip;
      ini-&gt;WriteInteger( &quot;FtpServer&quot; + IntToStr(i), &quot;Port&quot;,     this-&gt;FtpServer[i].port);
      ini-&gt;WriteBool(    &quot;FtpServer&quot; + IntToStr(i), &quot;Ascii&quot;,    this-&gt;FtpServer[i].Ascii);
   }

   /* ... */
}
</code></pre>
<p>Oder gibts da was eleganteres?</p>
<p>Wäre auch dankbar, wenn du mir mal den Trick verraten würdest, wie ich mit<br />
einem fstream einen AnsiString laden und speichern kann ohne in ihn einen fixen<br />
char zu packen.</p>
<p>danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139265</guid><dc:creator><![CDATA[d0x]]></dc:creator><pubDate>Sun, 17 Sep 2006 22:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to Programmeinstellungen speichern (strukt,klasse, welche methoden&#x2F;funktionen) on Mon, 18 Sep 2006 04:55:35 GMT]]></title><description><![CDATA[<p>Weiß nicht was an der Lösung für ein Array jetzt so unelegant wäre.<br />
Das ist so ziemlich das Beste was du machen kannst.<br />
Allerdings würde ich einen Wert in der ini abspeichern der vielleicht max_count heißt und die Anzahl der Array-Elemente enthält.<br />
Das wäre dann wirklich elegant gelöst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1139304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1139304</guid><dc:creator><![CDATA[rean]]></dc:creator><pubDate>Mon, 18 Sep 2006 04:55:35 GMT</pubDate></item></channel></rss>