<?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[TThread einbinden - Fehler E2268 Aufruf der undefinierten Funktion]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe seit Stunden ein Problem und verzweifel bald:</p>
<p>Mit Neu lege ich zwei neue Thread-Objekte an; eines nenne<br />
ich ThreadClients und das andere ThreadSenden.</p>
<p>Das erste klappt wunderbar; beim zweiten kommt immer der E2268 Fehler.<br />
**Main_NH3.cpp(4115): Analyse von: void _fastcall TForm1::frm1_tmrStartTimer(TObject <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="😉"
    /><br />
[C++ Fehler] Main_NH3.cpp(4275): E2268 Aufruf der undefinierten Funktion 'ThreadSenden'<br />
Vollständiger Parser-Kontext<br />
Main_NH3.cpp(4269): Analyse von: void _fastcall TForm1::frm1_tmrThreadATimer(TObject <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="😉"
    /><br />
**<br />
Auch aus dem Projekt entfernen und neu einbinden bringt kein Erfolg!?</p>
<p>Die Threads starte ich jeweils separat in einem Timer.</p>
<pre><code class="language-cpp">// TIMER T
void __fastcall TForm1::frm1_tmrThreadCTimer(TObject *Sender)
{try {                                                                          // Fehlerroutine Start

 Form1-&gt;frm1_tmrThreadC-&gt;Enabled=false;                                         // und Timer stoppen
                                                                                // CLIENTEN ZÄHLEN
 ThreadClients(false);                                                          // Thread starten (noch nicht starten=true)
                                                                                // AUSGANG
 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TForm1::frm1_tmrThreadCTimer()&quot;, MB_OK); }  // Fehler anzeigen
}
void __fastcall TForm1::frm1_tmrThreadATimer(TObject *Sender)
{try {                                                                          // Fehlerroutine Start

 Form1-&gt;frm1_tmrThreadA-&gt;Enabled=false;                                         // und Timer stoppen
                                                                                // BENACHRICHTIGEN ABSETZEN
 ThreadSenden(false);                                                           // Thread starten (noch nicht starten=true)

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TForm1::frm1_tmrThreadATimer()&quot;, MB_OK); }  // Fehler anzeigen
}
</code></pre>
<p>Habe alles mögliche probiert und komme nicht mehr weiter...</p>
<p>Hier mal der Code von ThreadSenden.cpp:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;inifiles.hpp&gt;                                                         // INI Files
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Main_NH3.h&quot;                                                           // Form1
#include &quot;Thread_Senden.h&quot;                                                      // Thread 2
#pragma package(smart_init)

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

__fastcall ThreadSenden::ThreadSenden(bool CreateSuspended) : TThread(CreateSuspended)
{
 switch(Form1-&gt;iThPrioA) {                                                      // Thread wie ausführen...
 case 0:  Priority=tpIdle;         break;                                       // Prio nur wenn System im Leerlauf ist
 case 1:  Priority=tpLowest;       break;                                       // Prio 2 Stufen unter Normal
 case 2:  Priority=tpLower;        break;                                       // Prio 1 Stufe  unter Normal
 case 3:  Priority=tpNormal;       break;                                       // Prio ist Normal
 case 4:  Priority=tpHigher;       break;                                       // Prio 1 Stufe  über Normal
 case 5:  Priority=tpHighest;      break;                                       // Prio 2 Stufen über Normal
 case 6:  Priority=tpTimeCritical; break;                                       // Prio Höchste
 default: Priority=tpIdle;         break;                                       // Prio nur wenn System im Leerlauf ist
 }                                                                              // endswitch(iPrio

 //FatalException=TObject...;                                                     // bei Fehler autom. freigeben
 //OnTerminate=ThreadDelete;                                                      // und freigeben starten
 FreeOnTerminate=true;                                                          // nach Beendigung autom. freigeben
}

