<?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[Frage zu TRegistry]]></title><description><![CDATA[<p>Hi Forumsleser,</p>
<p>ich arbeite sehr selten mit c++. Da ich aber gerade eine kleine Projektpause habe, wollte ich mich ein wenig einarbeiten.</p>
<p>Thema ist das Auslesen von Daten aus eine INI-Datei und Schreiben dieser Info in die Registry.</p>
<p>Hier mein Ansatz:</p>
<pre><code class="language-cpp">#pragma hdrstop
#include &quot;IniFiles.hpp&quot;
#include &lt;Registry.hpp&gt;
#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   TIniFile *ini;
   AnsiString strRootKey;
   AnsiString strSubKey;
   AnsiString strDefaultDomainName;

   ini = new TIniFile( ChangeFileExt( Application-&gt;ExeName, &quot;.INI&quot; ) );
   Edit1-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;RootKey&quot;, &quot;HKEY_LOCAL_MACHINE&quot; );
   Edit2-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;SubKey&quot;, &quot;\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon&quot; );
   Edit3-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;DefaultDomainName&quot;, &quot;Test.Corp&quot; );

   delete ini;

   strRootKey=Edit1-&gt;Text;
   strSubKey=Edit2-&gt;Text;
   strDefaultDomainName=Edit3-&gt;Text;

//die Werte jetzt in die Registry schreiben

       // TRegistry-Objekt erzeugen:
    TRegistry *pReg = new TRegistry;
   try
    {
      pReg -&gt; RootKey = strRootKey;

      // Schlüssel in der Registrierung öffnen / ggf. erzeugen:
      pReg-&gt;OpenKey(strSubKey, true);

      // Daten in die Registrierung schreiben:
      pReg-&gt;WriteString(&quot;DefaultDomainName&quot;,strDefaultDomainName);
    }
    __finally
    {
      delete pReg;
    }
}
</code></pre>
<p>1. Fehler: pReg -&gt; RootKey = strRootKey; //Kann AnsiString nicht in void ...</p>
<p>Wenn ich hier statt strRootKey HKEY_LOCAL_MACHINE verwende, kommt es zu einer Fehlermeldung Exception ...Fehler beim Setzen der Daten für &quot;DefaultDomainName&quot;...</p>
<p>Wer kann ir kurz erklären, was ich falsch mache. Muß man die Strings umwandeln oder ähnliches.</p>
<p>Danke für die Hilfe!<br />
Uwe Schönfeld</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119920/frage-zu-tregistry</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 05:16:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119920.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Sep 2005 06:53:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu TRegistry on Wed, 07 Sep 2005 06:53:24 GMT]]></title><description><![CDATA[<p>Hi Forumsleser,</p>
<p>ich arbeite sehr selten mit c++. Da ich aber gerade eine kleine Projektpause habe, wollte ich mich ein wenig einarbeiten.</p>
<p>Thema ist das Auslesen von Daten aus eine INI-Datei und Schreiben dieser Info in die Registry.</p>
<p>Hier mein Ansatz:</p>
<pre><code class="language-cpp">#pragma hdrstop
#include &quot;IniFiles.hpp&quot;
#include &lt;Registry.hpp&gt;
#include &quot;Unit1.h&quot;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource &quot;*.dfm&quot;
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   TIniFile *ini;
   AnsiString strRootKey;
   AnsiString strSubKey;
   AnsiString strDefaultDomainName;

   ini = new TIniFile( ChangeFileExt( Application-&gt;ExeName, &quot;.INI&quot; ) );
   Edit1-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;RootKey&quot;, &quot;HKEY_LOCAL_MACHINE&quot; );
   Edit2-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;SubKey&quot;, &quot;\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon&quot; );
   Edit3-&gt;Text = ini-&gt;ReadString( &quot;data&quot;, &quot;DefaultDomainName&quot;, &quot;Test.Corp&quot; );

   delete ini;

   strRootKey=Edit1-&gt;Text;
   strSubKey=Edit2-&gt;Text;
   strDefaultDomainName=Edit3-&gt;Text;

