<?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[Probleme beim Laden eines Strings aus DLL]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich will ein Programm mit mehreren Sprachen ausstatten, dazu will ich die einzelnen Strings für jede Sprache in eine DLL packen und zur Laufzeit laden.</p>
<p>Der Code im Programm:</p>
<pre><code>HINSTANCE langDLL = LoadLibrary (&quot;LangDE.dll&quot;);
Form1 -&gt; Caption.LoadStr (langDLL, IDS_STRING1);
FreeLibrary (langDLL);
</code></pre>
<p>Das bewirkt leider gar nichts. In der DLL sollen nur die Strings stehen, dazu habe ich die LangDE.rc mit der STRINGTABLE erstellt und über den Projektmanager zum DLL-Projekt hinzugefügt, entsprechende lang.h habe ich in die DLL und das Programm eingebunden. Muß ich in der DLL noch irgendetwas machen?</p>
<p>Ich weiß das es dazu schon ein paar Threads hier gibt, hat mich aber nicht weitergebracht.</p>
<p>Danke, Steffen Mueller</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/107674/probleme-beim-laden-eines-strings-aus-dll</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 17:51:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/107674.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Apr 2005 19:47:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme beim Laden eines Strings aus DLL on Thu, 21 Apr 2005 19:47:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich will ein Programm mit mehreren Sprachen ausstatten, dazu will ich die einzelnen Strings für jede Sprache in eine DLL packen und zur Laufzeit laden.</p>
<p>Der Code im Programm:</p>
<pre><code>HINSTANCE langDLL = LoadLibrary (&quot;LangDE.dll&quot;);
Form1 -&gt; Caption.LoadStr (langDLL, IDS_STRING1);
FreeLibrary (langDLL);
</code></pre>
<p>Das bewirkt leider gar nichts. In der DLL sollen nur die Strings stehen, dazu habe ich die LangDE.rc mit der STRINGTABLE erstellt und über den Projektmanager zum DLL-Projekt hinzugefügt, entsprechende lang.h habe ich in die DLL und das Programm eingebunden. Muß ich in der DLL noch irgendetwas machen?</p>
<p>Ich weiß das es dazu schon ein paar Threads hier gibt, hat mich aber nicht weitergebracht.</p>
<p>Danke, Steffen Mueller</p>
]]></description><link>https://www.c-plusplus.net/forum/post/772438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/772438</guid><dc:creator><![CDATA[stemue]]></dc:creator><pubDate>Thu, 21 Apr 2005 19:47:47 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Laden eines Strings aus DLL on Fri, 22 Apr 2005 09:19:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Was genau stimmt denn nicht? Gibt es eine Fehlermeldung oder kommt einfach nur ein Leerstring?<br />
Kontrolliere bitte auch immer ob langDLL gültig ist.</p>
<pre><code class="language-cpp">HINSTANCE langDLL = LoadLibrary (&quot;LangDE.dll&quot;);
if( langDLL != NULL )
{
    AnsiString cap = LoadStr ((int)langDLL, IDS_STRING1); // edit: ist falsch
    Form1-&gt;Caption = cap;
    FreeLibrary (langDLL);
} else
{
// Fehlerbehandlung weil dll nicht gefunden.
}
</code></pre>
<p>Geh diesen Code mal mit dem Debugger durch und kontrolliere deine Variablen. Vielleicht bekommst du ja einen Hinweis drauf was nicht geht.</p>
<p>[edit]Kommando zurück. LoadStr kann so ja garnicht verwendet werden. Nur für direkt eingebundene Ressourcen. Ich schau nochmal gründlicher nach[edit]</p>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/772655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/772655</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 22 Apr 2005 09:19:23 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Laden eines Strings aus DLL on Fri, 22 Apr 2005 08:29:51 GMT]]></title><description><![CDATA[<p>Ok, neuer Code. Ich denke hier wirst du API-Funktionen bemühen müssen.</p>
<pre><code class="language-cpp">const int MAXBUF = 1024;
HINSTANCE langDLL = LoadLibrary (&quot;LangDE.dll&quot;);
if( langDLL != NULL )
{
    char* buffer = new char[MAXBUF+1];   
    int size = LoadString((int)langDLL, IDS_STRING1, buffer, MAXBUF);
    if( size &gt; 0 )
    {
       buffer[MAXBUF] = '\0';
       Form1-&gt;Caption = buffer;
    } else // Ressource nicht gefunden
    FreeLibrary (langDLL);
    delete[] buffer;
} else
{
// Fehlerbehandlung weil dll nicht gefunden.
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/772670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/772670</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 22 Apr 2005 08:29:51 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme beim Laden eines Strings aus DLL on Fri, 22 Apr 2005 21:04:48 GMT]]></title><description><![CDATA[<p>Danke, funktioniert. Das mit AnsiString::LoadString hatte irgendwo im Zusammenhang mit dem Laden von Strings aus DLLs gelesen (weiß nicht mehr wo), scheint aber so nicht zu funktionieren. Nun gut, dann eben direkt mit der API.</p>
<p>(Die Überprüfung ob die DLL geladen werden konnte hatte ich beim rumprobieren wieder rausgenommen, gehört aber selbstverständlich mit dazu.)</p>
<p>Edit:</p>
<p>Funktioniert doch mit AnsiString::LoadString, in meinem Code oben war ein Fehler:</p>
<pre><code>AnsiString __fastcall TFormMain::GetLangString (int id) {
    if (langDLL != NULL) {
        AnsiString temp;
        return temp.LoadString (langDLL, id);
    }
    else return &quot;&quot;;
}
</code></pre>
<p>Danke, Steffen Mueller</p>
]]></description><link>https://www.c-plusplus.net/forum/post/772689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/772689</guid><dc:creator><![CDATA[stemue]]></dc:creator><pubDate>Fri, 22 Apr 2005 21:04:48 GMT</pubDate></item></channel></rss>