//---------------------------------------------------------------------------
//--- THREADS ---
//---------------------------------------------------------------------------
void __fastcall ThreadSenden::Execute()
{try {                                                                          // Fehlerroutine Start

 while (!ThreadSenden::Terminated) {                                            // abarbeiten bis Abbruchbefehl kommt

  Synchronize(Versenden);                                                       // und synchronisiert   los
  //Versenden();                                                                // nicht synchronisiert los

  if(ThreadSenden::Terminated==true) { break; }                                 // Abbruch raus

  break;                                                                        // und fertig
 }                                                                              // ende while()

 //-----------------------------------------------------------------------------// THREAD ENDE
 Form1-&gt;frm1_tmrThreadA-&gt;Enabled=Terminated==false;                             // und Timer wieder starten (falls nicht Abbruch)

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::Execute()&quot;, MB_OK); }  // Fehler anzeigen
}

//---------------------------------------------------------------------------
//--- FUNKTIONEN IM THREAD ---
//---------------------------------------------------------------------------

// FUNKTION D
AnsiString DatenPipe(int p1, int p2, AnsiString pt1, AnsiString pt2)
{try {                                                                          // Fehlerroutine Start
 Integer i2,i3; AnsiString z1,z2;                                               // Vars definieren

 if(pt1.Length()==0) { pt1=&quot;||&quot;; }                                              // Stringvorgabe korrigieren
 z1=pt1;                                                                        // und übergeben

 switch(p1) {                                                                   // was machen?
 case 1:                                                                        // AUSLESEN STRING
 case 3:                                                                        // AUSLESEN INTEGER
  for(int i1=1;i1&lt;=p2;i1++) {                                                   // x. Pipe suchen
   i2=z1.AnsiPos(&quot;|&quot;);                                                          // Pipe suchen
   if(i2==0) { z1=z1+&quot;|&quot;; i2=z1.AnsiPos(&quot;|&quot;); }                                 // keines gefunden, neues Pipe anhängen
   z1=z1.SubString(i2+1,9999);                                                  // String ab Pipe+1 abschneiden
  }                                                                             // ende for(int i2)

  i2=z1.AnsiPos(&quot;|&quot;);                                                           // noch nächstes Pipe suchen
  z1=z1.SubString( 1,i2-1);                                                     // und bis nächstes Pipe den Inhalt ausschneiden
  if(pt2==&quot;!!&quot;) { z1=z1.Trim(); }                                               // ohne Leerstellen zurückgeben

  if(p1==3 &amp;&amp; z1.Length()==0) { z1=&quot;0&quot;; }                                       // Rückgabe für Integer (leerer String gibt Fehlermeldung!)
  return z1;                                                                    // und Inhalt zurückgeben
 case 2:                                                                        // SCHREIBEN
 case 4:                                                                        // SCHREIBEN MIT FEHLERHINWEIS
  z2=&quot;&quot;;                                                                        // String vorbereitend löschen
  for(int i1=1;i1&lt;=p2;i1++) {                                                   // x. Pipe suchen
   i2=z1.AnsiPos(&quot;|&quot;); if(i2==0) { z1=&quot;|&quot;; i2=1; }                              // Pipe suchen und ggfs. anhängen
   z2=z2+z1.SubString(1, i2);                                                   // und Rest merken
   z1=z1.SubString(i2+1,9999);                                                  // String ab Pipe+1 abschneiden
  }                                                                             // ende for(int i2)

  i2=z1.AnsiPos(&quot;|&quot;);                                                           // noch nächstes Pipe suchen
  z1=z2+pt2+z1.SubString(i2, pt1.Length());                                     // und pt2 einsetzen und ab nächstem Pipe anhängen
  return z1;                                                                    // und Inhalt zurückgeben
 }                                                                              // ende switch(p1

 return &quot;&quot;;                                                                     // Standardrückgabe

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::DatenPipe()&quot;, MB_OK); return &quot;&quot;; }  // Fehler anzeigen
}

// FUNKTION V
void __fastcall ThreadSenden::Versenden()                                         // MESSAGE-FUNKTIONEN
{Form1-&gt;frm1_btn8_AktuellClick(0);                                              // und los
}