//die Werte jetzt in die Registry schreiben

       // TRegistry-Objekt erzeugen:
    TRegistry *pReg = new TRegistry;
   try
    {
      pReg -&gt; RootKey = strRootKey;

      // Schlüssel in der Registrierung öffnen / ggf. erzeugen:
      pReg-&gt;OpenKey(strSubKey, true);

      // Daten in die Registrierung schreiben:
      pReg-&gt;WriteString(&quot;DefaultDomainName&quot;,strDefaultDomainName);
    }
    __finally
    {
      delete pReg;
    }
}
</code></pre>
<p>1. Fehler: pReg -&gt; RootKey = strRootKey; //Kann AnsiString nicht in void ...</p>
<p>Wenn ich hier statt strRootKey HKEY_LOCAL_MACHINE verwende, kommt es zu einer Fehlermeldung Exception ...Fehler beim Setzen der Daten für &quot;DefaultDomainName&quot;...</p>
<p>Wer kann ir kurz erklären, was ich falsch mache. Muß man die Strings umwandeln oder ähnliches.</p>
<p>Danke für die Hilfe!<br />
Uwe Schönfeld</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866726</guid><dc:creator><![CDATA[merseburger1]]></dc:creator><pubDate>Wed, 07 Sep 2005 06:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu TRegistry on Wed, 07 Sep 2005 08:05:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>TRegistry::Rootkey ist vom Typ HKEY (das wahrscheinlich ein typedef auf void*). Somit kannst du hier keinen String zuweisen sondern nur eine der vordefinierten Konstanten (in winreg.h).<br />
Du kannst einen String nicht direkt in HKEY umwandeln. Du könntest dir aber eine Funktion schreiben, die abhängig von einen String den entsprechenden HKEY-Wert zurückgibt.</p>
<pre><code class="language-cpp">pReg-&gt;RootKey = HKEY_LOCAL_MACHINE;
</code></pre>
<p>sollte aber funktionieren. Vielleicht hast du ja auch keinen Zugriff auf HKEY_LOCAL_MACHINE (zumindest keinen Schreibzugriff).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866760</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866760</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 07 Sep 2005 08:05:03 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu TRegistry on Wed, 07 Sep 2005 09:39:39 GMT]]></title><description><![CDATA[<p>Sorry, dass ich so spät reagiere aber ich hatte mich vergessen einzuloggen und somit wurde meine Antwort nicht übertragen.</p>
<p>Danke für die Hilfe.</p>
<p>Wenn ich jetzt:</p>
<pre><code class="language-cpp">{
      pReg -&gt; RootKey = HKEY_LOCAL_MACHINE;

      // Schlüssel in der Registrierung öffnen / ggf. erzeugen:
      pReg-&gt;OpenKey(strSubKey, true);

      // Daten in die Registrierung schreiben:
      pReg-&gt;WriteString(&quot;DefaultDomainName&quot;,strDefaultDomainName);
    }
    __finally
    {
      delete pReg;
</code></pre>
<p>kommt es zu der Fehlermeldung:Exception ...Fehler beim Setzen der Daten für &quot;DefaultDomainName&quot;...</p>
<p>Wenn ich aber:</p>
<pre><code class="language-cpp">{
      pReg -&gt; RootKey = HKEY_LOCAL_MACHINE;

      // Schlüssel in der Registrierung öffnen / ggf. erzeugen:
      pReg-&gt;OpenKey(&quot;\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon&quot;, true);

      // Daten in die Registrierung schreiben:
      pReg-&gt;WriteString(&quot;DefaultDomainName&quot;,strDefaultDomainName);
    }
    __finally
    {
      delete pReg;
</code></pre>
<p>schreibe klappt's.</p>
<p>Also wird och irgendwie der AnsiString an dieser Stelle nicht richtig übernommen. Oder?</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866839</guid><dc:creator><![CDATA[merseburger1]]></dc:creator><pubDate>Wed, 07 Sep 2005 09:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu TRegistry on Wed, 07 Sep 2005 11:01:04 GMT]]></title><description><![CDATA[<p>Kann schon sein.<br />
Hast du mal im Debugger den Inhalt von strSubKey überprüft. Du kannst auch den Rückgabewert von OpenKey überprüfen (false wenn nicht erfolgreich).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866907</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866907</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:01:04 GMT</pubDate></item></channel></rss>