<?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[CharWerte aus Dll lesen]]></title><description><![CDATA[<p>Hallo @ all</p>
<p>Ich habe mal versucht eine dll zu schreiben und eine Form daraus auslesen zu lassen das hatte auch Prima funktioniert.</p>
<p>Nun wollte ich Strings bzw. Char werte auslesen da haut es alles schon mal wieder net hin weiß im mom net weiter würde mich über Hilfe freuen.</p>
<p>PS: Die Suchfunktion geht hier net ....</p>
<p>Code aus der DLL</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;windows.h&gt;
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
        return 1;
}
//---------------------------------------------------------------------------
extern &quot;C&quot; __declspec (dllexport) void Trial_Form(char *Reg_Serial)// String Reg_Company, String Reg_Serial)
 {

         TStrings* Liste1 = new TStringList();
         Liste1-&gt;LoadFromFile(&quot;TApplication.key&quot;);
         Reg_Serial = &quot;FF00-000-000-FFDH&quot;;

 }
</code></pre>
<p>Header Datei meines Programms</p>
<pre><code class="language-cpp">private:	// Anwender-Deklarationen

     typedef void TTrial_Form(char *Reg_Serial);
</code></pre>
<p>Aufruf der dll im Hauptprogramm</p>
<pre><code class="language-cpp">__fastcall TSplash_Form_1::TSplash_Form_1(TComponent* Owner)
        : TForm(Owner)
{

       TTrial_Form* Trial_Form;
       HINSTANCE h = LoadLibrary(&quot;trial.dll&quot;);
        if(h != 0)
                  Trial_Form = (TTrial_Form*)GetProcAddress(h,&quot;_Trial_Form&quot;);
        else
        {
                FreeLibrary(h);
                MessageDlg(&quot;Kann ' trial.dll ' nicht laden ! Programm wird geschlossen !&quot;,mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
                Application-&gt;Terminate();
        }
        if(Trial_Form != NULL)
        {
              // Hier wollte ich Reg_Serial aufrufen kommt aber immer die 
              // Fehlermeldung Trial_Form(*keine Parameter erwartet*)
                Name-&gt;Caption = Trial_Form(Reg_serial);
        }
       else
                 FreeLibrary(h);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/100774/charwerte-aus-dll-lesen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 06:16:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/100774.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Feb 2005 09:19:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Thu, 10 Feb 2005 09:19:32 GMT]]></title><description><![CDATA[<p>Hallo @ all</p>
<p>Ich habe mal versucht eine dll zu schreiben und eine Form daraus auslesen zu lassen das hatte auch Prima funktioniert.</p>
<p>Nun wollte ich Strings bzw. Char werte auslesen da haut es alles schon mal wieder net hin weiß im mom net weiter würde mich über Hilfe freuen.</p>
<p>PS: Die Suchfunktion geht hier net ....</p>
<p>Code aus der DLL</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;vcl.h&gt;
#include &lt;windows.h&gt;
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
        return 1;
}
//---------------------------------------------------------------------------
extern &quot;C&quot; __declspec (dllexport) void Trial_Form(char *Reg_Serial)// String Reg_Company, String Reg_Serial)
 {

         TStrings* Liste1 = new TStringList();
         Liste1-&gt;LoadFromFile(&quot;TApplication.key&quot;);
         Reg_Serial = &quot;FF00-000-000-FFDH&quot;;

 }
</code></pre>
<p>Header Datei meines Programms</p>
<pre><code class="language-cpp">private:	// Anwender-Deklarationen

     typedef void TTrial_Form(char *Reg_Serial);
</code></pre>
<p>Aufruf der dll im Hauptprogramm</p>
<pre><code class="language-cpp">__fastcall TSplash_Form_1::TSplash_Form_1(TComponent* Owner)
        : TForm(Owner)
{

       TTrial_Form* Trial_Form;
       HINSTANCE h = LoadLibrary(&quot;trial.dll&quot;);
        if(h != 0)
                  Trial_Form = (TTrial_Form*)GetProcAddress(h,&quot;_Trial_Form&quot;);
        else
        {
                FreeLibrary(h);
                MessageDlg(&quot;Kann ' trial.dll ' nicht laden ! Programm wird geschlossen !&quot;,mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
                Application-&gt;Terminate();
        }
        if(Trial_Form != NULL)
        {
              // Hier wollte ich Reg_Serial aufrufen kommt aber immer die 
              // Fehlermeldung Trial_Form(*keine Parameter erwartet*)
                Name-&gt;Caption = Trial_Form(Reg_serial);
        }
       else
                 FreeLibrary(h);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/719377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719377</guid><dc:creator><![CDATA[Praetorianer_33]]></dc:creator><pubDate>Thu, 10 Feb 2005 09:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Thu, 10 Feb 2005 12:22:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Deine Trial_Form-Funktion gibt ja auch nichts zurück (Rückgabetyp void).<br />
Du müsstest für Reg_Serial erstmal Speicher bereitstellen und dann deinen String da hineinkopieren (mit strcpy, nicht nur zuweisen). Einfacher wirds für dich wenn du auf char* ganz verzichtest und statt dessen std::string oder ähnliches verwendest.<br />
Was soll deine Funktion eigentlich bewirken. So wie sie da steht ist sie nämlich ziemlich sinnlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719417</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 10 Feb 2005 12:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Thu, 10 Feb 2005 10:49:12 GMT]]></title><description><![CDATA[<p>@ Braunstein</p>
<p>Ich weiß sieht alles noch ein wenig komisch aus wollte aber erst mal probieren ob ich einen String aus einer Dll in mein Hauptprogramm bekomme .</p>
<p>Zu einen späteren Zeitpunkt wenn ich es mal hinbekommen habe es aus der dll zu lesen soll die werte aus der StringList gelesen werden aus einer *key datei.</p>
<p>habe ja gelesen das ich statt String lieber char oder ShortString bei einer dll<br />
benutzen soll.(Buch gelesen)//Bin villeicht zu dumm dazu//</p>
<p>Aber das hat im mom eh noch keinen zweck weil ich ja noch nichmal Reg_Serial auf mein Hauptformular in das Feld Serial-&gt;Caption = Trial_Form(Reg_Serial) aus der dll bekomme.</p>
<p>Es soll ja auch irgendwann noch name und company und so weiter aus der dll kommen .</p>
<p>PS: Ein Formular geht ja ohne Prob aber dieses eben nicht.</p>
<p>Gruss Praetorianer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719477</guid><dc:creator><![CDATA[Praetorianer_33]]></dc:creator><pubDate>Thu, 10 Feb 2005 10:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Thu, 10 Feb 2005 12:36:01 GMT]]></title><description><![CDATA[<p>Ich würde halt std::string als Rückgabetyp empfehlen. Da hast du dann keine Probleme mit der Speicherverwaltung.<br />
Auf dein Beispiel bezogen etwa so:</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec (dllexport) std::string Trial_Form()// String Reg_Company, String Reg_Serial)
 {

         TStrings* Liste1 = new TStringList();
         Liste1-&gt;LoadFromFile(&quot;TApplication.key&quot;);
         delete Liste1;  //[edit] Ok habs hinzugefügt
         return &quot;FF00-000-000-FFDH&quot;;

 }
</code></pre>
<pre><code class="language-cpp">private:    // Anwender-Deklarationen

     typedef std::string TTrial_Form();
</code></pre>
<pre><code class="language-cpp">__fastcall TSplash_Form_1::TSplash_Form_1(TComponent* Owner)
        : TForm(Owner)
{

       TTrial_Form* Trial_Form;
       HINSTANCE h = LoadLibrary(&quot;trial.dll&quot;);
        if(h != 0)
                  Trial_Form = (TTrial_Form*)GetProcAddress(h,&quot;_Trial_Form&quot;);
        else
        {
                FreeLibrary(h);
                MessageDlg(&quot;Kann ' trial.dll ' nicht laden ! Programm wird geschlossen !&quot;,mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
                Application-&gt;Terminate();
        }
        if(Trial_Form != NULL)
        {
              // Hier wollte ich Reg_Serial aufrufen kommt aber immer die 
              // Fehlermeldung Trial_Form(*keine Parameter erwartet*)
                Name-&gt;Caption = Trial_Form().c_str();
        }
       else
                 FreeLibrary(h);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/719598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719598</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 10 Feb 2005 12:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Thu, 10 Feb 2005 12:33:49 GMT]]></title><description><![CDATA[<p>!! Liste1 frei geben !!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/719610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/719610</guid><dc:creator><![CDATA[Blackhawk]]></dc:creator><pubDate>Thu, 10 Feb 2005 12:33:49 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Tue, 22 Feb 2005 17:59:55 GMT]]></title><description><![CDATA[<p>hallo</p>
<p>Habe es probiert funktioniert auch, aber was machhe ich mit mehrern Werten.<br />
Ich geb was in die Schnittstelle und es wird auf dem Hauptformular net ausgegeben. Warum funktioniert es wenn ich die Schnittstelle leer lasse,<br />
sobald ich Werte übergebe geht es net. Danke</p>
<p>Code DLL</p>
<pre><code class="language-cpp">extern &quot;C&quot; __declspec (dllexport) String Trial_Form(String Reg_Name, String Reg_Company)
{

         TStrings* Liste1 = new TStringList();
         Liste1-&gt;LoadFromFile(&quot;TApplication.key&quot;);
       Reg_Name = Liste1-&gt;Strings[4];
       Reg_Company = Liste1-&gt;Strings[5];
       delete Liste1;
        //Reg_Serial = &quot;FF00-000-000-FFDH&quot;;
        return Reg_Name,Reg_Company;
 }
</code></pre>
<p>Code aus Header</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef SplashH
#define SplashH
//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;
#include &lt;Controls.hpp&gt;
#include &lt;StdCtrls.hpp&gt;
#include &lt;Forms.hpp&gt;
#include &lt;ExtCtrls.hpp&gt;
#include &lt;jpeg.hpp&gt;
//---------------------------------------------------------------------------
class TSplash_Form_1 : public TForm
{
__published:	// Von der IDE verwaltete Komponenten
        TImage *Splash_1;
        TLabel *Registrierung;
        TLabel *Name;
        TLabel *Company;
        TLabel *Serial;
        TLabel *Reg_Date;
        TLabel *Version;
        TLabel *VNR;
        TLabel *Trial_Time;
        TLabel *Noch;
        TLabel *Tage;
        void __fastcall FormCreate(TObject *Sender);
private:	// Anwender-Deklarationen

                typedef String TTrial_Form(String Reg_Name,String Reg_Company);

public:		// Anwender-Deklarationen
        __fastcall TSplash_Form_1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TSplash_Form_1 *Splash_Form_1;
//---------------------------------------------------------------------------
#endif
</code></pre>
<p>code aus dem Programm</p>
<pre><code class="language-cpp">__fastcall TSplash_Form_1::TSplash_Form_1(TComponent* Owner)
        : TForm(Owner)
{

       TTrial_Form* Trial_Form;

       HINSTANCE h = LoadLibrary(&quot;trial.dll&quot;);
        if(h != 0)
                  Trial_Form = (TTrial_Form*)GetProcAddress(h,&quot;_Trial_Form&quot;);
        else
        {
                FreeLibrary(h);
                MessageDlg(&quot;Kann ' trial.dll ' nicht laden ! Programm wird geschlossen !&quot;,mtInformation, TMsgDlgButtons() &lt;&lt; mbOK, 0);
                Application-&gt;Terminate();
        }
        if(Trial_Form != NULL)
        {
                 Name-&gt;Caption = Trial_Form(// hier sollte das stehen Reg_Name).c_str();
                 Company-&gt;Caption = Trial_Form(// hier sollte das stehen Reg_Company).c_str();
        }
       else
                 FreeLibrary(h);
}
//---------------------------------------------------------------------------
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/729823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/729823</guid><dc:creator><![CDATA[Praetorianer_33]]></dc:creator><pubDate>Tue, 22 Feb 2005 17:59:55 GMT</pubDate></item><item><title><![CDATA[Reply to CharWerte aus Dll lesen on Wed, 23 Feb 2005 02:33:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Eine Funktion kann doch nicht mehrere Returnwerte haben. Entweder du übergibst deine Strings (in der Parameterliste der Funktion) per Referenz (dann kannst du sie neu belegen und erhälst die Werte zurück) oder du gibst eine Struktur zurück, die beide Strings enthält.<br />
Es scheint mir als solltest du mal ein C++ Tutorial zum Theme Funktionen bzw. Variablenübergabe durchlesen. <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>
<p>Ciao</p>
]]></description><link>https://www.c-plusplus.net/forum/post/730205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/730205</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 23 Feb 2005 02:33:02 GMT</pubDate></item></channel></rss>