// FUNKTION Z
AnsiString ZeitStempel(int p1,AnsiString pt1)
{try {                                                                          // Fehlerroutine Start
 AnsiString z1;                                                                 // Vars definieren
 TDateTime DateTime=Now();                                                      // Datum und Uhrzeit speichern

 switch(p1) {                                                                   // was zurückgeben
 case 0:                                                                        // KOMPLETTE ZEIT
 case 1: z1=FormatDateTime(&quot;dd.mm.yyyy, hh:nn:ss&quot;    ,DateTime); break;         // KOMPLETTE ZEIT
 case 2: z1=FormatDateTime(&quot;dd.mm.yyyy&quot;              ,DateTime); break;         // NUR DATUM;
 case 3: z1=FormatDateTime(&quot;hh:nn:ss&quot;                ,DateTime); break;         // NUR UHRZEIT;
 case 4: z1=FormatDateTime(&quot;dd.mm.yyyy, hh:nn&quot;       ,DateTime); break;         // KURZFORM
 case 5: z1=FormatDateTime(&quot;yyyy-mm-dd&quot;              ,DateTime); break;         // NUR DATUM FÜR DATEI;
 case 6: z1=FormatDateTime(&quot;dd.mm.yyyy hh:nn:ss&quot;     ,DateTime); break;         // KOMPLETTE ZEIT OHNE KOMMA
 case 7: z1=FormatDateTime(&quot;yyyy-mm-dd hh-nn-ss&quot;     ,DateTime); break;         // LOGBUCHSTEMPEL;
 case 8: z1=FormatDateTime(&quot;yyyy-mm&quot;                 ,DateTime); break;         // NUR DATUM FÜR DATEI;
 case 9: z1=FormatDateTime(&quot;yyyy-mm-dd hh-nn-ss-zzz&quot; ,DateTime); break;         // LOGBUCHSTEMPEL MIT MILLISEKUNDEN;
 }                                                                              // ende p1

 return z1+&quot;  &quot;;                                                                // und Rückgabe der Zeit

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::ZeitStempel()&quot;, MB_OK); return &quot;&quot;; }  // Fehler anzeigen
}
</code></pre>
<p>und der zugehörige Header:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Thread_SendenH
#define Thread_SendenH

//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;

 AnsiString DatenPipe(int p1, int p2, AnsiString pt1, AnsiString pt2);          // Funktion definieren
 AnsiString ZeitStempel(int p1, AnsiString pt1);                                // Funktion definieren

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

class ThreadSenden : public TThread
{
private:
protected:
        void __fastcall Execute();
        void __fastcall Versenden();                                            // Funktion deklarieren

public:
        __fastcall ThreadSenden(bool CreateSuspended);
};

