<?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[Ansteuern einer Dll und füllen einer CGauge]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich nutze für meine Anwendung eine Funktion, die ich in eine .dll ausgelagert habe. Der Aufruf erfolgt aus dem Hauptprogramm nur ein einziges Mal und es wird eine Matrix mit double Werte übergeben.</p>
<p>Das ganze sieht in etwa so aus:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 typedef double** __stdcall TOpt(int a,int b,int c,int d,int e);
 HINSTANCE h=LoadLibrary(&quot;Optimierung.dll&quot;);
 TOpt* optm=(TOpt*)GetProcAddress(h,&quot;_optm&quot;);
 double** opt;
 int a=StrToInt(Edit1-&gt;Text);
 int b=StrToInt(Edit2-&gt;Text);
 int c=StrToInt(Edit3-&gt;Text);
 int d=StrToInt(Edit4-&gt;Text);
 int e=StrToInt(Edit5-&gt;Text);

 opt=optm(a,b,c,d,e);
 ...
 ...
 ...
 FreeLibrary(h);
}
</code></pre>
<p>Wie schaffe ich es denn jetzt, das ich auf dem Hauptformular ein CGauge fülle, entsprechend der Bearbeitungszeit in der .dll?</p>
<p>Im Hauptprogramm kann ich dies ja nicht steuern, da der Befehl nur einmal aufgerufen wird, das Programm in die .dll wandert und nach dem Durchlauf wieder im Hauptprogramm erscheint.</p>
<p>In der .dll wird hauptsächlich mit Schleifen gearbeitet, die Schleifenindizes könnten ja dann für das Füllen der CGauge verwendet werden.</p>
<pre><code class="language-cpp">{
 CGaube-&gt;MaxValue=i*j*k;

 for (i=0;i&lt;Wert1;i++)
 {
  for (j=0;j&lt;Wert2;j++)
  {
   for (k=0;k&lt;i*j+1;k++)
   {...
    ...
    CGauge-&gt;Process++;
   }
   ...
   ...
   CGauge-&gt;Process++;
  }
  ...
  ...
  CGauge-&gt;Process++;
 }

...
... 
}
</code></pre>
<p>Nur leider fällt mir jetzt keine Möglichkeitein wie ich aus der .dll das CGauge im Hauptprogramm ansteuere.</p>
<p>Danke und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190153/ansteuern-einer-dll-und-füllen-einer-cgauge</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 13:03:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190153.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Aug 2007 09:29:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ansteuern einer Dll und füllen einer CGauge on Mon, 20 Aug 2007 09:29:38 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich nutze für meine Anwendung eine Funktion, die ich in eine .dll ausgelagert habe. Der Aufruf erfolgt aus dem Hauptprogramm nur ein einziges Mal und es wird eine Matrix mit double Werte übergeben.</p>
<p>Das ganze sieht in etwa so aus:</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
 typedef double** __stdcall TOpt(int a,int b,int c,int d,int e);
 HINSTANCE h=LoadLibrary(&quot;Optimierung.dll&quot;);
 TOpt* optm=(TOpt*)GetProcAddress(h,&quot;_optm&quot;);
 double** opt;
 int a=StrToInt(Edit1-&gt;Text);
 int b=StrToInt(Edit2-&gt;Text);
 int c=StrToInt(Edit3-&gt;Text);
 int d=StrToInt(Edit4-&gt;Text);
 int e=StrToInt(Edit5-&gt;Text);

 opt=optm(a,b,c,d,e);
 ...
 ...
 ...
 FreeLibrary(h);
}
</code></pre>
<p>Wie schaffe ich es denn jetzt, das ich auf dem Hauptformular ein CGauge fülle, entsprechend der Bearbeitungszeit in der .dll?</p>
<p>Im Hauptprogramm kann ich dies ja nicht steuern, da der Befehl nur einmal aufgerufen wird, das Programm in die .dll wandert und nach dem Durchlauf wieder im Hauptprogramm erscheint.</p>
<p>In der .dll wird hauptsächlich mit Schleifen gearbeitet, die Schleifenindizes könnten ja dann für das Füllen der CGauge verwendet werden.</p>
<pre><code class="language-cpp">{
 CGaube-&gt;MaxValue=i*j*k;

 for (i=0;i&lt;Wert1;i++)
 {
  for (j=0;j&lt;Wert2;j++)
  {
   for (k=0;k&lt;i*j+1;k++)
   {...
    ...
    CGauge-&gt;Process++;
   }
   ...
   ...
   CGauge-&gt;Process++;
  }
  ...
  ...
  CGauge-&gt;Process++;
 }

...
... 
}
</code></pre>
<p>Nur leider fällt mir jetzt keine Möglichkeitein wie ich aus der .dll das CGauge im Hauptprogramm ansteuere.</p>
<p>Danke und liebe Grüße<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348007</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 20 Aug 2007 09:29:38 GMT</pubDate></item><item><title><![CDATA[Reply to Ansteuern einer Dll und füllen einer CGauge on Mon, 20 Aug 2007 09:42:42 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Es gibt zwei Möglichkeiten : Das Gauge als Zeiger an die optm-Funktion übergeben. Da du sicher dein C-Interface Beibehalten willst must du das als void-Zeiger machen und in der Funktion wieder in CGauge zurückcasten. Der Nachteil ist das damit natürlich in der Funktion nur VCL-Gauge behandelt werden kann und die DLL auch die VCL includen muß.<br />
Der eigentliche Weg der die (von mir angenommene) VCL-Unabhängigkeit wahrt ist die Verwendung einer <a href="http://oopweb.com/CPP/Documents/FunctionPointers/Volume/index.html" rel="nofollow">Callback-Methode</a>.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348024</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 20 Aug 2007 09:42:42 GMT</pubDate></item><item><title><![CDATA[Reply to Ansteuern einer Dll und füllen einer CGauge on Mon, 20 Aug 2007 10:22:42 GMT]]></title><description><![CDATA[<p>Danke akari für deine schnelle Antwort.<br />
Leider funktioniert der Link bei mir nicht.</p>
<p>Sind Callback Funktionen WinAPI Funktionen? Wenn ja dann müssten sie ja allgemeingültig sein und ich könnte mir die Syntax auf der msdn Seite durchlesen.</p>
<p>Gruß<br />
Todd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348051</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348051</guid><dc:creator><![CDATA[Todd]]></dc:creator><pubDate>Mon, 20 Aug 2007 10:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Ansteuern einer Dll und füllen einer CGauge on Mon, 20 Aug 2007 10:46:40 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Callbacks werden auch oft in der WinAPI benutzt, zum Beispiel bei CopyFileEx (dort für genau den selben Zweck, eine Fortschrittsnachricht). Die Syntax ist natürlich reines C.<br />
Der Link jedenfalls ist jedenfalls in Ordnung. Natürlich kannst du auch selber die Forums-SuFu und Google nach &quot;function pointer&quot; und &quot;callback&quot; durchsuchen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1348078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1348078</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 20 Aug 2007 10:46:40 GMT</pubDate></item></channel></rss>