<?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[Datenaustausch zwischen Threads geht nicht]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit dem BCB6 habe ich eine kleine Anwendung geschrieben, die Folgendes machen soll:</p>
<p>Nach Betätigung eines Buttons wird die Instanz einer Klasse, die von TThread abgeleitet ist gebildet und gestartet. Innerhalb dieser Klasse wird nun die Instanz einer anderen, ebenfalls von TThread abgeleiteten Klasse gebildet und ebenfalls gestartet.</p>
<p>Diese zweite Instanz schreibt das Ergebnis einer Berechnung in eine globale Variable auf die ich zwar in Thread1 und der OnButton-Methode zugreifen kann, aber sie enthält nicht den erwarteten Wert.</p>
<p>Die globale Variable ist ein char-Pointer.</p>
<p>Was könnte da schief laufen?</p>
<p>TIA Guido</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/121667/datenaustausch-zwischen-threads-geht-nicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 00:02:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/121667.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 26 Sep 2005 12:47:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datenaustausch zwischen Threads geht nicht on Mon, 26 Sep 2005 12:47:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mit dem BCB6 habe ich eine kleine Anwendung geschrieben, die Folgendes machen soll:</p>
<p>Nach Betätigung eines Buttons wird die Instanz einer Klasse, die von TThread abgeleitet ist gebildet und gestartet. Innerhalb dieser Klasse wird nun die Instanz einer anderen, ebenfalls von TThread abgeleiteten Klasse gebildet und ebenfalls gestartet.</p>
<p>Diese zweite Instanz schreibt das Ergebnis einer Berechnung in eine globale Variable auf die ich zwar in Thread1 und der OnButton-Methode zugreifen kann, aber sie enthält nicht den erwarteten Wert.</p>
<p>Die globale Variable ist ein char-Pointer.</p>
<p>Was könnte da schief laufen?</p>
<p>TIA Guido</p>
]]></description><link>https://www.c-plusplus.net/forum/post/880415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/880415</guid><dc:creator><![CDATA[Atlas]]></dc:creator><pubDate>Mon, 26 Sep 2005 12:47:26 GMT</pubDate></item><item><title><![CDATA[Reply to Datenaustausch zwischen Threads geht nicht on Mon, 26 Sep 2005 14:05:18 GMT]]></title><description><![CDATA[<p>hab so etwas ähnliches wie du beschrieben hast in einer meiner Programme. Um dir aber wirklich helfen zu können wäre etwas Code ganz nützlich um sich das wirklich vor Augen führen zu können.</p>
<p>mfg<br />
Tom</p>
]]></description><link>https://www.c-plusplus.net/forum/post/880469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/880469</guid><dc:creator><![CDATA[Tom7]]></dc:creator><pubDate>Mon, 26 Sep 2005 14:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datenaustausch zwischen Threads geht nicht on Tue, 27 Sep 2005 04:43:46 GMT]]></title><description><![CDATA[<p>Atlas schrieb:</p>
<blockquote>
<p>Was könnte da schief laufen?</p>
</blockquote>
<p>DIe Kristallkugeln sind heute leider aus. Allerdings hat meine kurz vor ihrem Ableben noch bekannt gegeben, das DEINE Kristallkugel* durch sehr schwache Benutzung noch tadellos funktionieren sollte. Benutze sie...</p>
<p>-junix</p>
<p><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="😉"
    /> Kristallkugel ist ein okkultes Requisit das normalerweise zum Hellsehen benutzt wird. Allerdings wurde dieser Sprachgebrauch im C++ Forum verwendet um Leute auf ihren Mangelnden Fehlerbeschrieb aufmerksam zu machen.<br />
Es kamen auch schon Fälle vor, wo Entwickler ihren <a href="http://www.junix.ch/bcb/help" rel="nofollow">Debugger</a> und dessen Mittel wie Breakpoints als ausgesprochen wertvolle Kristallkugel zur Fehlerfindung bezeichnet haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/880977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/880977</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Tue, 27 Sep 2005 04:43:46 GMT</pubDate></item><item><title><![CDATA[Reply to Datenaustausch zwischen Threads geht nicht on Tue, 27 Sep 2005 07:32:25 GMT]]></title><description><![CDATA[<p>Hallo Tom, hallo junix,</p>
<p>kurz ein paar Codeschnipsel zur Verdeutlichung meiner Misere:</p>
<pre><code>// irgendwo im Header
struct myResult {
  char* wert1;
  char* wert2;
};

// Meine globale Variable
// Wird in der Klasse instanziiert, die die Threads started
myResult* einErgebnis; 

// Der CTor
__fastcall TmyThread::TmyThread(bool CreateSuspended,
                                AnsiString i_wert1,
                                AnsiString i_wert2)
        : TThread(CreateSuspended)
{
  // wert1 und wert2 sind private Klassenvariablen
  wert1 = i_wert1;
  wert2 = i_wert2;

  einErgebnis-&gt;wert1 = i_wert1.c_str();
  einErgebnis-&gt;wert2 = i_wert2.c_str();
}

// Die Execute-Methode
void __fastcall TmyThread::Execute()
{
  // wert1 und wert2 sind jetzt beide NULL!! 
  AnsiString s1 = wert1;
  AnsiString s2 = wert2;

  while(!Terminated)
  {
    // Irgendeine Berechnung
    einErgebnis-&gt;wert1 = &quot;erg1&quot;;
    einErgebnis-&gt;wert2 = &quot;erg2&quot;;
    // Diese Werte liegen jetzt in 'einErgebnis' vor
    // Ein Auslesen der Ergebnisse in der den Thread aufrufenden Klasse liefert   
    // hingegen unsinnige Werte 
  }
}
</code></pre>
<p>Dem CTor des Thread werden Parameter mitgegeben, die er in seinen privaten Variablen abspeichert. Wieso enthalten diese Variablen in der Execute-Methode keine Werte mehr? Und wieso steht in meiner 'einErgebnis'-Struktur nach Beendigung des Threads nicht mehr das, was ich zuvor hineingeschrieben habe?</p>
<p>Kann man alles schön im Debug-Mode verfolgen <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>Vermutlich habe ich da etwas Prinzipielles übersehen/nicht verstanden...vielleicht habt ihr noch einen Tipp.</p>
<p>TIA Guido</p>
]]></description><link>https://www.c-plusplus.net/forum/post/881027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881027</guid><dc:creator><![CDATA[Atlas]]></dc:creator><pubDate>Tue, 27 Sep 2005 07:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to Datenaustausch zwischen Threads geht nicht on Tue, 27 Sep 2005 07:45:10 GMT]]></title><description><![CDATA[<p>Mit AnsiString::c_str() erhälst Du nur einen <em>temporär</em> gültigen Zeiger. Wenn Du diesen später weiter verwenden willst, mußt Du das char-Array in ein neues kopieren - oder gleich AnsiString verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/881030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/881030</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 27 Sep 2005 07:45:10 GMT</pubDate></item></channel></rss>