//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Falls die Threads inhaltlich Fehler haben oder umständlich sind,<br />
dann bitte ich um Nachsehen. Das Thema Threads ist für mich ziemlich neu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Danke für jeden Tipp.</p>
<p>Gruss Stefan Scholz</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/186140/tthread-einbinden-fehler-e2268-aufruf-der-undefinierten-funktion</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 12:47:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/186140.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Jul 2007 12:56:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TThread einbinden - Fehler E2268 Aufruf der undefinierten Funktion on Thu, 05 Jul 2007 12:56:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe seit Stunden ein Problem und verzweifel bald:</p>
<p>Mit Neu lege ich zwei neue Thread-Objekte an; eines nenne<br />
ich ThreadClients und das andere ThreadSenden.</p>
<p>Das erste klappt wunderbar; beim zweiten kommt immer der E2268 Fehler.<br />
**Main_NH3.cpp(4115): Analyse von: void _fastcall TForm1::frm1_tmrStartTimer(TObject <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="😉"
    /><br />
[C++ Fehler] Main_NH3.cpp(4275): E2268 Aufruf der undefinierten Funktion 'ThreadSenden'<br />
Vollständiger Parser-Kontext<br />
Main_NH3.cpp(4269): Analyse von: void _fastcall TForm1::frm1_tmrThreadATimer(TObject <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="😉"
    /><br />
**<br />
Auch aus dem Projekt entfernen und neu einbinden bringt kein Erfolg!?</p>
<p>Die Threads starte ich jeweils separat in einem Timer.</p>
<pre><code class="language-cpp">// TIMER T
void __fastcall TForm1::frm1_tmrThreadCTimer(TObject *Sender)
{try {                                                                          // Fehlerroutine Start

 Form1-&gt;frm1_tmrThreadC-&gt;Enabled=false;                                         // und Timer stoppen
                                                                                // CLIENTEN ZÄHLEN
 ThreadClients(false);                                                          // Thread starten (noch nicht starten=true)
                                                                                // AUSGANG
 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TForm1::frm1_tmrThreadCTimer()&quot;, MB_OK); }  // Fehler anzeigen
}
void __fastcall TForm1::frm1_tmrThreadATimer(TObject *Sender)
{try {                                                                          // Fehlerroutine Start

 Form1-&gt;frm1_tmrThreadA-&gt;Enabled=false;                                         // und Timer stoppen
                                                                                // BENACHRICHTIGEN ABSETZEN
 ThreadSenden(false);                                                           // Thread starten (noch nicht starten=true)

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TForm1::frm1_tmrThreadATimer()&quot;, MB_OK); }  // Fehler anzeigen
}
</code></pre>
<p>Habe alles mögliche probiert und komme nicht mehr weiter...</p>
<p>Hier mal der Code von ThreadSenden.cpp:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#include &lt;inifiles.hpp&gt;                                                         // INI Files
#include &lt;vcl.h&gt;
#pragma hdrstop

#include &quot;Main_NH3.h&quot;                                                           // Form1
#include &quot;Thread_Senden.h&quot;                                                      // Thread 2
#pragma package(smart_init)

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

__fastcall ThreadSenden::ThreadSenden(bool CreateSuspended) : TThread(CreateSuspended)
{
 switch(Form1-&gt;iThPrioA) {                                                      // Thread wie ausführen...
 case 0:  Priority=tpIdle;         break;                                       // Prio nur wenn System im Leerlauf ist
 case 1:  Priority=tpLowest;       break;                                       // Prio 2 Stufen unter Normal
 case 2:  Priority=tpLower;        break;                                       // Prio 1 Stufe  unter Normal
 case 3:  Priority=tpNormal;       break;                                       // Prio ist Normal
 case 4:  Priority=tpHigher;       break;                                       // Prio 1 Stufe  über Normal
 case 5:  Priority=tpHighest;      break;                                       // Prio 2 Stufen über Normal
 case 6:  Priority=tpTimeCritical; break;                                       // Prio Höchste
 default: Priority=tpIdle;         break;                                       // Prio nur wenn System im Leerlauf ist
 }                                                                              // endswitch(iPrio

 //FatalException=TObject...;                                                     // bei Fehler autom. freigeben
 //OnTerminate=ThreadDelete;                                                      // und freigeben starten
 FreeOnTerminate=true;                                                          // nach Beendigung autom. freigeben
}

//---------------------------------------------------------------------------
//--- THREADS ---
//---------------------------------------------------------------------------
void __fastcall ThreadSenden::Execute()
{try {                                                                          // Fehlerroutine Start

 while (!ThreadSenden::Terminated) {                                            // abarbeiten bis Abbruchbefehl kommt

  Synchronize(Versenden);                                                       // und synchronisiert   los
  //Versenden();                                                                // nicht synchronisiert los

  if(ThreadSenden::Terminated==true) { break; }                                 // Abbruch raus

  break;                                                                        // und fertig
 }                                                                              // ende while()

 //-----------------------------------------------------------------------------// THREAD ENDE
 Form1-&gt;frm1_tmrThreadA-&gt;Enabled=Terminated==false;                             // und Timer wieder starten (falls nicht Abbruch)

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::Execute()&quot;, MB_OK); }  // Fehler anzeigen
}

//---------------------------------------------------------------------------
//--- FUNKTIONEN IM THREAD ---
//---------------------------------------------------------------------------

// FUNKTION D
AnsiString DatenPipe(int p1, int p2, AnsiString pt1, AnsiString pt2)
{try {                                                                          // Fehlerroutine Start
 Integer i2,i3; AnsiString z1,z2;                                               // Vars definieren

 if(pt1.Length()==0) { pt1=&quot;||&quot;; }                                              // Stringvorgabe korrigieren
 z1=pt1;                                                                        // und übergeben

 switch(p1) {                                                                   // was machen?
 case 1:                                                                        // AUSLESEN STRING
 case 3:                                                                        // AUSLESEN INTEGER
  for(int i1=1;i1&lt;=p2;i1++) {                                                   // x. Pipe suchen
   i2=z1.AnsiPos(&quot;|&quot;);                                                          // Pipe suchen
   if(i2==0) { z1=z1+&quot;|&quot;; i2=z1.AnsiPos(&quot;|&quot;); }                                 // keines gefunden, neues Pipe anhängen
   z1=z1.SubString(i2+1,9999);                                                  // String ab Pipe+1 abschneiden
  }                                                                             // ende for(int i2)

  i2=z1.AnsiPos(&quot;|&quot;);                                                           // noch nächstes Pipe suchen
  z1=z1.SubString( 1,i2-1);                                                     // und bis nächstes Pipe den Inhalt ausschneiden
  if(pt2==&quot;!!&quot;) { z1=z1.Trim(); }                                               // ohne Leerstellen zurückgeben

  if(p1==3 &amp;&amp; z1.Length()==0) { z1=&quot;0&quot;; }                                       // Rückgabe für Integer (leerer String gibt Fehlermeldung!)
  return z1;                                                                    // und Inhalt zurückgeben
 case 2:                                                                        // SCHREIBEN
 case 4:                                                                        // SCHREIBEN MIT FEHLERHINWEIS
  z2=&quot;&quot;;                                                                        // String vorbereitend löschen
  for(int i1=1;i1&lt;=p2;i1++) {                                                   // x. Pipe suchen
   i2=z1.AnsiPos(&quot;|&quot;); if(i2==0) { z1=&quot;|&quot;; i2=1; }                              // Pipe suchen und ggfs. anhängen
   z2=z2+z1.SubString(1, i2);                                                   // und Rest merken
   z1=z1.SubString(i2+1,9999);                                                  // String ab Pipe+1 abschneiden
  }                                                                             // ende for(int i2)

  i2=z1.AnsiPos(&quot;|&quot;);                                                           // noch nächstes Pipe suchen
  z1=z2+pt2+z1.SubString(i2, pt1.Length());                                     // und pt2 einsetzen und ab nächstem Pipe anhängen
  return z1;                                                                    // und Inhalt zurückgeben
 }                                                                              // ende switch(p1

 return &quot;&quot;;                                                                     // Standardrückgabe

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::DatenPipe()&quot;, MB_OK); return &quot;&quot;; }  // Fehler anzeigen
}

// FUNKTION V
void __fastcall ThreadSenden::Versenden()                                         // MESSAGE-FUNKTIONEN
{Form1-&gt;frm1_btn8_AktuellClick(0);                                              // und los
}

// FUNKTION Z
AnsiString ZeitStempel(int p1,AnsiString pt1)
{try {                                                                          // Fehlerroutine Start
 AnsiString z1;                                                                 // Vars definieren
 TDateTime DateTime=Now();                                                      // Datum und Uhrzeit speichern

 switch(p1) {                                                                   // was zurückgeben
 case 0:                                                                        // KOMPLETTE ZEIT
 case 1: z1=FormatDateTime(&quot;dd.mm.yyyy, hh:nn:ss&quot;    ,DateTime); break;         // KOMPLETTE ZEIT
 case 2: z1=FormatDateTime(&quot;dd.mm.yyyy&quot;              ,DateTime); break;         // NUR DATUM;
 case 3: z1=FormatDateTime(&quot;hh:nn:ss&quot;                ,DateTime); break;         // NUR UHRZEIT;
 case 4: z1=FormatDateTime(&quot;dd.mm.yyyy, hh:nn&quot;       ,DateTime); break;         // KURZFORM
 case 5: z1=FormatDateTime(&quot;yyyy-mm-dd&quot;              ,DateTime); break;         // NUR DATUM FÜR DATEI;
 case 6: z1=FormatDateTime(&quot;dd.mm.yyyy hh:nn:ss&quot;     ,DateTime); break;         // KOMPLETTE ZEIT OHNE KOMMA
 case 7: z1=FormatDateTime(&quot;yyyy-mm-dd hh-nn-ss&quot;     ,DateTime); break;         // LOGBUCHSTEMPEL;
 case 8: z1=FormatDateTime(&quot;yyyy-mm&quot;                 ,DateTime); break;         // NUR DATUM FÜR DATEI;
 case 9: z1=FormatDateTime(&quot;yyyy-mm-dd hh-nn-ss-zzz&quot; ,DateTime); break;         // LOGBUCHSTEMPEL MIT MILLISEKUNDEN;
 }                                                                              // ende p1

 return z1+&quot;  &quot;;                                                                // und Rückgabe der Zeit

 } catch(Exception&amp; e) { MessageBox(NULL, e.Message.c_str(), &quot;TThreadSenden::ZeitStempel()&quot;, MB_OK); return &quot;&quot;; }  // Fehler anzeigen
}
</code></pre>
<p>und der zugehörige Header:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------

#ifndef Thread_SendenH
#define Thread_SendenH

//---------------------------------------------------------------------------
#include &lt;Classes.hpp&gt;

 AnsiString DatenPipe(int p1, int p2, AnsiString pt1, AnsiString pt2);          // Funktion definieren
 AnsiString ZeitStempel(int p1, AnsiString pt1);                                // Funktion definieren

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

class ThreadSenden : public TThread
{
private:
protected:
        void __fastcall Execute();
        void __fastcall Versenden();                                            // Funktion deklarieren

public:
        __fastcall ThreadSenden(bool CreateSuspended);
};

//---------------------------------------------------------------------------
#endif
</code></pre>
<p>Falls die Threads inhaltlich Fehler haben oder umständlich sind,<br />
dann bitte ich um Nachsehen. Das Thema Threads ist für mich ziemlich neu <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Danke für jeden Tipp.</p>
<p>Gruss Stefan Scholz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318916</guid><dc:creator><![CDATA[Stefan71242]]></dc:creator><pubDate>Thu, 05 Jul 2007 12:56:54 GMT</pubDate></item><item><title><![CDATA[Reply to TThread einbinden - Fehler E2268 Aufruf der undefinierten Funktion on Thu, 05 Jul 2007 14:00:27 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Der Fehler selber besagt das du wohl ein include auf die Unit mit ThreadSenden vergessen hast.<br />
Allerdings wird das nicht alle Probleme beheben, denn du hast ein Klasse ThreadSendern, keine Funktion. Du must erst eine Instanz der Klasse erstellen und dann kannst du für die Instanz eine Methode aufrufen.<br />
Bitte schau dir erstmal ein Tutorial über <a href="http://bcb-tutorial.c-plusplus.net/Thread/index.html" rel="nofollow">Threads</a> an. Am besten auch eins über <a href="http://tutorial.schornboeck.net/oop2.htm" rel="nofollow">OOP</a>.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318962</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 05 Jul 2007 14:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to TThread einbinden - Fehler E2268 Aufruf der undefinierten Funktion on Fri, 06 Jul 2007 07:53:03 GMT]]></title><description><![CDATA[<p>Hallo Akari</p>
<p>ich Esel hatte den Include in meiner Main.h vergessen und einfach<br />
nicht dran gedacht, weil ich dachte er würde es beim Einbinden als<br />
neues Object automatisch machen (der erste Thread war von früher<br />
noch included; daher lief der) <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Danke für den Tip;<br />
Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1319417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1319417</guid><dc:creator><![CDATA[Stefan71242]]></dc:creator><pubDate>Fri, 06 Jul 2007 07:53:03 GMT</pubDate></item></channel></rss>